今天使用STM8的硬件SPI来控制NRF24L01,结果自检能通过,但是数据包发送总是错误。
搞了一下午,终于发现了问题的原因。
NRF24L01的CSN脚是用来控制SPI的传输使能。这个脚不能被直接接地,否则模块不工作。每次单片机跟NRF24L01通讯时,需要先拉低这个脚,通讯完成后再拉高。由于是硬件驱动,常常是SPI没有通讯完成,CSN脚就被拉高了。导致数据丢失。所有在CSN脚拉高之前需要先判断SPI是否空闲。
测试时还发现,如果SPI是256分频,即使判断SPI是否空闲,再拉高CSN脚,通讯也不成功。所以时钟频率不能太慢。
今天使用STM8的硬件SPI来控制NRF24L01,结果自检能通过,但是数据包发送总是错误。
搞了一下午,终于发现了问题的原因。
NRF24L01的CSN脚是用来控制SPI的传输使能。这个脚不能被直接接地,否则模块不工作。每次单片机跟NRF24L01通讯时,需要先拉低这个脚,通讯完成后再拉高。由于是硬件驱动,常常是SPI没有通讯完成,CSN脚就被拉高了。导致数据丢失。所有在CSN脚拉高之前需要先判断SPI是否空闲。
测试时还发现,如果SPI是256分频,即使判断SPI是否空闲,再拉高CSN脚,通讯也不成功。所以时钟频率不能太慢。
举报