【发布时间】:2014-05-11 06:50:00
【问题描述】:
我正在尝试在我的 STM32F0 上环回 SPI 总线(使用发现板,MISO 引脚连接到 MOSI 引脚)。
我正在关注教程Discovering the STM32 Microcontroller,(2014 年 1 月 18 日版),练习 6.1:SPILoopback。
STM32配置为主。
为了向 MOSI 引脚发送一个字节,作者写道:
SPI_I2S_SendData (SPIx, *tbuf++);
在哪里:
- SPIx是我要发送数据的SPI总线
- tbuf 是我想在公共汽车上发送的 uint8(换句话说,一个 unsigned char ...)
为了从 MISO 引脚接收这个字节,他写道:
while (SPI_I2S_GetFlagStatus (SPIx, SPI_I2S_FLAG_RXNE) == RESET);
if (rbuf)
{
*rbuf++ = SPI_I2S_ReceiveData(SPIx);
...
...
标志 SPI_I2S_FLAG_RXNE 应该是 SET 因为我将数据发送到 MOSI 引脚,并且因为 MOSI 引脚已连接到 MISO 引脚。
我的问题是:
我永远不会退出 while 循环(SPI_I2S_FLAG_RXNE 永远不会 SET,即使我查看调试器也是如此。
(我看到 CLK 和 MOSI 在我的逻辑分析仪上是活跃的,所以我确信从电气角度来看我的字节已经消失了。)
就像STM32从来没有收到过字节,即使MISO引脚连接在MOSI引脚上......
为什么?
【问题讨论】: