cc1101 使用筆記
產品描述
工作頻段
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位元組被髮送。
接收模式下的資料包過濾
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)。
1) 讀取RSSI狀態暫存器
2) 將讀到的資料從16進位制數轉換到二進位制數(RSSI_dec)
3) 如果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振盪器校準結果 |
作者:Alex_Lin
連結:http://www.jianshu.com/p/3d9069676669
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
相關文章
- Markdown使用筆記筆記
- docker使用筆記Docker筆記
- wcdb使用筆記筆記
- postgreSql 使用筆記SQL筆記
- vue - 使用筆記Vue筆記
- 社群使用筆記筆記
- vim使用筆記筆記
- Tmux 使用筆記UX筆記
- MarkDown 使用筆記筆記
- webpack使用筆記Web筆記
- NSDate使用筆記筆記
- maven使用筆記Maven筆記
- node 使用筆記筆記
- Perforce 使用筆記筆記
- sublime使用筆記筆記
- 《mockito 使用筆記》Mockito筆記
- Brio使用筆記。筆記
- UOS使用筆記筆記
- easySQLite使用筆記SQLite筆記
- Git使用筆記Git筆記
- axios使用筆記iOS筆記
- git的使用筆記Git筆記
- [工具]Pandoc 使用筆記筆記
- Docker的使用筆記Docker筆記
- 社群使用筆記2筆記
- TeeReader使用筆記筆記
- vCenter Server使用筆記Server筆記
- GoJS 使用筆記GoJS筆記
- 【Linux】使用筆記Linux筆記
- QT creator使用筆記QT筆記
- jqGrid使用筆記.筆記
- CopyMemory Move使用筆記筆記
- Delphi TMSMQTT使用筆記MQQT筆記
- 【SHELL】命令使用筆記筆記
- springcloud使用筆記SpringGCCloud筆記
- oneinstack 使用快捷筆記筆記
- 筆記:Vue 使用pug + ts筆記Vue
- javascript基礎使用筆記JavaScript筆記