printf()
可以用于UART数据输出,SPI数据如何?我重写了fputc()
,使用hal_spi_transmite()
,数据会通过SPI打印吗?
int fputc(int ch, FILE *f)
{
LoRa_transmit(&myLoRa, &send_data[i], 128, 500);
return ch;
}
printf可以用于uart数据输出,SPI数据如何?
我不知道LoRa_transmit()
到底做什么,但这个函数中要打印的数据是int ch
,而不是send_data[i]
:
int fputc(int ch, FILE *f)
{
LoRa_transmit(&myLoRa, &ch, 128, 500);
return ch;
}
数据会通过spi打印吗?
它会起作用,但不是你所期望的(我想(,因为一些细节:
- SPI通信总是涉及一个主设备和至少一个从设备。角色无法更改,因为只有主设备可以控制芯片选择引脚
- SPI协议通常包括在向从设备发送任何数据之前发送控制命令
所以将发生的是只有主设备可以使用";printf(("方法,并且只有当从设备期望像输入流一样的数据时,它才会起作用。
假设您调用printf("Hello SPI");
,主设备将开始传输(CS和时钟(,发送字符串的第一个字节,关闭传输并重复这些步骤,直到到达字符串的末尾。