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://www.qfv8.com/) Powered by Discuz! X3