CC1101寄存器比較多,配置起來相對復雜,而且應用方面很靈活,要注意的點也不少,還需要一定的射頻知識,要不然一些專業術語看不懂。應該說學習起來難度還是有的,把它當做無線的入門來好好學習下也是非常有必要的。
借助SmartRF軟件,大大的簡化了寄存器配置的難度,使得上手方便了不少。以下引用一段介紹:
“CC1101是一種低成本真正單片的UHF收發器,為低功耗無線應用而設計。電路主要設定為在315、433、868和915MHz的ISM(工業,科學和醫學)和SRD(短距離設備)頻率波段,也可以容易地設置為300-348MHz、400-464MHz和800-928MHz的其他頻率。RF收發器集成了一個高度可配置的調制解調器。這個調制解調器支持不同的調制格式,其數據傳輸率可達500kbps。通過開啟集成在調制解調器上的前向誤差校正選項,能使性能得到提升。CC1100為數據包處理、數據緩沖、突發數據傳輸、清晰信道評估、連接質量指示和電磁波激發提供廣泛的硬件支持!
CC1101是通過SPI方式與MCU相連,可以通過MCU自帶的硬件SPI,3線模式,或者MCU模擬SPI來驅動。
寄存器的配置:
CC1101寄存器地址是0~0x3F,配置的內容在BIT0~BIT5中
讀寫控制是BIT7,BIT7為1時,為讀對應的寄存器,BIT7為0時,為寫相應的寄存器。
那么還剩下一個BIT6,BIT6是突發訪問控制為,BIT6為1為突發訪問,BIT6為0為單字節訪問。(突發訪問下面說)
這樣我們就可以很容易理解了,比如配置PKTCTRL0寄存器,其地址0x08,我們突發訪問寫的話寫先數據0x48,再連續寫數據,這里明白了突發訪問后就很容易知道了,如果單字節讀這個寄存器,先寫數據0x88,讀一下就可以了。
命令濾波:
只要寫一下對應的寄存器的地址,不用寫數據,它就內部自動執行相應的指令,比如重啟芯片,設置為發送模式,共有14個濾波指令,地址從0x30~0x3D。關于濾波指令的狀態寄存器其實是可讀不可寫的,也就是0x30~0x3D的地址加上0xC0,(BIT7和IBT6為1,前面說過了),比如寫數據0xF4,就可以讀到相應RSSI狀態寄存器里面的值。一般所有的濾波命令會立即執行,但是SPWD(休眠濾波命令)不會立即執行,它會延遲到CSn為高時執行。
數據包格式:
可以看出數據包由前導碼,同步字節,可選的數據包長度,可選的目標地址,真正數據區,2字節的CRC校驗碼。
CC1101狀態字節:
當通過SPI接口,寄存器被寫入或者寫入濾波命令,狀態字節就會在SO管腳上輸出
接收模式下的數據包濾波,CC1101支持包括地址濾波和最大長度濾波兩種濾波方式。
地址濾波:設置PKTCTRL1.ADR_CHK大于0開啟數據包地址濾波,radio將數據包中的目標地址字節的值同自己ADDR寄存器值和廣播地址(0x00,0xFF)進行比較,如果匹配則數據包被寫到RXFIFO,否則數據包被丟失。
最大長度濾波:在可變數據包長度模式下,PKTLEN.PACKET_LENGTH寄存器的值用來設置最大允許數據包長度,當接收字節值比這個值大,則數據包被丟棄。
注:當設置PKTCTTL1.ADRCHK=10時廣播地址為0x00,當設置PKTCTTL1.ADRCHK=11時,廣播地址為0x00和0xFF。
|