Discuz! Board
标题:
SPI 通信异常!
[打印本页]
作者:
林木
时间:
2014-7-1 21:11
标题:
SPI 通信异常!
本帖最后由 林木 于 2014-7-1 21:21 编辑
我在用SPI 收发数据的时候,经常遇到无法产生 EVENT,导致程序死在 while, 过不去的情况,不知道有没有人知道是怎么回事呢,还望不吝赐教!SPI 引脚设置,和初始化都无异常,已使能.
uint8_t SPI1_SendByte(unsigned char cmd)
{
uint8_t rev = 0;
NRF_SPI1->TXD = (uint32_t)Data ;
while (NRF_SPI1->EVENTS_READY == 0)
{
//do noting
};
NRF_SPI1->EVENTS_READY = 0U ;
rev = (uint8_t) NRF_SPI1->RXD;
return rev;
}
作者:
MrYan
时间:
2014-7-5 09:47
首先,如果你的程序仅仅是用于测试,或者学习,可以这样子写,如果是制作成产品,最好不要陷入无限循环,比如可以在循环里面加入一个时间判断.....至于为啥出现这个问题,既然有时候可以产生,有时候不可以,你看是不是电路问题,或许配置也有点问题,这个很难说...........
作者:
林木
时间:
2014-7-23 10:25
MrYan 发表于 2014-7-5 09:47
首先,如果你的程序仅仅是用于测试,或者学习,可以这样子写,如果是制作成产品,最好不要陷入无限循环,比 ...
嗯,谢谢你的指点,我会在循环条件里加个循环次数限制,一旦达到循环次数则返回 Timeout 错误信息。
现已查明原因,确实是电路的原因:SCK 引脚被拉高了。导致无法正常产生 clock 信号,于是 TXD 寄存器中的数据无法移位出去,也就无法产生 Event.
欢迎光临 Discuz! Board (http://qfv8.com/)
Powered by Discuz! X3