在SPI中,SPDR寄存器是8位的,但如果你要发送16位的数字,可以使用两次连续的SPI传输来发送该数字的高8位和低8位。
下面是一个示例代码,演示如何通过SPI发送16位的数字:
#include
void setup() {
SPI.begin(); // 初始化SPI
Serial.begin(9600); // 初始化串口
}
void loop() {
unsigned int number = 12345; // 要发送的16位数字
unsigned char highByte = (number >> 8) & 0xFF; // 获取高8位
unsigned char lowByte = number & 0xFF; // 获取低8位
// 发送高8位
SPI.transfer(highByte);
// 发送低8位
SPI.transfer(lowByte);
Serial.println("Number sent via SPI: " + String(number));
delay(1000);
}
在上面的代码中,我们首先使用右移操作符和按位与操作符来获取数字的高8位和低8位。然后,我们使用SPI.transfer()函数两次连续地发送这两个字节。
请注意,在发送之前,你需要在setup()函数中调用SPI.begin()来初始化SPI,并在loop()函数中使用SPI.transfer()来发送数据。
希望这可以帮助到你!