废话不多说,关于nrf2401的基础知识及配置,可以参考下面的文档(附下载地址:http://pan.baidu.com/s/1hqwyoja )
里面介绍了SPI的接口函数与nfr2401的配置方法,附带了nfr2401的命令宏和配置寄存器的宏,对nfr2401的理解很有帮助。
下面解读程序:
一、分析匿名四轴的程序。
1、SPI配置与程序接口
这两项在spi.c文件中,该文件只有两个函数,spi1_init()函数负责SPI1端口的配置,Spi_RW(u8 dat)函数提供了程序接口
首先是初始化函数
配置SPI1的各个端口,其中PA5~PA7是stm32的SPI1的三个主要功能接口SCK、MISO、MOSI,配置了这些接口再启动SPI1后,stm32就会自动通过这三个接口收发数据,不需要用户指定哪个接口做时钟接口,哪个接口做MOSI接口。在PCB上可以看出是这样连接三个端口的。
同理SPI2的这三个接口是PB13~PB15,下面是crazyflie的PCB连接图,可知该nfr2401接到了stm32的SPI2接口。
其他的端口CS,CE,IRQ端口依电路图配置。
然后就是Spi_RW函数
被调用的函数位于stm32的spi库函数中。
2、Nfr2401配置与程序接口
Nrf2401是通过spi端口与mcu通讯,有了上面的spi接口函数,就可以编写nrf的接口函数了。
上面的两个函数,一个是向一个nfr2401寄存器地址写入1字节的数据,另一个从寄存器中读取一个字节的数据。
上面的函数,一个是向一个寄存器地址写入pBuf地址处的uchars个字节的数据,这些数据写入寄存器reg;另一个则从寄存器reg读取uchar个字节的数据,保存在pBuf中。
上面的程序先配置频道P0接收数据地址,发送地址,地址长度
宏定义见头文件里的定义。
然后向nrf2401写待发送数据,并激发数据发送。
Nrf24l01_Init()函数则是配置NRF参数的,暂不分析。
上面是分析的匿名四轴的程序,下一贴分析crazyflie四轴的程序。