套件:物聯(lián)網(wǎng)無線設(shè)計實戰(zhàn)解析)
去年年底我在做一款戶外資產(chǎn)追蹤方案的芯片選型時幾乎把市面上夠得著的無線電SoC都翻了一遍。所以看到Mouser開始給CC1350 SensorTag Development Kit和配套Antenna Kit發(fā)貨這條消息我特意多看了幾眼。這顆芯片在Sub-1GHz加2.4GHz雙頻段應(yīng)用里屬于繞不開的選項而SensorTag開發(fā)套件又恰好是快速驗證這類方案最省事的一條路徑。這篇文章不打算寫成新聞稿復(fù)讀而是從一名應(yīng)用工程師的角度把這套組合的真實價值拆開講清楚CC1350這顆雙頻SoC到底厲害在哪SensorTag開發(fā)套件的開箱體驗如何天線套件在實際RF評估中能派什么用場以及軟件棧和調(diào)試中那些文檔里不會明說的坑。無論你是剛接觸射頻產(chǎn)品開發(fā)的初學(xué)者還是正在做無線低功耗方案選型的工程師相信都能從中找到可以直接拿走用的信息。1. 一條到貨通知背后的選型信號1.1 Mouser發(fā)貨意味著什么先聊一個容易忽略的細節(jié)Mouser是TI的授權(quán)分銷商它開始正式發(fā)貨說明CC1350 SensorTag和天線套件已經(jīng)進入常規(guī)備貨狀態(tài)而不是小批量樣品階段。對開發(fā)者來說這比芯片本身更讓我在意因為這意味著采購流程變得簡單了不需要走原廠樣片申請用公司采購流程就能下單交期和庫存都是按批量渠道走的。在硬件研發(fā)的實際節(jié)奏里渠道能穩(wěn)定供貨往往比參數(shù)漂亮更重要。項目立項時最怕的就是芯片手冊寫得天花亂墜結(jié)果樣片要等三個月。Mouser這邊開始鋪貨等于給選型上了一道保險評估板丟了、天線套件焊壞了隨時可以再買一塊不用卡在采購環(huán)節(jié)干等。1.2 這兩款套件分別解決什么問題這套組合里其實是兩個獨立SKUCC1350 SensorTag Development Kit和Antenna Kit。SensorTag這塊板子核心價值在于開箱即用。它本身不是面向最終產(chǎn)品的形態(tài)而是把CC1350這顆芯片的能力做成一個完整的傳感節(jié)點板載多種傳感器帶調(diào)試器插上電池就能跑。對于做產(chǎn)品預(yù)研的工程師來說這是最理想的開發(fā)起點不用一開始就畫PCB、做射頻匹配先把協(xié)議、功耗、傳感器選型全部驗證一遍確認方案可行后再設(shè)計自己的硬件。天線套件的價值更偏RF方向。做物聯(lián)網(wǎng)產(chǎn)品的人往往會犯一個錯誤先把電路調(diào)通、軟件跑完最后隨便焊一根天線上去。結(jié)果就是通信距離斷崖式下降。Antenna Kit提供了一組不同形態(tài)、不同頻段的天線配合CC1350的Sub-1GHz和2.4GHz雙頻段可以在設(shè)計早期就把天線方案確定下來。天線選型這種東西越往后拖越難改因為外殼做完了、結(jié)構(gòu)定型了天線就沒法自由選擇了。2. 單芯片雙頻CC1350的結(jié)構(gòu)設(shè)計2.1 M3加M0的雙核分工CC1350最吸引我的地方是它把兩個頻段做進了同一顆芯片而且是真正的雙核架構(gòu)。主核是Cortex-M3負責(zé)跑應(yīng)用邏輯和協(xié)議棧另一個Cortex-M0并不是用來做額外算力的它的職責(zé)是處理射頻相關(guān)的時間關(guān)鍵任務(wù)。你不需要在應(yīng)用代碼里精確卡時序去控制射頻前端M0把這件事包辦了。這種分工的實際意義在于通信時序的確定性。無線協(xié)議最怕的就是應(yīng)用代碼里一個for循環(huán)卡了太久導(dǎo)致射頻丟包。M3和M0各干各的活M0在硬件層面維持無線協(xié)議的時間基準(zhǔn)M3哪怕偶爾被中斷拖住無線鏈路也不會直接崩掉。對低功耗場景來說這還意味著可以在不犧牲通信可靠性的前提下把M3放到更深的休眠狀態(tài)。如果你之前用過單核MCU加外部射頻收發(fā)器的方案比如STM32配SPI接口的Sub-1GHz芯片應(yīng)該能體會這種差異有多大。以前每次收發(fā)數(shù)據(jù)的時序都要自己摳碰上操作系統(tǒng)調(diào)度延時周期性的心跳包就很容易出問題。CC1350的雙核架構(gòu)相當(dāng)于把這塊從應(yīng)用開發(fā)里徹底剝離了。2.2 Sensor Controller的巧妙之處CC1350里還有一個容易被忽略的模塊——Sensor Controller。這是一顆獨立的超低功耗處理器只在需要的時候才工作可以自動采集傳感器的數(shù)據(jù)比如定時讀溫度、光照或者檢測按鍵、ADC閾值變化。關(guān)鍵是它工作的時候M3可以保持休眠狀態(tài)。舉個例子做一個溫濕度記錄儀希望每隔五分鐘采集一次數(shù)據(jù)平時盡量省電。傳統(tǒng)方案里MCU必須周期性醒來去讀外設(shè)即使只需要一毫秒其余時間都在空轉(zhuǎn)等待。有了Sensor ControllerM3可以全程睡死過去由Sensor Controller定時醒來、采集、存數(shù)據(jù)攢夠一批或者檢測到異常后才把M3叫醒處理。對于產(chǎn)品形態(tài)是紐扣電池供電的無線傳感器來說這個設(shè)計直接關(guān)系到能用一年還是能用半年。開發(fā)SensorTag這類套件時TI把Sensor Controller Studio這個工具獨立出來了用來編寫和調(diào)試Sensor Controller上跑的小程序。這塊功能是用好CC1350低功耗的關(guān)鍵但新手容易忽略后面我會細說。2.3 Sub-1GHz和2.4GHz該各司其職為什么要在一顆芯片里塞兩個頻段這得從實際組網(wǎng)需求講起。2.4GHz頻段最大的優(yōu)勢是生態(tài)完善BLE保證了手機連接的天生便利性。用戶可以拿起手機直接掃碼配對、配置設(shè)備、讀數(shù)據(jù)體驗非常順滑。但2.4GHz頻段在城市環(huán)境里非常擁擠Wi-Fi、藍牙、各種私有協(xié)議都擠在一起穿透能力也偏弱。Sub-1GHz頻段典型是868MHz、915MHz國內(nèi)常用780MHz/470MHz等具體看區(qū)域規(guī)定雖然帶寬低、協(xié)議生態(tài)相對分散但繞射能力更強同樣的發(fā)射功率能傳得更遠。在實際產(chǎn)品里這兩個頻段經(jīng)常搭配使用Sub-1GHz負責(zé)真正的大規(guī)模組網(wǎng)和數(shù)據(jù)回傳網(wǎng)關(guān)下面掛幾十上百個節(jié)點2.4GHz則作為本地交互通道負責(zé)配網(wǎng)、調(diào)試、近距離數(shù)據(jù)讀取。雙頻合一的SoC意味著你不需要搭兩套硬件系統(tǒng)一塊板子、一根天線或者分集天線就能把兩種通信模式都覆蓋到。這也是CC1350在智能家居、資產(chǎn)追蹤、遠距離傳感這類場景里受歡迎的根本原因。3. 開箱SensorTag先跑通一個Demo再想架構(gòu)3.1 從電池到手機App最快路徑很多工程師拿到開發(fā)板的第一反應(yīng)是找數(shù)據(jù)手冊、查引腳定義、看原理圖其實這個套件最適合的打開方式是先當(dāng)成品玩具玩一遍。CC1350 SensorTag裝好電池套件通常是兩節(jié)AAA電池或者使用Micro-USB供電具體以包裝內(nèi)說明為準(zhǔn)手機裝上TI官方的SimpleLink Starter應(yīng)用打開藍牙掃描很快就能看到名為CC1350 SensorTag的設(shè)備。連接進去傳感器數(shù)據(jù)就開始實時滾動了溫度、濕度、氣壓、光照、姿態(tài)角全部可視化呈現(xiàn)。你甚至還能在手機端切換傳感器的上報頻率觀察不同采樣率下的響應(yīng)和功耗變化。這個過程看起來簡單但它傳遞了一個重要信息CC1350的BLE協(xié)議棧和SensorTag的應(yīng)用固件出廠默認就是跑起來的。如果你拿到板子后數(shù)據(jù)刷新正常說明芯片、天線、傳感器、電源管理這一整條鏈路是健康的后續(xù)所有開發(fā)都建立在這個基礎(chǔ)之上。反過來說如果連Demo都跑不通多半是硬件本身的問題排查方向完全不同。3.2 板載傳感器的配置價值SensorTag之所以叫SensorTag是因為它集成了適合物聯(lián)網(wǎng)應(yīng)用驗證的一整套傳感器大致包括紅外溫度傳感器、環(huán)境溫度和濕度傳感器、氣壓傳感器、環(huán)境光傳感器以及加速度計、陀螺儀和磁力計組成的九軸慣性模塊通常還有數(shù)字麥克風(fēng)。這套傳感器陣列對預(yù)研工作非常有用。比如做智慧農(nóng)業(yè)項目想知道溫度和濕度傳感器應(yīng)該選哪款看SensorTag上的選型和數(shù)據(jù)質(zhì)量就能有個概念做可穿戴跌倒檢測需要加速度計的動態(tài)響應(yīng)和功耗數(shù)據(jù)直接在SensorTag上跑算法驗證就行了。如果傳感器型號不合適再換傳感器時只需要關(guān)注接口和驅(qū)動部分射頻和主控方案不需要推倒重來。我個人的建議是在SensorTag上做完傳感器選型評估后再決定是沿用TI的參考設(shè)計還是自己重新畫傳感器小板這樣產(chǎn)品級的硬件設(shè)計風(fēng)險會小很多。3.3 XDS110調(diào)試器的價值很多初學(xué)者可能沒注意到SensorTag開發(fā)板上其實集成了XDS110調(diào)試器。這意味著你不需要額外購買仿真器用一根USB線連上電腦CCS或者IAR就能直接識別芯片進行斷點調(diào)試、變量查看和Flash燒錄。這個細節(jié)在開發(fā)調(diào)試階段很重要。以前做調(diào)試最煩的就是手里的仿真器驅(qū)動不兼容或者版本太老折騰半天連不上目標(biāo)芯片。XDS110是TI目前主推的調(diào)試器方案CCS和IAR對它支持都很好幾乎不需要額外配置就能用。而且XDS110還集成了EnergyTrace等功耗分析能力后面做低功耗優(yōu)化時可以直接用它測電流不需要外接昂貴的功耗分析儀。4. 天線套件不是配件是RF設(shè)計的起點4.1 天線套件里那幾種天線怎么選TI官方的天線套件常見型號是CC-ANTENNA-DK2里面提供的天線形態(tài)覆蓋了物聯(lián)網(wǎng)產(chǎn)品的主流選型。我把它分成幾類來說第一類是PCB天線也就是直接在電路板上用銅箔走線畫出來的天線成本最低適合客流量大的消費類產(chǎn)品但性能受電路板尺寸、外殼塑料材料、周圍器件擺放的影響很大。套件里的評估板實際上是用來做參考性能基準(zhǔn)的直接照抄TI的PCB天線布局往往是最穩(wěn)妥的做法。第二類是陶瓷片狀天線體積小適合對空間要求苛刻的可穿戴設(shè)備但帶寬較窄需要精確匹配而且價格比PCB天線貴不少。第三類是外置天線包括鞭狀天線、偶極子天線等增益通常更高適合網(wǎng)關(guān)、基站這類不介意天線外露的設(shè)備。別小看這些天線的差異它們在不同頻段上的表現(xiàn)差距可能非常大。一款天線在915MHz下效率不錯到了2.4GHz可能諧振點就偏了。天線套件的價值就是讓你不用每種都買來試一套料件基本覆蓋了從消費類到工業(yè)類的典型選擇。4.2 用射頻工具做一次真實鏈路對比拿到天線套件后可以配合SmartRF Studio 7做一次非常直觀的鏈路對比測試。SmartRF Studio是TI官方的射頻調(diào)試工具能直接控制CC1350的射頻收發(fā)參數(shù)做單載波、封包誤碼率等測試。具體方法是準(zhǔn)備兩套CC1350設(shè)備一套固定作為接收端另一套接被測天線作為發(fā)射端。在低速率、窄帶寬配置下用固定長度數(shù)據(jù)包持續(xù)發(fā)射接收端記錄接收信號強度RSSI和誤包率。依次更換天線記錄同一位置下的RSSI數(shù)值你很快就能看到不同天線的實際性能差距有的可能差出6到10dB。別小看這幾個dB在射頻鏈路里3dB就意味著接收靈敏度或者發(fā)射功率差了一倍反映到實際通信距離上可能是幾十米的差別。做這類測試時要控制變量發(fā)射功率、調(diào)制方式、數(shù)據(jù)包長度、測試位置都要保持一致否則數(shù)據(jù)沒有可比性。還有一個容易被忽視的點測試時人體盡量遠離天線因為人體對射頻信號有很強的吸收效應(yīng)會直接拉低測試結(jié)果的可信度。4.3 天線選型最容易翻車的細節(jié)我踩過的天線坑不少這里分享幾條最有價值的經(jīng)驗。天線周圍的地銅皮切割問題。PCB天線下方一般要挖空鋪銅具體尺寸必須嚴(yán)格按照天線的參考設(shè)計來做。很多工程師覺得差個幾毫米無所謂結(jié)果天線諧振頻率偏了幾十兆赫通信距離大打折扣。外殼對天線的影響。塑料外殼如果添加了金屬填料或者噴涂了導(dǎo)電漆天線的等效電長度會發(fā)生變化。做天線評估時最好帶著實際外殼一起測裸板測試結(jié)果只能作為參考。我見過一個項目裸板狀態(tài)通信距離有150米裝上外殼后直接掉到30米最后是改天線匹配才救回來的。雙頻天線的駐波問題。CC1350同時工作在Sub-1GHz和2.4GHz如果采用單天線方案需要天線在低頻段和高頻段都保持良好匹配。很多所謂的雙頻天線實際上是單頻性能好、另一個頻段勉強能用測試時不能只看一個頻段的指標(biāo)兩個頻段都要跑一遍誤包率測試才放心。5. 軟件棧選擇與工程搭建5.1 SDK版本、IDE和工具鏈的選擇用CC1350做開發(fā)軟件棧的起點是TI SimpleLink CC13x0 SDK。這份SDK里包含了BLE協(xié)議棧、TI 15.4 Stack協(xié)議棧、各種射頻示例、外設(shè)驅(qū)動庫和文檔。TI目前給的軟件框架是大一統(tǒng)式的你不需要自己拼接不同協(xié)議的部分直接基于示例工程改就行。開發(fā)IDE方面免費的選擇是CCSCode Composer Studio收費的選擇是IAR Embedded Workbench for ARM。如果你以前用慣了Keil需要提前適應(yīng)一下TI的芯片主要支持CCS和IARKeil對它們的支持不太好。我個人更推薦CCS一方面免費另一方面和TI的開發(fā)工具鏈集成度更高從調(diào)試到功耗分析都能在同一個環(huán)境里完成。SDK的例程也需要導(dǎo)入CCS后編譯直接打開工程文件是最省事的方式。這里要提一個常見問題很多人拿到SensorTag后想直接改里面的出廠固件但SensorTag出廠燒的是TI預(yù)編譯的演示程序改動固件需要先用CCS或IAR把SDK里對應(yīng)的例程編譯好再通過XDS110燒寫進去。如果你修改的是BLE部分燒寫后記得用手機App重新連接測試別把手機端的配對緩存殘留當(dāng)成設(shè)備故障。5.2 BLE配網(wǎng)加Sub-1GHz數(shù)據(jù)回傳的典型架構(gòu)CC1350最常見的一種應(yīng)用架構(gòu)是BLE負責(zé)本地配網(wǎng)和交互Sub-1GHz負責(zé)遠距離多跳數(shù)據(jù)收集。舉個例子一套樓宇環(huán)境監(jiān)測系統(tǒng)幾十個采集節(jié)點分散在各處每個節(jié)點都有一顆CC1350Sub-1GHz鏈路把數(shù)據(jù)傳給網(wǎng)關(guān)。但網(wǎng)絡(luò)初始化、密鑰配置、升級維護這些交互不可能挨個用網(wǎng)關(guān)做這時手機通過BLE單點連接直接對節(jié)點進行配置或讀取。這個方案的本質(zhì)是把數(shù)據(jù)平面和控制平面分開Sub-1GHz網(wǎng)絡(luò)保持低功耗和高可靠性BLE只作為就近維護的本地接口。在SDK的例程里你可以找到類似雙協(xié)議棧的參考實現(xiàn)。要注意的是BLE和Sub-1GHz不能同時收發(fā)CC1350是時分復(fù)用的協(xié)議棧會輪流調(diào)度兩個頻段的射頻活動。設(shè)計時要在二者之間做好優(yōu)先級管理比如掃描BLE連接的時間片要留夠不能讓Sub-1GHz的大流量數(shù)據(jù)擠占了BLE的響應(yīng)時間否則手機端體驗會很差。5.3 低功耗調(diào)試EnergyTrace和實際測試方法開發(fā)低功耗無線設(shè)備不能只看手冊上標(biāo)的睡眠電流一定要自己實測。CCS集成的EnergyTrace工具可以結(jié)合XDS110調(diào)試器分析代碼運行時的電流曲線。具體操作方法是把SensorTag用USB連到調(diào)試器在CCS里開啟EnergyTrace然后在自己的代碼里設(shè)置不同的休眠和喚醒策略對比電流曲線。你很快就能看到實際的電流尖峰出現(xiàn)在哪里比如射頻發(fā)射瞬間、傳感器采樣瞬間、甚至是Flash寫操作。這些都是手冊里不會標(biāo)出來的細節(jié)。還有一種粗測方法用外接精密電阻加示波器測電阻兩端的壓降折算電流雖然不如EnergyTrace方便但在驗證某些極端場景時也很有用。低功耗優(yōu)化不是靠猜要靠數(shù)據(jù)說話這一點在CC1350這一類面向電池供電設(shè)備的芯片上尤其重要。6. 我在評估階段踩過的幾個坑6.1 雙頻天線失諧的坑之前做一款雙頻段的傳感器節(jié)點硬件設(shè)計拿到手之后Sub-1GHz頻段通信距離始終比參考設(shè)計短很多。用網(wǎng)絡(luò)分析儀測試后發(fā)現(xiàn)天線在Sub-1GHz頻段的回波損耗比預(yù)期差諧振點偏移了。最后查出來的原因是原理圖照抄的TI參考設(shè)計但PCB布局變了。參考設(shè)計里天線附近沒有走線而我的板子因為結(jié)構(gòu)限制一根I2C信號線恰好橫穿天線下方這條走線上的寄生電容把天線的諧振點拉跑了。處理辦法是調(diào)整走線位置加大天線凈空區(qū)同時在天線匹配網(wǎng)絡(luò)上微調(diào)了一個電感的值。這提醒我天線區(qū)域的布局必須當(dāng)成射頻電路來對待而不是普通數(shù)字信號布線。6.2 例程編譯和燒錄的地址配置問題使用CCS導(dǎo)入SDK例程時最容易遇到的問題之一就是編譯鏈接時報錯提示Flash或者RAM溢出。這種問題多半是SDK版本和CCS版本不匹配導(dǎo)致的或者工程使用了錯誤的芯片型號配置文件。我在第一次用CC1350時導(dǎo)入BLE例程后直接編譯報了一大堆錯誤。后來發(fā)現(xiàn)問題是CCS里默認的編譯工具鏈選的是TI編譯器但工程實際配套的庫文件是用GCC編譯的。切到GCC工具鏈后編譯一次通過。建議新手拿到SDK后先打開Release Notes看官方推薦的IDE和編譯器版本組合別用最新版IDE盲目嘗鮮。還有一個容易踩的坑是燒錄地址。SensorTag出廠固件里有一部分是Bootloader和校準(zhǔn)數(shù)據(jù)燒寫自己編譯的固件時如果用默認的擦除全片模式有可能把校準(zhǔn)信息擦掉導(dǎo)致射頻性能下降甚至無法啟動。一定要按照TI的燒錄說明操作選擇保留特定區(qū)域的方式別用那種粗暴的全片擦除模式。6.3 頻譜環(huán)境干擾的判斷在辦公室環(huán)境里測試CC1350的Sub-1GHz通信經(jīng)常出現(xiàn)數(shù)據(jù)包隨機丟失但始終找不到原因。后來帶著設(shè)備去樓頂空曠處測同樣的配置通信距離和誤包率都恢復(fù)了正常。這說明問題不在設(shè)備而在現(xiàn)場環(huán)境。Sub-1GHz頻段并非完全干凈不同的無線抄表、工業(yè)設(shè)備、甚至部分安防系統(tǒng)都在這個頻段工作。做鏈路評估時建議先用頻譜儀或者SmartRF Studio里自帶的頻譜掃描功能看一遍現(xiàn)場環(huán)境找準(zhǔn)信噪比良好的頻點再測試。如果在辦公室測出來的結(jié)果很差但在陽臺或者室外正常那基本就是環(huán)境干擾的問題不需要懷疑自己的硬件設(shè)計。做射頻相關(guān)的開發(fā)最大的敵人不是技術(shù)難度而是不確定感。把環(huán)境因素、天線因素、布局因素逐一排除問題通常不會比想象中復(fù)雜。最后再分享一個我自己的習(xí)慣拿到SensorTag這類套件先別急著寫產(chǎn)品代碼用官方Demo把傳感器、BLE、射頻收發(fā)各跑一遍做好測試記錄存檔。這些數(shù)據(jù)就是你后續(xù)產(chǎn)品設(shè)計的第一手基線。很多項目做到后面回頭翻這些基礎(chǔ)測試數(shù)據(jù)往往比新做的專項測試更有說服力。這套CC1350 SensorTag和天線套件的組合就是幫你把這一步前置到最省力狀態(tài)的工具。