这次自己照着ChibiOS/RT实时系统驱动的写法,重新整理了一下NRF24模块的相关代码,并且将User LED, User Key及1602 LCD模块都用上了:
- User LED:用来显示当前系统是否在运行,每秒闪烁一下(1ms on, 999ms off)。同时可以指示NRF24模块是否正在交换数据。
-User Key:用来选择当前NRF24模块的工作模式。
-I2C1接口:连接1602 LCD模块,用于显示系统的相关信息。
-UART1 接口:用于显示相关的log信息。
- 相关的硬件信息
关于STM32F030F4-DEV V1.0开发板的相关信息,请参考:
同时,我们还需要一块基于I2C通信的1602 LCD液晶显示模块,模块通信所使用的I2C地址为0x3F
LCD模块用于显示系统信息:
- 系统开始运行时,提示用户当前nRF24L01模块的工作模式,用户可以通过开发板上的User Key切换模式:选择是发送模式还是接收模式,用户有3秒钟的时间选择,默认是处于接收模式。
-工作模式选定之后,会显示当前NRF24模块的工作模式,停留2秒钟
-三屏轮番显示(每屏显示持续2秒钟):
1. 显示当前NRF24L01模块的工作模式及系统时间(系统时间由systick计算得来)
2. 显示当前接收了多少字节及接收时出现多少次异常
3. 显示当前发送了多少字节及发送时出现多少次异常
关于NRF24L01P模块:
-通信接口: SPI (CE, CSN, SCK, MOSI, MISO, IRQ)
-中心频段:2.4~2.525G
-最大功率:1mW
-供电电压:3.3V
-空中速率:250K, 1M, 2M
-发射电流:13mA
-参考距离:120m
- 代码及实现
相关的代码可以从这里下载:
https://github.com/brobwind/chibios_stm32f030f4_dev_v1
- 相关的参考文档
- https://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P
- https://www.nordicsemi.com/eng/nordic/download_resource/8765/2/19687532
- https://www.nordicsemi.com/eng/nordic/download_resource/10638/11/55175509
- http://www.playembedded.org/blog/en/2015/07/16/a-radio-frequency-transceiver-library-nrf24l01-and-chibiosrt/