Arduino Uno SPI传输

Arduino Uno SPI传输,arduino,arduino-uno,spi,Arduino,Arduino Uno,Spi,我需要完成的任务如下: 我有一个模拟/数字转换器,它发出10位信号。该位信号需要使用SPI协议传输到Arduino Uno。因为SPI协议使用16位模式,所以我需要扩展传入信号。然后,从机Arduino需要将传输的数字输出为十进制数字 对于我的任务,我将使用另一个Arduino Uno设置作为主控来模拟ADC,但不幸的是,当时我只有一个Arduino,因此无法测试我的代码。此外,我真的不知道如何将10位信号“扩展”为16位信号 Arduino大师的代码 #include <SPI.h>

我需要完成的任务如下:

我有一个模拟/数字转换器,它发出10位信号。该位信号需要使用SPI协议传输到Arduino Uno。因为SPI协议使用16位模式,所以我需要扩展传入信号。然后,从机Arduino需要将传输的数字输出为十进制数字

对于我的任务,我将使用另一个Arduino Uno设置作为主控来模拟ADC,但不幸的是,当时我只有一个Arduino,因此无法测试我的代码。此外,我真的不知道如何将10位信号“扩展”为16位信号

Arduino大师的代码

#include <SPI.h>
#define SS 10
#define MOSI 11

void setup() {

  pinMode(SS, OUTPUT);
  pinMode(MOSI, OUTPUT);
  SPI.beginTransaction(SPISettings(62500, LSBFIRST, SPI_MODE0));
}

void loop() {

  byte x=0000001101;
  byte y=0011111111;

  digitalWrite(SS,LOW);
  SPI.transfer(x,y);
  digitalWrite(SS,HIGH);

  delay(1000);
}
#包括
#定义SS10
#定义MOSI11
无效设置(){
pinMode(SS,输出);
pinMode(MOSI,输出);
SPI.beginTransaction(SPISettings(62500,LSBFIRST,SPI_MODE0));
}
void循环(){
字节x=0000001101;
字节y=0011111111;
数字写入(SS,低电平);
SPI.转移(x,y);
数字写入(SS,高);
延迟(1000);
}
阿杜伊诺奴隶的代码

#include <SPI.h>
#define SS 10
#define MOSI 11

void setup() {

  pinMode(SS, INPUT);
  pinMode(MOSI, INPUT);

}

void loop() {
  byte x=SPDR;
  byte y=SPDR;
  printf(x,DEC);
  printf(y,DEC);

  delay(1000);
}
#包括
#定义SS10
#定义MOSI11
无效设置(){
pinMode(SS,输入);
引脚模式(MOSI,输入);
}
void循环(){
字节x=SPDR;
字节y=SPDR;
printf(x,12月);
printf(是,12月);
延迟(1000);
}
第一期:

字节x=0000001101; 字节y=0011111111

上面这些看起来像二进制数,但实际上它们是十进制数1101(一千一百零一)和111111(一千一百万左右)。这种分配毫无意义。两者都将溢出字节

让我们假设您确实以某种方式将从ADC接收到的值放入两个字节的值中,y中为8个较年轻的位,x中为2个较高的位。因此:


unsigned int z=(x请以纯文本形式发布代码。