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