前一段时间,使用C8051F930单片机的SPI时遇到一个问题,通过SPI访问外部一个RF芯片时,读取的数据都是错误的。而使用的SP子程序是以前程序移植过来的,以前使用一直是正常的。
仔细检查,并和参考例程对比,最后发现是SPI初始化的问题。MOSI的端口输出使用了默认设置,是open-drain状态,将它改为push-pull模式,SPI通信就正常了。因为SPI在以前的芯片上工作正常,一直没有发现这个问题。估计以前的芯片内部有弱上拉,所以数据发送正常,而现在的外部芯片在 MOSI 端口上没有弱上拉,就造成了数据读取错误。
用户1625932 2014-7-30 16:31