如何使用printf在stm32中打印spi数据



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打印吗?

它会起作用,但不是你所期望的(我想(,因为一些细节:

  1. SPI通信总是涉及一个主设备和至少一个从设备。角色无法更改,因为只有主设备可以控制芯片选择引脚
  2. SPI协议通常包括在向从设备发送任何数据之前发送控制命令

所以将发生的是只有主设备可以使用";printf(("方法,并且只有当从设备期望像输入流一样的数据时,它才会起作用。

假设您调用printf("Hello SPI");,主设备将开始传输(CS和时钟(,发送字符串的第一个字节,关闭传输并重复这些步骤,直到到达字符串的末尾。

最新更新