產品描述
工作頻段
**CC1100: **400-464 MHz and 800-928MHz
CC1101: 387-464 MHz and 779-928MHz
芯片引腳
引腳說明
引腳編號 | 引腳名 |引腳類型| 描述
----|
1| SCLK |數字輸入 |連續配置接口,時鐘輸入
2| SO(GD01)| 數字輸出 |連續配置接口,數據輸出當 CSn 為高時為可選的一般輸出腳
3 | GDO2 | 數字輸出 | 一般用途的數字輸出腳:1>測試信號;2>FIFO 狀態信號;3>時鐘輸出,從 XOSC 向下分割;4>連續輸入 TX 數據
4 | DVDD | 功率(數字)| 數字 I/O 和數字中心電壓調節器的 1.8V-3.6V 數字功率供給輸出
5| DCOUPL| 功率(數字)| 對退耦的 1.6V-2.0V 數字功率供給輸出;注意:這個引腳只對 CC2500 使用。不能用來對其他設備提供供給電壓
6| GDO0(ATEST)|數字 I/O | 一般用途的數字輸出腳:1> 測試信號;2>FIFO 狀態信號;3>時鐘輸出,從 XOSC 向下分割;4>連續輸入 TX 數據;5>也用作原型/產品測試的模擬測試 I/O
7 | CSn| 數字輸入 | 連續配置接口,芯片選擇
8 | XOSC_Q1| 模擬 I/O| 晶體振蕩器腳 1,或外部時鐘輸入
9 |AVDD |功率(模擬)| 1.8V-3.6V 模擬功率供給連接
10| XOSC_Q2| 模擬 I/O| 晶體振蕩器腳
11| AVDD| 功率(模擬)| 1.8V-3.6V 模擬功率供給連接
12 | RF_P | RF I/O | 接收模式下對 LNA 的正 RF 輸入信號發送模式下對 LNA 的正 RF 輸出信號
13 |AVDD | RF I/O | 接收模式下對 LNA 的負 RF 輸入信號發送模式下對 LNA 的負 RF 輸出信號
14| AVDD |功率(模擬)| 1.8V-3.6V 模擬功率供給連接
15| AVDD |功率(模擬)| 1.8V-3.6V 模擬功率供給連接
16| GND | 地(模擬) | 模擬接地
17| RBIAS| 模擬 I/O | 參考電流的外部偏阻器
18 | DGUARD| 功率(數字)| 對數字噪聲隔離的功率供給連接
19| GND |地(數字)| 數字噪聲隔離的接地
20| SI| 數字輸入 | 連續配置接口,數據輸入
通訊方式以及配置方式---SPI
- CC1101通過4線SPI兼容接口(MOSI,MISO,SCLK和CSn)進行配置,CC1101作為從設備。
這個接口同時用作讀寫緩沖器數據。
SPI接口上所有的數據傳送都是先傳送 MSB
拓展知識:
MSB:高位前導
LSB:低位前導。
big endian(大端)是指低地址存放最高有效字節(MSB),
little endian(小端)則是低地址存放最低有效字節(LSB)
SPI 讀寫注意事項
- SPI接口上的所有傳送都是以一個頭字節(header byte)開始包含以下:
- 一個讀寫位(R/W):在讀操作中該位置1,在寫操作中該位置0;
- 一個(突發(burst access)訪問位(B)
- 6位地址位(A5~A0)。
- 在SPI總線上傳輸數據時,CSn腳必須保持低電平。如果在發送頭字節或者讀寫寄存器時CSn拉高,傳送將被取消
- 當 CSn 變低,在開始轉換頭字節之前,MCU必須等待,直到 MISO 腳變低。這表明電壓調制器已經穩定,晶體正在運作中。除非芯片處在 SLEEP 或 XOFF 狀態,MISO 腳在 CSn變低之后總會立即變低。
芯片狀態字節
- 當頭字節在 SPI 接口上被寫入時,芯片狀態字節在 MISO 腳上被 CC1100 寫入。狀態字節
包含關鍵狀態信號,對 MCU 是有用的。(7)位是 CHIP_RDYn 信號。在 SCLK 的在第一個正邊緣之前,這個信號必須變低。CHIP_RDYn 信號表明晶體正處于工作中,調節數字供給電壓是穩定的。 - 狀態字節中的(6:4 )位由狀態值組成。這個值反映了芯片的狀態。當使 XOSC 空閑并使數字中心的能量開啟,所有其他模塊處于功率降低狀態。只有芯片處于此狀態時,頻率和信道配置才能被更新。當芯片處于接收模式時,RX狀態是活動的。同樣地,當芯片處于傳輸模式時,TX 狀態是活動的。
- 狀態字節中的后四位(3:0)包含FIFO_BYTES_AVAILABLE。為了進行讀操作,這個區域包含可從 RX FIFO 讀取的字節數。為了進行寫操作,這個區域包含可寫入 TX FIFO的字當FIFO_BYTES_AVAILABLE=15,15 或者更多的字節是可用/自由的。
狀態字節概要
寄存器訪問
- **CC1101 配置寄存器地址: ** 0x00到0x2E
- 所有的配置寄存器均能讀和寫。讀/寫位控制寄存器是讀或者寫。當對寄存器寫時,每當一個待寫入的數據字節傳輸到 SI腳時,狀態字節將被送至 SO 腳。
- 通過在地址頭設置突發位,連續地址的寄存器能高效地被訪問。這個地址在內部計數器內設置起始地址。每增加一個新的字節(每8 個時鐘脈沖),計數器值增加 1。突發訪問,不管是讀訪問還是寫訪問,必須通過設置CSn 為高來終止。
- 對 0x30-0x3D 間的地址來說,突發位用以在狀態寄存器和命令選通間選擇。狀態寄存器只讀。突發讀取對狀態寄存器是不可取的,故它們每次只能被讀一個。
burst位置1:選擇狀態寄存器;
burst置0:選擇命令選通(command strobes);
命令選通(command strobes)
- 命令選通可以看做是CC1101的一個單字節指令。
通過尋址一個命令選通寄存器,將啟動內部序列。
這些命令用來禁止晶振,使能接收,使能無線喚醒 等; - 命令選通寄存器的訪問和一個寄存器的寫操作一樣,但沒有數據被傳輸。就是說,只有 R/W 位(置為 0)突發訪問(置為 0)和六個地址位(0x30 和 0x3D 之間)被寫。一個命令濾波可能在任何其他 SPI 訪問之后,而不需要將 CSn 拉至高電平。命令選通立即被執行,當 CSn 高時 SPWD 和 SXOFF 命令被執行是例外。
FIFO訪問
- 64 字節 TX FIFO 和 64 字節 RX FIFO 通過0x3F 被訪問。
- 讀/寫位為 0 時,TX FIFO被訪問。
- 讀/寫位為 1 時,RX FIFO 被訪問。
- TX FIFO 是只寫的,而 RX FIFO 是只讀的。
- 突發位用來決定 FIFO 訪問是單字節還是突發訪問。
- 單字節訪問方式期望地址的突發位為 0 的頭字節和一個數據字節。在數據字節之后跟隨一個新的頭字節,因此,CSn 繼續保持低。
- 突發訪問方式允許一地址字節,然后是連續的數據字節,直到通過設置 CSn 為高來關斷訪問。
- 0x3F : 單字節訪問 TX FIFO
- 0x7F : 突發訪問 TX FIFO
- 0xBF : 單字節訪問 RX FIFO
- 0XFF : 突發訪問 RX FIFO
PATABLE 訪問
- 0x3E地址用來訪問 PATABLE。PATABLE用來選擇 PA 能量控制設置。在接收此地址之后,SPI 等待至少 8 個字節。通過控制PATABLE,能實現可控的 PA 能量上升和下降,減少的帶寬的 ASK 調制整型也如此。
- PATABLE 是一個 8 字節表,定義了 PA 控制設 置 , 為 8 個 PA 功 率 值 ( 由FRENDO.PA_POWER 的 3 個位的值所選擇)的每一個所使用。這個表從最低位(0)到最高位(7)可讀和寫,一次一位。一個索引計數器用來控制對這個表的訪問。每讀出或寫入表中的一個字節,計數器就加 1。當 CSn 為高時,計數值置為最小值。當達到最大值時,計數器由零重新開始計數。
- 對 PATABLE 的訪問是單字節或者突發訪問,由突發位決定。當使用突發訪問時,索引計數器的值增加;達到7時重新從0開始。讀/寫位控制訪問是寫訪問(R/W=0)或者讀訪問(R/W=1)。
- 如果一字節被寫入 PATABLE,且這個值將要被讀出,那么,為了設置索引計數器的值重為 0,CSn 必須在讀訪問之前置為高。注意,當 PATABLE 進入休眠狀態時,所存儲的內容會丟失,特別是第一個字節(索引
為 0)。
基本控制和狀態腳
- CC1101有2個專用配置腳(GDO0和GDO2)和一個共用腳(GDO1)可以向控制軟件輸出有用的內部狀態信息。這些腳可以用來向MCU產生中斷。
- GDO1和SPI的SO引腳共用。
- GDO1/SO的默認設置時3態輸出。通過選擇任何編程選項,GDO1/SO將變為普通引腳。當CSn拉低,該引腳將始終作為普通的SO功能引腳。
- 在同步和異步串行模式,在發送模式下,GDO0引腳將作為串行TX數據輸入引腳。
- GDO0也可以用作片上模擬溫度傳感器。通過外部ADC測量GDO0腳的電壓,可以計算出溫度。溫度傳感器的詳細說明見18頁的Section 4.7。通過默認的PTEST寄存器設置(0x7F),如果頻率合成器被允許溫度傳感器的的輸出時可用的。(例如:MANCAL,FSTXON,RX和 TX狀態)在IDLE狀態向PTEST寄存器寫入0xBF允許模擬溫度傳感器是必要的。離開IDLE狀態之前,必須恢復PTEST寄存器為默認值(0x7F)。
數據包處理的硬件支持
發送模式下
數據包的處理者可以配置增加下面的元素到TX FIFO中的數據包存儲
- 一個可編程數量的前導字節;
- 兩字節同步字,可復制為4字節同步字。只插入前導字節或者同步字節是不可能的;
- 一個覆蓋數據區域的CRC校驗計算。
推薦設置4字節前導和4字節同步字,除了500k波特率時推薦使用8字節前導。另外,在數據區域和附加的2字節CRC校驗,以下可以被執行
- 使用PN9序列Whitening數據。
- 通過使用交叉和編碼數據(卷積編碼)前向糾錯。
接收模式下
數據包處理支持將是解構數據包,(如使能)以下可以被執行
- 前導檢測
- 同步字檢測
- CRC計算和CRC檢查
- 一個字節地址檢測
- 包長度檢查(根據設置的最大長度檢查長度字節)
- 反Whitening(如果使能)
- 反交叉和解碼( 如果使能 )
另外,RSSI(接收信號強度指示)、LQI(鏈路質量指示)和CRC狀態的兩個狀態字節可以附加在RX FIFO
數據包格式
數據包的格式可以配置為由以下部分組成:
- 前導 n 同步字
- 可選的長度字節
- 可選的地址字節
- 凈荷
-
可選的2字節CRC
數據格式
前導形式是一個交互的0 /1 序 列(01010101...)前導的最小長度是可編程控制的。當啟用 TX 時,調制器開始傳送前導。當控制數目的前導字節被傳送完畢,調制器開始發送同步詞匯,然后傳送來自 TX FIFO的可利用的數據。若 TX FIFO 為空,調制器將繼續傳送前導字節,直到第一個字節被寫入 TX FIFO。調制器將隨后傳送同步詞匯和數據字節;
前導字節的長度由MDMCFG1.NU_PREAMBLE 值控制。
數據包長度
- CC1101 支持恒定長度數據包協議和可變長度協議。
- 可變或固定數據包長度模式能支持的長度可達 255 字節。
- 大于255個字節的數據包,必須使用無限數據包長度模式;
使用不同長度的配置來支持數據包格式。必須確保在發送前半個或任何字節的時候TX模式不被關閉
固定數據包長度
- 固定數據包長度模式通過設定PKTCTRL0.LENGTH_CONFIG=0來選擇。
- 期望的數據包長度通過PKTLEN寄存器來設置,不包括長度字節和可選的CRC;
可變數據包長度
- 可變數據包長度模式,PKTCTRL0.LENGTH_CONFIG=1,數據包長度由同步字后面的第一個字節配置。
- 數據包長度定義為有效載荷,不包括長度字節和可選的CRC。
- PKTLEN用來配置允許接收的最大數據包長度。
- 任何接收的數據包長度大于PKTLEN的值都將被丟棄。
可變長數據包收發邏輯
數據包長度寄存器PKTLEN,在接收和發送時可以重新編程。結合固定數據包長度模式(PKTCTRL0.LENGTH_CONFIG=0),這使與變長數據包不同的長度配置成為可能。(在可變數據包長度模式下長度字節是同步字節后第一個字節)在接收開始,數據包長度設置為一個大的值。MCU讀取足夠多的字節來解析數據包中的長度區域。然后依照這個值對PKTLEN進行設置。當數據包處理器中的字節計數器等于PKTLEN寄存器的值時數據包結束。因此,MCU必須在內部計數器達到數據包長度之前確認正確的長度
無限數據包長度模式(大于255個字節)
- PKTCTRL0.LENGTH_CONFIG=2,數據包長度將設置為無限長,發送和接收將持續到手動關閉。
無限數據包長度收發邏輯
- 數據包自動控制寄存器PKTCTRL0,可以在TX和RX期間重新編程。這就使發送和接收數據包長度超過256字節并且仍然使用數據包處理器硬件支持成為可能。
- 在數據包開始時,必須激活無限數據包長度模式(PKTCTRL0.LENGTH_CONFIG=2)。
- 在發送端,PKTLEN寄存器設置為:mod(長度,256)。
- 在接收端,MCU讀出足夠長度的字節來解析出數據包長度并設置PKTLEN寄存器為:mod(長度,256)。
- 當數據包中還有少于256字節數據,MCU禁止數據包無限長度模式并且激活固定長度模式。
- 當內部字節計數器到PKTLEN時,發送和接收結束。
- (無線進入的狀態由TXOFF_MODE 或 RXOFF_MODE決定)自動CRC添加/校驗也可以使用(通過設置PKTCTRL0.CRC_EN=1)。
例子:發送一個600字節的數據包時,MCU必須按照以下執行:
- 設置PKTCTRL0.LENGTH_CONFIG=2。
- 重新設置PKTLEN寄存器的值為:(600,256)=88. (600%256 = 88)
- 至少發送345字節(600-255),例如通過填充64字節 TX FIFO 6次(發送384字節)。
- 設置PKTCTRL0.LENGTH_CONFIG=0。
-
當數據包計數器達到88發送完成。一共600字節被發送。
600個字節發送
接收模式下的數據包過濾
CC1101支持三種不同類型的數據包過濾:
- 地址過濾
- 最大長度過濾
- CRC過濾
地址過濾
- 設置PKTCTRL1.ADR_CHK為任意大于0的值使能數據包地址過濾。
- 數據包處理器啟動后將比較數據包中的目標地址字節和在ADDR寄存器中設置的節點地址
或者當PKTCTRL1.ADR_CHK=10時的廣播地址0x00
以及PKTCTRL1.ADR_CHK=11時的廣播地址0x00和0xFF。
如果接收的地址匹配到一個正確地址,數據包被接收并寫入到RX FIFO。
如果地址匹配失敗,數據包將被丟棄,重新啟動接收模式(不管MCSM1.RXOFF_MODE的設置)。 - 如果當時用無限數據包長度模式和使能地址過濾時接收地址匹配到正確的地址,0xFF將被寫入到RX FIFO,其次是地址字節和有效載荷。
最大長度過濾
在可變數據包模式,PKTCTRL0.LENGTH_CONFIG=1,PKTLEN.PACKET_LENGTH寄存器用來設置最大允許的數據包長度。如果接收的長度字節大于這個值,數據包將被丟棄,重新啟動接收模式(不管MCSM1.RXOFF_MODE的設置)。
CRC過濾
- 當CRC校驗失敗時過濾數據包,通過設置PKTCTRL1.CRC_AUTOFLUSH=1使能;
- CRC自動清除功能將在CRC校驗失敗時清空所有RX FIFO;
- 在自動清空RX FIFO后,下一個狀態依賴于MCSM1.RXOFF_MODE的設置;
- 當使用自動清除功能,在可變數據包長度模式下最大數據包長度為63字節,在定長數據包長度模式下是64字節;
- 注意當PKTCTRL1.APPEND_STATUS使能,最大允許數據包長度將減少2個字節,以確保在數據包的結尾附加的2字節的狀態字節在RX FIFO中占用的空間;
- 當CRC校驗錯誤以后全部RX FIFO被清空;
- 在接收正確的數據包前之前接收到的數據包必須從FIFO中讀出。直到CRC校驗正確MCU才從正確的數據包中讀取數據;
發送模式下的數據包處理
- 需要發送的有效載荷必須寫入到TX FIFO;
- 如果使能可變數據包長度第一個字節必須寫長度字節;
- 長度字節的值等于數據包的有效載荷(包含可選的地址字節);
- 如果在接收端使能地址識別,寫入到TX FIFO中的第二個字節必須是地址字節;
- 如果使能固定數據包長度,寫入到TX FIFO中的第一個字節必須是地址字節(接收端使用地址識別);
- 調制器將首先發送預置數量的前導字節;
- 如果TX FIFO中有可發送的數據,調制器將發送2字節(可選4字節)同步字,緊接著是TX FIFO中的有效載荷;
- 如果使能CRC,校驗時計算TX FIFO中的所有數據,然后跟隨有效數據發送2個附加字節;
- 如果在完整的數據包發送完成之前TX FIFO變為空的,無線將進入TXFIFO_UNDERFLOW狀態。退出該狀態的唯一方法是運行SFTX命令;
- 發送下溢后再向TX FIFO寫入數據不能重啟TX模式;
- 如果whitening(白化)被使能,同步字后面的所有字節將被whitened。這必須在FEC/Interleaver之前完成。Whitening通過設置PKTCTRL0.WHITE_DATA=1使能;
- 如果FEC/Interleaving(交錯器)被使能,同步字后面的所有數據在調制之前將被interleaver 和 FEC編碼加密。FEC通過設置MDMCFG1.FEC_EN=1使能;
接收模式下的數據包處理
- 在接收模式,解調器和數據包處理器將尋找一個有效的前導和同步字。
- 當找到后,解調器將獲得位和字節同步,并將接收第一個有效字節。
- 如果使能FEC/Interleaver,FEC解碼器將開始解碼第一個有效字節。Interleaver將在數據被其他任何處理之前解密。
- 如果使能whitening,在此基礎上數據將被de-whitening(反白化)。
- 當使能可變數據包長度模式時,第一個字節是長度字節。數據包處理器儲存該值為數據包長度并且通過該長度字節指示接收的字節數量。
- 如果使用固定數據包長度模式,數據包處理器將接收預置數量的字節。
- 接下來,數據包處理器可選的檢測地址并且只有地址匹配才繼續接收。
- 如果使能自動CRC校驗,數據包處理器計算CRC并與CRC校驗結果相匹配。
- 在有效載荷的結尾,數據包處理器將可選的寫入兩個復交數據包狀態字節,包括CRC狀態、LQI和RSSI
MCU數據包處理
如果在固件中執行一個數據包導向的無線協議,MCU需要知道一個數據包什么時候收到/發送。
加之,超過64字節長度的數據包,當接收時需要讀取RX FIFO和當發送時TX FIFO需要重新填充。
這就意味著MCU必須知道有多少個字節可以從RX FIFO中讀取或者可以向TX FIFO中寫入。
有兩種方法可以獲得必要的狀態信息。
中斷驅動方法
當同步字接收/發送完成或者完整的數據包接收/發送通過設置IOCFGx.GDOx_CFG=0x06,GDO腳可以用在RX和TX中產生一個中斷。
此外,
IOCFGx.GDOx_CFG還有兩個配置用來產生中斷,源于有多少字節在RX FIFO或TX FIFO。
IOCFGx.GDOx_CFG=0x00和IOCFGx.GDOx_CFG=0x01為RX FIFO,
IOCFGx.GDOx_CFG=0x02和IOCFGx.GDOx_CFG=0x03為TX FIFO。SPI輪詢
PKTSTATUS可以使用給定的速率查詢以獲得GDO0和GDO2當前值。
RXBYTES 和 TXBYTES可以使用給定的速率查詢以獲得RX FIFO或者TX FIFO中的字節數。
合二為一的,RX FIFO和TX FIFO中的字節數量可以從每次頭字節、數據字節或命令選通在SPI總線上發送時MISO引腳返回的芯片狀態字節讀取。
推薦使用中斷驅動方法因為高速率SPI輪詢將減小RX的靈敏度。
而且,在Section10.3和CC1101勘誤表【4】中,當使用SPI輪詢,單一讀取PKTSTATUS、 RXBYTES和 TXBYTES有一個小的有限的錯誤的可能性。
當讀取芯片狀態字節有同樣的問題。
RSSI
- RSSI的值時在選擇的通道中信號功率級別的估計。
- 這個值基于RX中當前增益的設置和信道中的標準信號等級。
- 在RX模式,RSSI可以連續的從RSSI狀態寄存器讀取知道解調器檢測到一個同步字(當同步字檢測使能)。此時RSSI讀取的值將被凍結知道芯片下一次進入RX狀態。
注意:從無線進入RX模式到在RSSI寄存器檢測到一個正確的RSSI值需要一定的時間。查看DN505[15]獲得RSSI響應時間估算的詳細信息。
RSSI的值以dBm和1/2 dB給出。
RSSI更新速率,fRSSI 依賴于接收濾波帶寬和AGCCTRL0.FILTER_LENGTH。
- 如果使能PKTCTRL1.APPEND_STATUS,數據包最后的RSSI值自動添加到有效載荷后面的第一個附加字節。
- 從RSSI狀態寄存器讀出的RSSI值時2個補足的數字。下面的程序可以將RSSI轉換為完整的功率級別(RSSI_dBm)。
- 讀取RSSI狀態寄存器
- 將讀到的數據從16進制數轉換到二進制數(RSSI_dec)
- 如果RSSI_dec≧128,RSSI_dBm =(RSSI_dec - 256)/2 – RSSI_offset 4)
4 ) 如果RSSI_dec<128,RSSI_dBm =RSSI_dec /2 – RSSI_offset
凈信道評估(CCA)
- CCA用來顯示當前信道是空閑還是繁忙。
- 通過設定IOCFGx.GDOx_CFG=0x09,當前的CCA狀態在任何一個GDO引腳都可以查看。
- MCSM1.CCA_MODE用來選擇當確定CCA時使用的模式。
- 當CC1101在RX狀態時給出STX 或 SFSTXON命令選通,僅能在凈信道條件完成才能進入TX或FSTXON狀態。
- 此外,芯片將仍處于RX狀態。如果信道接下來變為可用的,在一個新的命令選通通過SPI接口發送之前,無線不會進入TX或FSTXON狀態。這個特性叫做TX-if-CCA。
可以編程設置4種CCA條件:- 始終(禁止CCA,總是進入TX)
- 如果RSSI低于門限值
- 除非正常接收一個數據包
- 以上兩個(RSSI低于門限值和沒有正常接收一個數據包)
鏈路質量指示(LQI)
- 信號鏈路質量指示是一個公制的接收信號的當前質量。
- 若 PKTCTRL1.APPEND_STATUS啟用,則這個值自動附加在接收數據包的末端。
- 這個值也可從 LQI 狀態寄存器上讀取。
LQI 由跟隨同步詞匯的 64 個符號(頭 8 個數據包字節)計算得來。LQI 最好用作連接
質量的一個相對的度量,因為這個值決定于調制格式。
上電啟動序列
- 當電源給電,系統必須復位。
- 通過下面描述的2個序列中的一個來完成,即自動上電復位(POR)或者手動復位。
- 自動上電復位或手動復位之后,推薦轉換GDO0引腳上輸出的信號。
- 默認設置是以CLK_XOSC/192的頻率輸出一個時鐘信號。
- 然而,為了在TX和RX中優化執行,必須GD0/1/2 引腳配置中的配置來配置GDO腳
自動POR
CC1101內部包含上電復位電路。最小的需求見表15,完整的上電復位功能必須遵循。當CHIP_RDYn變低內部上電序列完成。在CSn拉低后在SO引腳上可以查看CHIP_RDYn。
當CC1101復位完成,芯片將進入IDLE狀態,晶振開始運行。如果芯片在上電之后有足夠的時間讓晶振穩定,在捕獲CSn變低之后SO引腳將馬上變低。如果在復位完成之前CSn被拉低,SO引腳將首先變高,指示晶振沒有穩定,變低之前見下圖。
手動復位
CC1101上的其它全部復位時使用SRES命令。通過執行這個命令,所有內部寄存器和狀態恢復默認,IDLE狀態。手動復位序列如下(圖 手動復位):
- 設置SCLK=1,SI=0,避免引腳控制模式可能出現的問題。
- 選通CS低/高。
- 保持CS為低,然后拉高,至少40us才可以拉低
- 將CSn拉低等到SO拉低(CHIP_RDYn)。
- 在SI線上發布SRES選通。
-
當SO再一次拉低,復位完成,芯片進入IDLE狀態
手動復位
注意:以上復位程序只需要在電源給電之后。如果用戶在這之后想要復位CC1101,只需要執行SRES命令選通
常規用途/ 測試輸出控制引腳
3 個數字輸出引腳 GDO0 和 GDO1 和 GDO2為常規控制腳。它們的功能分別由
- IOCFG0.GDO0_CFG
- IOCFG1.GDO1_CFG
-
IOCFG2.GDO3_CFG
控制; - GDO1 和在 SPI 接口上的SO 腳是同一腳,因此這個腳上控制的輸出在 CSn 高時才有效。
- GDO1 的默認值為 3狀態,當 SPI 接口和其它設備一起使用時這是有效的。
- GOO0 的默認值為125kHz-146kHz時鐘輸出(XOSC 頻率除以 192)。當 XOSC 在重啟
功率下開啟后,使用一個晶體,它就能用來為系統中的 MCU 計時。當 MCU 工作時,通過 IOCFG0.GDO0_CFG,它能改變時鐘頻率。不會造成時鐘波形干擾。 - 對 IOCFG0.GDO0_CFG 寄存器寫入值 128(0x80h),芯片內模擬溫度傳感器啟用。然后,GDO0 上的電壓與溫度成比例
- 如果IOCFGx.GDOx_CFG的設置小于0x20并且IOCFGx_GDOx_INV為0(1),在SLEEP模式GDO0和GDO2將由硬件置0(1),GDO1將有硬件置1(0)。這些信號將由硬件保持知道CHIP_RDYn變低。
- 如果IOCFGx.GDOx_CFG設置為0x20或更高,GDO引腳在SLEEP狀態也工作在設置的狀態。例如,如果IOCFG1.GDO1_CFG=0x2E,GDO1在所有狀態都是高阻抗。
GDO0_CFG[5:0] GDO1_CFG[5:0] GDO2_CFG[5:0] | 描述 |
---|---|
0(0x00) | 與 RX FIFO 關聯:當 RX FIFO 在 RXFIFO_THR 上被填充時聲明。當 RX FIFO 在RXFIFO THR 之下時被反聲明 |
1(0x01) | 與 RX FIFO 關聯:當 RX FIFO 在 RXFIFO_THR 上被填充或到達數據包末端時聲明。當RX FIFO 空時被反聲明 |
2(0x02) | 與 TX FIFO 關聯:當 TX FIFO 在 TXFIFO_THR 上被填充時聲明。當 TX FIFO 在TXFIFO THR 之下時被反聲明 |
3(0x03) | 與 TX FIFO 關聯:當 TX FIFO 滿時聲明。當 TX FIFO 在 TXFIFO_THR 之下為空時被反聲明 |
4(0x04) | 當 RX FIFO 已溢出時聲明。當 FIFO 被淹沒時被反聲明 |
5(0x05) | 當 TX FIFO 已下溢時聲明。當 FIFO 被淹沒時被反聲明 |
6(0x06) | 當同步詞匯被送出/收到時聲明,在數據包末端時反聲明。對 RX,當可選地址檢測失敗或 RX FIFO 溢出時,引腳被反聲明。若 TX FIFO 下溢,這個引腳將同樣被反聲明 |
7(0x07) | 當一個數據包被 OK CRC 收到時聲明。當第一個字節從 RX FIFO 中讀取時反聲明 |
8(0x08) | 前導質量達到。當 PQI 高于控制 PQT 值時聲明 |
9(0x09) | 清理信道評估。當 RSSI 等級低于門限時為高(決定于當前 CCA MODE 設置) |
10(0x0A) | 鎖定檢測器輸出 |
11(0x0B) | 連續時鐘。與同步連續模式下的數據同步。數據在下降沿建立,在 SERIAL CLK 上升沿被讀取。 |
12(0x0C) | 連續同步數據輸出。同步連續模式時使用。在 SERIAL_CLK 上升沿 MCU 必須讀 DO。數據在下降沿由 CC2500 建立 |
13(0x0D) | 連續透明數據輸出。同步連續模式時使用。 |
14(0x0E) | 載波感應。當 RSSI 等級低于門限時為高 |
15(0x0F) | CRC OK。上一個 CRC 對比匹配。當進入/重啟 RX 模式時清理。 |
16(0x10) | 保留-測試用 |
17(0x11) | 保留-測試用 |
18(0x12) | 保留-測試用 |
19(0x13) | 保留-測試用 |
20(0x14) | 保留-測試用 |
21(0x15) | 保留-測試用 |
22(0x16) | RX_HARD_DATA[1]。能同RX_SYMBOL_TICK一起使用在交替連續RX輸出上。 |
23(0x17) | RX_HARD_DATA[1]。能同RX_SYMBOL_TICK一起使用在交替連續RX輸出上。 |
24(0x18) | 保留-測試用 |
25(0x19) | 保留-測試用 |
26(0x1A) | 保留-測試用 |
27(0x1B) | 1 時 PA PD.PA 開啟,0 時功率降低。能用來控制外部 PA 或 RX/TX 開關 |
28(0x1C) | 1 時 LNA PD.LNA 開啟,0 時功率降低。能用來控制外部 LNA 或 RX/TX 開關 |
29(0x1D) | RX_SYMBOL_TICK。能同RX_HARD_DATA一起使用在交替連續RX輸出上。 |
30(0x1E) | 保留-測試用 |
31(0x1F) | 保留-測試用 |
32(0x20) | 保留-測試用 |
33(0x21) | 保留-測試用 |
34(0x22) | 保留-測試用 |
35(0x23) | 保留-測試用 |
36(0x24) | 保留-測試用 |
37(0x25) | 保留-測試用 |
38(0x26) | 保留-測試用 |
39(0x27) | 保留-測試用 |
40(0x28) | 保留-測試用 |
41(0x29) | CHIP RDY |
42(0x2A) | 保留-測試用 |
43(0x2B) | XOSC STABLE |
44(0x2C) | 保留-測試用 |
45(0x2D) | GDO0 Z EN N。當這個輸出為 0 時,GDO0 配置為輸入(為連續 TX 數據) |
46(0x2E) | 高阻抗(3-狀態) |
47(0x2F) | HW 到 0(HW1 同 INV 信號一起完成) |
48(0x30) | CLK XOSC/1 |
49(0x31) | CLK XOSC/1.5 |
50(0x32) | CLK XOSC/2 |
51(0x33) | CLK XOSC/3 |
52(0x34) | CLK XOSC/4 |
53(0x35) | CLK XOSC/6 |
54(0x36) | CLK XOSC/8 |
55(0x37) | CLK XOSC/12 |
56(0x38) | CLK XOSC/16 |
57(0x39) | CLK XOSC/24 |
58(0x3A) | CLK XOSC/32 |
59(0x3B) | CLK XOSC/48 |
60(0x3C) | CLK XOSC/64 |
61(0x3D) | CLK XOSC/96 |
62(0x3E) | CLK XOSC/128 |
63(0x3F) | CLK XOSC/192 |
寄存器配置
CC1101的配置通過編程8位寄存器來實現
命令寄存器(12個)
訪問這些寄存器將會發起內部狀態或模式的改變
地址 | 名稱 | 描述 |
---|---|---|
0x30 | SRES | 復位芯片 |
0x31 | SFSTXON | 使能和校準頻率合成器(如果MCSM0.FS_AUTOCAL=1)。如果在RX(使能CCA),僅當合成器運行時轉到等待狀態(RX/TX快速轉換) |
0x32 | SXOFF | 關閉晶振 |
0x33 | SCAL | 校準頻率合成器并關閉。SCAL可以從IDLE模式執行而不需要設置收到校準模式(MCSM0.FS_AUTOCAL=0)。 |
0x34 | SRX | 使能RX。如果來自IDLE狀態并且MCSM0.FS_AUTOCAL=1首先執行校準。 |
0x35 | STX | 在IDLE狀態:使能TX。如果MCSM0.FS_AUTOCAL=1首先執行校準。如果在RX狀態并使能CCA僅在信道為空時轉到TX。 |
0x36 | SIDLE | 離開RX/TX模式,關閉頻率合成器,如果可用離開WOR。 |
0x38 | SWOR | 如果WORCTRL.RC_PD=0像Section19.5的描述一樣開始自動RX輪詢序列(WOR)。 |
0x39 | SPWD | 當CSn拉高進入掉電模式。 |
0x3A | SFRX | 清除RX FIFO緩沖器。只在IDLE 或 RXFIFO_OVERFLOW狀態運行SFRX。 |
0x3B | SFTX | 清除TX FIFO緩沖器。只在IDLE 或 TXFIFO_UNDERFLOW狀態運行SFTX。 |
0x3C | SWORRST | 復位實時時鐘到Event1值。 |
0x3D | SMOP | 無操作,可以用來訪問獲取芯片狀態字節。 |
配置寄存器
地址 | 寄存器 | 描述 | 保持在休眠狀態中 |
---|---|---|---|
0x00 | IOCFG2 | GDO2輸出引腳配置 | 是 |
0x01 | IOCFG1 | GDO1輸出引腳配置 | 是 |
0x02 | IOCFG0 | GDO0輸出引腳配置 | 是 |
0x03 | FIFOTHR | RX FIFO和TX FIFO門限 | 是 |
0x04 | SYNC1 | 同步字,高字節 | 是 |
0x05 | SYNC0 | 同步字,低字節 | 是 |
0x06 | PKTLEN | 數據包長度 | 是 |
0x07 | PKTCTRL1 | 數據包自動控制 | 是 |
0x08 | PKTCTRL0 | 數據包自動控制 | 是 |
0x09 | ADDR | 設備地址 | 是 |
0x0A | CHANNR | 信道號 | 是 |
0x0B | FSCTRL1 | 頻率合成器控制 | 是 |
0x0C | FSCTRL0 | 頻率合成器控制 | 是 |
0x0D | FREQ2 | 頻率控制字,高字節 | 是 |
0x0E | FREQ1 | 頻率控制字,中間字節 | 是 |
0x0F | FREQ0 | 頻率控制字,低字節 | 是 |
0x10 | MDMCFG4 | Modem配置 | 是 |
0x11 | MDMCFG3 | Modem配置 | 是 、 |
0x12 | MDMCFG2 | Modem配置 | 是 |
0x13 | MDMCFG1 | Modem配置 | 是 |
0x14 | MDMCFG0 | Modem配置 | 是 |
0x15 | DEVIATN | Modem背離設定 | 是 |
0x16 | MCSM2 | 主無線控制狀態機配置 | 是 |
0x17 | MCSM1 | 主無線控制狀態機配置 | 是 |
0x18 | MCSM0 | 主無線控制狀態機配置 | 是 |
0x19 | FOCCFG | 頻率偏移補償配置 | 是 |
0x1A | BSCFG | 位同步配置 | 是 |
0x1B | AGCTRL2 | AGC控制 | 是 |
0x1C | AGCTRL1 | AGC控制 | 是 |
0x1D | AGCTRL0 | AGC控制 | 是 |
0x1E | WOREVT1 | 事件0超時高字節 | 是 |
0x1F | WOREVT0 | 事件0超時低字節 | 是 |
0x20 | WORCTRL | WOR控制 | 是 |
0x21 | FREND1 | 前端RX配置 | 是 |
0x22 | FREND0 | 前端TX配置 | 是 |
0x23 | FSCAL3 | 頻率合成器校準 | 是 |
0x24 | SCAL2 | 頻率合成器校準 | 是 |
0x25 | SCAL1 | 頻率合成器校準 | 是 |
0x26 | SCAL0 | 頻率合成器校準 | 是 |
0x27 | RCCTRL1 | RC振蕩器配置 | 是 |
0x28 | RCCTRL0 | RC振蕩器配置 | 是 |
0x29 | FSTEST | 頻率合成器校準控制 | 否 |
0x2A | PTEST | 產品測試 | 否 |
0x2B | AGCTEST | AGC測試 | 否 |
0x2C | TEST2 | 各方面測試設定 | 否 |
0x2D | TEST1 | 各方面測試設定 | 否 |
0x2E | TEST0 | 各方面測試設定 | 否 |
狀態寄存器總覽
地址 | 寄存器 | 描述 |
---|---|---|
0x30(0xF0) | PARTNUM | CC1101零件號 |
0x31(0xF1) | VERSION | 當前版本號 |
0x32(0xF2) | FREQEST | 頻率偏移評估 |
0x33(0xF3) | LQI | 解調器鏈路質量估計 |
0x34(0xF4) | RSSI | 接收信號強度指示 |
0x35(0xF5) | MARCSTATE | 控制狀態機狀態 |
0x36(0xF6) | WORTIME1 | WOR定時器高字節 |
0x37(0xF7) | WORTIME0 | WOR定時器低字節 |
0x38(0xF8) | PKTSTATUS | 當前GDOx狀態和數據包狀態 |
0x39(0xF9) | VCO_VC_DAC | PLL校準模塊的當前設置 |
0x3A(0xFA) | TXBYTES | 下溢和TX FIFO中的字節數 |
0x3B(0xFB) | RXBYTES | 上溢和RX FIFO中的字節數 |
0x3C(0xFC) | RCCTRL1_STATUS | 上一次RC振蕩器校準結果 |
0x3D(0xFD) | RCCTRL0_STATUS | 上一次RC振蕩器校準結果 |
參考:https://wenku.baidu.com/view/c2b0081b227916888486d769.html