最近胶囊内窥镜项目中用到了业界常用的无线收发模块,即恩智浦公司nRF系列无线收发模块,该模块当前有好几种选择,比如nRF24L01只有无线收发模块,需要外部MCU进行驱动及数据收发,还有nRF24LE1自带单片机内核,即单片机集成在收发模块内。另外还有nRF24xx+USB模块,这种模块使用起来更方便,数据收发后直接跟上位机通信。nRF系列常用模块有nRF24L01、nRF24LE1,当前项目架构是内部胶囊使用的是nRF24LE1无线模块,而外部接收仪(fpga做主控)使用的是nRF24L01模块。这两种无线模块的寄存器配置完全兼容。
下面针对nRF24L01的驱动及数据收发的FPGA实现进行总结。
首先本人之前从未用过nRF2401,因此先看起nRF2401的数据手册。英文手册的特点是内容详实,想查的内容手册里肯定全有,当然也有特殊情况,比如在调试OV公司的相机模块时,OV公司的datasheet真的是shit,反复查找资料结合中文资料以及调试推断才搞清楚出图的几个最重要寄存器的配置。据说咨询OV的FAE需要付费。
闲话少说,继续2401的FPGA驱动配置。英文手册内容详实,但缺点是零散分散,想快速找到配置方式,需要反复阅读,并结合调试进行确认。比如我需要快速对2401进行初始化并将2401配置到接收模式,如果看英文手册你会云里雾里好一会儿,另外FPGA在配置时对各个控制信号的时序需要详细说明,而手册上只有SPI的时序图及相关参数,不能一下子看出各个信号之间的时序要求。因此本人首先结合中文资料理清了nRF2401的初始化流程和接收模式的配置要求(即寄存器配置相关参数),然后结合单片机代码和英文手册确认每一个寄存器的配置,最后将200行的单片机c代码转换成我需要的veril
11-03
897

11-06
2万+
