基于MCU和nRF905的低功耗遠距離無(wú)線(xiàn)傳輸系統
3 點(diǎn)對點(diǎn)無(wú)線(xiàn)通信的實(shí)現
3.1 SPI接口
nRF905利用SPI口實(shí)現與MCU的雙向通訊。nRF905的SPI總線(xiàn)包括4個(gè)引腳:CSN(SPI使能)、SCK(SPI時(shí)鐘)、MISO (主入從出)和MOSI(主出從入)。其中CSN可以接到一個(gè)GPIO端口控制芯片工作,而其他三個(gè)腳則連接到主控MCU的SPI接口上。主控MCU可以使用GPIO端口控制nRF905的3根控制線(xiàn),控制低功耗的PWR_UP、正常工作的TX_EN、選擇發(fā)送還是接收方式的TRX_CE。nRF905有兩種節能模式和兩種工作模式,分別為掉電模式、待機模式、Shock Burst 接收模式和Shock Burst發(fā)送模式。這幾種模式由主控MCU通過(guò)控制nRF905的3個(gè)引腳PWR_UP、TRX_CE和TX_ EN的高低電平來(lái)決定。nRF905有3個(gè)引腳用于狀態(tài)輸出,分別是:CD(載波檢測)、AM(地址匹配)和DR(數據就緒),均為高電平有效。 nRF905在處于接收模式時(shí),若檢測到接收頻率段的載波,就置CD為高。接著(zhù)檢測載波數據中的地址字節,若與本身已配置的接收地址相同,則置AM為高;若檢測到接收數據中的CRC校驗正確,則存儲有效數據字節,置DR為高。本文引用地址:http://dyxdggzs.com/article/156893.htm
MCU通過(guò)SPI總線(xiàn)配置nRF905的內部寄存器和收發(fā)數據。這里nRF905為從機,其SPI的時(shí)鐘范圍很寬,可為1Hz~10MHz,因此 MCU在寫(xiě)控制程序時(shí)不必苛求時(shí)間的準確度。SPI總線(xiàn)的每次操作都必須在使能引腳CSN的下降沿開(kāi)始,CSN 低電平有效,總線(xiàn)上的數據在時(shí)鐘的上升沿有效。MCU對SPI總線(xiàn)進(jìn)行讀操作時(shí),先把CSN置低,然后在MOSI 數據線(xiàn)上輸出一個(gè)表示讀命令的字節,與此同時(shí),nRF905會(huì )在MISO數據線(xiàn)上輸出一個(gè)字節表示狀態(tài)信息的數據,隨后輸出一個(gè)地址字節,后面跟隨有效數據。在進(jìn)行寫(xiě)操作時(shí)比較簡(jiǎn)單,MCU先把CSN拉低,然后在MOSI線(xiàn)上輸出寫(xiě)命令字節和數據字節即可。
3.2 數據收發(fā)過(guò)程
在nRF905正常工作前,必須由MCU根據需要寫(xiě)好配置寄存器。發(fā)送數據時(shí),先通過(guò)MCU把nRF905置于待機模式(PWR_UP置為高、 TRX_CE置為低),然后通過(guò)SPI總線(xiàn)把發(fā)送地址和待發(fā)送的數據都寫(xiě)入相應的寄存器中,之后把nRF905置于發(fā)送模式(PWR_UP、TRX_CE 和TX_EN全部置高),配置成功后數據就會(huì )自動(dòng)發(fā)送出去。若射頻配置寄存器中的自動(dòng)重發(fā)位(AUTO_RETRAN)設為有效,數據包就會(huì )被重復發(fā)出,直到MCU拉低TRX_CE退出發(fā)送模式為止。nRF905發(fā)送數據的流程圖如圖2所示。
評論