
最近LoRa MCU圈子里有條消息挺耐人尋味一款面向LoRa應(yīng)用的MCU新增了48引腳的封裝選項。做物聯(lián)網(wǎng)終端的工程師應(yīng)該都懂以前這類芯片大多是32腳甚至更緊湊的封裝外設(shè)資源緊巴巴的想接個段碼LCD、掛片外部Flash、多拉兩路傳感器經(jīng)常得對著引腳反復糾結(jié)怎么復用?,F(xiàn)在多了48腳的選擇意味著單片能干的活更多了設(shè)計余量也大了這套玩法值得掰開揉碎聊一聊。這篇內(nèi)容不是簡單的新聞轉(zhuǎn)述而是從一個實際做過LoRa節(jié)點的硬件工程師視角講講這顆芯片的定位、封裝變化帶來的真實差異、硬件設(shè)計要注意的坑、軟件適配的關(guān)鍵點以及幾個典型應(yīng)用場景。不管你是在評估下一款產(chǎn)品方案還是剛開始接觸LoRa MCU這篇文章應(yīng)該都能給你一些參考。1. 這則消息到底在說什么為什么封裝選項值得關(guān)注1.1 一句話講清楚LoRa MCU的定位LoRa是低功耗廣域網(wǎng)LPWAN里非常主流的一種無線調(diào)制技術(shù)核心優(yōu)勢就兩個遠和省。遠是因為它的接收靈敏度可以做到-137dBm甚至更低是普通FSK方案很難企及的水平省是因為它的調(diào)制方式對信噪比要求低發(fā)射功率不需要很高就能把數(shù)據(jù)傳出去再加上休眠策略電池供電跑個三五年是常態(tài)。LoRa MCU簡單說就是把LoRa收發(fā)器和一顆MCU內(nèi)核封裝到同一個芯片里。過去很長一段時間常見方案是外置LoRa射頻芯片加一顆通用MCU兩顆芯片組在一起才能干活BOM成本高、PCB面積大還多一道匹配調(diào)試的工序。集成方案把這兩顆芯片合成一顆外圍電路更簡單開發(fā)周期也短。這個市場里有很多不同定位的芯片有些主打超低功耗有些主打多協(xié)議支持有些主打豐富的外設(shè)資源。而封裝選項則是產(chǎn)品組合里非常關(guān)鍵的一環(huán)。1.2 封裝選項為什么值得關(guān)注很多工程師選芯片時只盯著Flash大小、RAM容量、內(nèi)核主頻封裝常常被忽略。但封裝決定了你這塊板子最后能用多少引腳外設(shè)資源能不能全部施展出來走線布局是否順滑甚至決定了整個產(chǎn)品的BOM成本。一顆芯片在32引腳封裝下GPIO數(shù)量可能只有20個左右ADC通道、串口、SPI、I2C這些外設(shè)都存在引腳復用關(guān)系。你要是想同時掛溫濕度傳感器、氣壓傳感器、GPS模塊、外部Flash和一個顯示屏引腳立刻就不夠用了。一旦引腳不夠要么把外設(shè)砍掉降級功能要么只能通過IO擴展芯片來救場成本和復雜度都上去了。48引腳封裝的引入解決的核心痛點就是外設(shè)擴展能力。它不改變芯片的內(nèi)核性能和無線指標但給了你更多的可用引腳、更多的ADC通道、更多的串口讓一顆芯片能覆蓋更復雜、更完整的產(chǎn)品設(shè)計。這不是一個簡單的多了幾個腳的問題而是把一顆本來只能做簡單采集節(jié)點的芯片擴展成了能做完整邊緣設(shè)備的平臺。2. 48引腳到底多了什么少了什么2.1 從32腳到48腳資源盤點我們先做個大致對比。不同廠商的具體型號引腳定義會有差異但資源擴充的思路是共通的。以典型的LoRa MCU產(chǎn)品線為例32引腳和48引腳的差異大致如下資源項目32引腳封裝48引腳封裝多出來的意義可用GPIO20個左右36個左右能掛更多外設(shè)擴展余量明顯ADC通道8個左右12個以上多路模擬采集不用來回切換串口UART2個3-4個可同時接傳感器、調(diào)試口、外部模塊SPI1個2個可同時掛Flash、顯示屏、其他SPI設(shè)備I2C1個1-2個多路I2C傳感器更方便定時器基本定時器通用定時器額外增加高級定時器支持更多PWM輸出和捕獲射頻引腳RFI/RFORFI/RFO無線部分不變從表里能看出來從32腳到48腳最核心的變化是GPIO數(shù)量翻了接近一番各種通信接口從只能選一個用變成了可以同時用。對項目的影響是非常直接的。2.2 多出來的引腳在設(shè)計中怎么用拿一個常見的物聯(lián)網(wǎng)終端舉例節(jié)點需要采集溫濕度、土壤濕度、光照強度還要把數(shù)據(jù)通過LoRa上報同時預留一個串口給調(diào)試再用一個段碼LCD顯示本地數(shù)據(jù)。在32引腳封裝下你要開始做減法ADC采集三路傳感器段碼LCD需要6到8個IO還有SPI、I2C串口調(diào)試口LoRa跑起來可能還需要幾個GPIO控制射頻開關(guān)或LED指示狀態(tài)。20個GPIO真的不夠分配大概率要砍掉本地顯示或者減少傳感器數(shù)量。但如果你用的是48引腳版本36個GPIO完全夠用甚至還能預留兩三個作為外部按鍵輸入和電池電量檢測。從我自己的經(jīng)驗來看多出來的IO最大的價值不是剛好夠用而是留有余地。硬件設(shè)計這件事最怕的就是做板之前覺得引腳夠了PCB畫到一半發(fā)現(xiàn)沖突最后只能飛線或者改版。引腳余量大的封裝對這種風險是最好的緩沖。2.3 48引腳并不是越大越好既然48腳這么好那把所有的設(shè)計都改成48腳行不行當然不行。封裝變大帶來的代價是實實在在的成本增加。芯片本身可能貴幾毛到幾塊錢加上PCB面積增大、鉆孔數(shù)量增多整個BOM和制板成本都會上升。PCB面積變大。很多LoRa節(jié)點設(shè)計成小尺寸模組板面積高一點都很難受48封裝的面積比32封裝明顯大一圈。引腳間距變細。48引腳封裝通常是QFN形式間距可能只有0.5mm甚至0.4mm對焊接工藝和PCB加工精度要求更高手工焊接難度也更大。功耗風險。引腳越多如果軟件配置不當漏電通路越多待機功耗越難做低。所以選封裝本質(zhì)上是在功能和約束之間做平衡。如果你的產(chǎn)品是一個只采集兩路溫度、每天上報一次數(shù)據(jù)的傳感器節(jié)點32引腳完全夠用沒必要為了資源充足而多花錢。但如果你想做的是一個帶本地交互、多傳感器、甚至還有邊緣控制邏輯的復雜終端48引腳就是更穩(wěn)妥的選擇。3. 拿到48引腳樣品后硬件設(shè)計要注意的幾個細節(jié)3.1 電源和地的布局順序不管引腳多少LoRa MCU的電源設(shè)計都是重中之重。芯片里同時有數(shù)字內(nèi)核、模擬外設(shè)和射頻收發(fā)器電源噪聲會直接影響射頻性能。拿到48引腳封裝的分裝圖后第一步是把所有電源引腳和地引腳在PCB原理圖上標出來。一般芯片會有數(shù)字電源VDD、模擬電源VDDA和射頻電源VDD_RF這些電源引腳一定要分別接獨立的去耦電容不能為了省事共用一個電容。我常用的做法是每個電源引腳旁邊放一顆0.1uF的陶瓷電容高頻去耦用然后在PCB板的電源入口處放一顆1uF到10uF的大容量電容做低頻穩(wěn)壓。VDDA和VDD_RF這兩路還要加磁珠或者π型濾波器把數(shù)字噪聲隔離開。地引腳則盡量通過過孔直接打到底層完整地平面不要繞線。3.2 RF部分的設(shè)計天線匹配不是玄學LoRa射頻部分的設(shè)計很多新手最容易出問題的地方是天線的匹配電路。芯片的RF輸出引腳在最佳匹配情況下才能輸出最大功率匹配不對功率能掉好幾個dB通信距離直接縮水一大截。典型的匹配網(wǎng)絡(luò)是π型結(jié)構(gòu)在RF引腳和天線之間放兩個電容和一個電感電感并聯(lián)到地兩個電容串聯(lián)在信號路徑上。具體數(shù)值不能照搬手冊因為每一款天線和PCB布局都會影響等效阻抗。正確流程是先根據(jù)參考設(shè)計放初始值然后用手持頻譜儀或者矢量網(wǎng)絡(luò)分析儀測量S11參數(shù)邊看邊調(diào)整電容電感值盡量讓諧振點在目標頻段中心。如果沒有儀器也可以先按芯片數(shù)據(jù)手冊里的推薦值搭但要預留焊盤位置方便后期調(diào)整。還要注意天線區(qū)域的PCB下層必須凈空不能鋪銅否則會嚴重影響輻射效率和駐波比。3.3 新增的IO別浪費每個引腳都要有說法48引腳版本多出來的IO在原理圖設(shè)計階段就要規(guī)劃清楚不要等畫PCB的時候才來想。我的原則是每個引腳在原理圖上必須有明確的用途說明比如接溫濕度傳感器SCL接LCD背光PWM接外部中斷按鍵等。暫時用不到的GPIO也要做處理要么配置為模擬輸入模式關(guān)閉數(shù)字輸入緩沖要么通過電阻下拉到地避免懸空狀態(tài)引入不穩(wěn)定的漏電流。另外特別要注意引腳復用沖突。芯片的串口、SPI、I2C一般都映射到多組引腳上雖然48引腳的映射方式更靈活但依然存在多個外設(shè)搶同一組引腳的可能性。建議在原理圖階段就把所有外設(shè)的引腳分配整理成表格逐項核對避免到了畫板階段才發(fā)現(xiàn)串口2和SPI1的引腳重疊。4. 軟件層面的適配與調(diào)優(yōu)從32引腳遷移到48引腳4.1 引腳定義、時鐘與外設(shè)初始化如果你之前用32引腳版本開發(fā)過一套代碼切換到48引腳版本時大部分底層驅(qū)動邏輯不用推翻重來但要重點檢查兩部分芯片頭文件里的引腳宏定義以及外設(shè)初始化函數(shù)的復用配置。以典型的C代碼為例初始化一個外部傳感器的I2C引腳大致是這樣/* 使能GPIO與I2C外設(shè)時鐘 */ __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_I2C1_CLK_ENABLE(); /* 配置PB6為I2C1_SCLPB7為I2C1_SDA */ GPIO_InitStruct.Pin GPIO_PIN_6 | GPIO_PIN_7; GPIO_InitStruct.Mode GPIO_MODE_AF_OD; GPIO_InitStruct.Pull GPIO_PULLUP; GPIO_InitStruct.Speed GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Alternate GPIO_AF4_I2C1; HAL_GPIO_Init(GPIOB, GPIO_InitStruct);在48引腳封裝下引腳復用表會有更大靈活性要仔細看數(shù)據(jù)手冊里的AF映射表確認你選的引腳確實支持對應(yīng)的復用功能。這個細節(jié)在32引腳版本上可能不會出問題因為可選引腳少但48引腳版本引腳多了誤配AF的風險反而更高。4.2 LoRa通信參數(shù)怎么配功耗怎么調(diào)LoRa通信參數(shù)配置直接決定通信距離、速率和功耗這是LoRa應(yīng)用的核心。主要調(diào)節(jié)的參數(shù)有擴頻因子SF、帶寬BW和編碼率CR。參數(shù)可選值對性能的影響擴頻因子SFSF7-SF12SF越大靈敏度越高、速率越慢帶寬BW125/250/500 kHz帶寬越大速率越高、靈敏度越低編碼率CR4/5到4/8編碼率越高抗干擾越強、有效數(shù)據(jù)率越低實際調(diào)優(yōu)時要遵循一個原則在滿足數(shù)據(jù)上報速率的前提下盡量用最高的擴頻因子和最小的帶寬這樣通信距離最遠、接收靈敏度最好。比如一個每小時上報一次的土壤墑情節(jié)點數(shù)據(jù)量很小用SF12、125kHz帶寬完全沒問題雖然空口速率也就300bps左右但換來的覆蓋能力是其他方案比不了的。軟件上還要關(guān)注的功耗策略。LoRa MCU的低功耗主要靠睡眠模式實現(xiàn)常見做法是節(jié)點大部分時間處于Sleep狀態(tài)通過RTC定時喚醒或者通過射頻前導碼利用CAD模式檢測空中信號喚醒數(shù)據(jù)收發(fā)完成后立刻重新進入睡眠。CAD模式的電流一般在幾十微安級別遠低于全速接收的十幾毫安級別是低功耗LoRa監(jiān)聽最實用的方式。4.3 外設(shè)增多后中斷和DMA的規(guī)劃48引腳封裝帶來了更多外設(shè)也帶來了更多中斷源。多路傳感器采集、多路串口收發(fā)、定時器中斷如果都用CPU輪詢主循環(huán)會越來越忙實時性也會變差。這個時候就要規(guī)劃好中斷優(yōu)先級和DMA通道。我的習慣是把時間敏感的射頻收發(fā)和定時器中斷設(shè)為高優(yōu)先級傳感器采集通過定時器觸發(fā)ADC的DMA轉(zhuǎn)換轉(zhuǎn)換完成后DMA中斷再通知主循環(huán)處理這樣CPU不用一直等在ADC轉(zhuǎn)換上。串口接收也盡量用DMA加空閑中斷的方式能顯著減少CPU開銷。5. 典型應(yīng)用場景實戰(zhàn)分析5.1 智慧農(nóng)業(yè)多傳感器節(jié)點這類節(jié)點是LoRa最經(jīng)典的應(yīng)用方向。一個典型的農(nóng)業(yè)節(jié)點要采集土壤溫濕度、土壤電導率、空氣溫濕度、光照強度還要把數(shù)據(jù)定時上報給網(wǎng)關(guān)如果采用太陽能供電還要實時監(jiān)測電池電壓和太陽能板充電狀態(tài)。48引腳封裝的ADC通道更多可以把這些模擬傳感器每個都掛獨立的ADC通道不用來回換通道采樣精度和穩(wěn)定性都會更好。多出來的UART可以專門接一個外置的雨量計或者風速儀不干擾主數(shù)據(jù)鏈路。代碼結(jié)構(gòu)也會清爽很多不用整天搞引腳復用輪換。我之前做農(nóng)業(yè)項目的時候32腳方案為了接四路土壤傳感器被迫用了一個I2C多路復用芯片雖然解決了通道不夠的問題但多一顆芯片就多一份故障率現(xiàn)場維護的時候還特別難排查。如果當時有48腳版本這個復用芯片完全可以省掉。5.2 工業(yè)數(shù)據(jù)采集與邊緣控制工業(yè)場景對MCU的外設(shè)資源要求更高。一個工業(yè)采集終端往往要同時采集電壓、電流、溫度等多路模擬量通過串口讀取智能儀表數(shù)據(jù)用PWM控制閥門或報警器還要通過LoRa把數(shù)據(jù)回傳到監(jiān)控中心。48引腳封裝的高級定時器可以輸出多路PWM配合新增的GPIO能實現(xiàn)更復雜的本地控制邏輯。即使網(wǎng)關(guān)暫時掉線節(jié)點也能按照預設(shè)的閾值獨立完成本地控制不會因為無線斷連就整個系統(tǒng)癱瘓。這種邊緣控制能力正是這類IoT終端往工業(yè)場景滲透時的核心競爭力。5.3 智慧城市、表計和資產(chǎn)追蹤除了上面的農(nóng)業(yè)和工業(yè)48引腳LoRa MCU在其他場景的應(yīng)用也非常自然。智慧停車的地磁檢測器需要額外的GPIO來連接地磁傳感器和狀態(tài)指示燈智能水表氣表需要給LCD驅(qū)動、閥門控制、流量脈沖計數(shù)留足引腳資產(chǎn)追蹤器要同時連接GPS模塊、加速度傳感器、運動檢測電路這些場景對引腳數(shù)量的要求都很明確。可以說凡是需要LoRa通信同時又有多種傳感、顯示、交互需求的產(chǎn)品48引腳版本都能提供一個更從容的硬件基礎(chǔ)。6. 常見問題與調(diào)試經(jīng)驗6.1 通信距離上不去先別急著換芯片我見過不少團隊一上來就說LoRa距離不行最后排查發(fā)現(xiàn)根本原因是天線匹配和布局出了問題。如果你的節(jié)點實測距離明顯低于理論值按下面的順序排查檢查天線區(qū)域是否凈空天線正下方和周圍有沒有鋪銅、走線、金屬件遮擋。用矢量網(wǎng)絡(luò)分析儀測天線端口的S11看駐波比是否在1.5以下。檢查匹配網(wǎng)絡(luò)元件是否焊接正確、規(guī)格是否為高頻電容電感。檢查發(fā)射功率寄存器配置是不是被軟件意外降低了。檢查接收端是否處于多路徑干擾嚴重的環(huán)境或者網(wǎng)關(guān)天線是否安裝在金屬桿附近。很多時候距離不夠是因為天線被憋住了跟LoRa調(diào)制本身沒多大關(guān)系。6.2 待機電流下不來多半是引腳和時鐘的鍋低功耗項目最頭疼的調(diào)試就是待機電流偏高。數(shù)據(jù)手冊上寫的睡眠電流是1uA實際一測10uA那就要懷疑以下幾個方面未使用的GPIO懸空。懸空引腳會形成不穩(wěn)定的漏電路徑要統(tǒng)一配置為模擬輸入或輸出低。外設(shè)時鐘沒關(guān)。進入睡眠前要逐個關(guān)閉ADC、SPI、UART、I2C的時鐘只保留喚醒源所需的定時器或外部中斷。DC-DC模式?jīng)]配置。很多LoRa MCU內(nèi)部有DC-DC和LDO兩種供電模式DC-DC模式效率更高內(nèi)部穩(wěn)壓器進入低功耗模式可以節(jié)省大量電流。外部傳感器仍然在供電。傳感器不工作的時候如果還掛在電源上那電流當然下不來建議通過MOS管關(guān)閉傳感器供電。6.3 引腳復用沖突畫板前必須整理成表這個坑我在工程里踩過不止一次。芯片引腳往往同時承載多個功能比如同一個引腳既能做UART_TX又能做SPI_SCK還是某個定時器的PWM輸出。你功能規(guī)劃得再好如果不做一張完整的引腳分配表畫板時很容易出現(xiàn)這路信號被另一路外設(shè)占用了的情況。我的建議是在原理圖設(shè)計的初始階段就按下面的格式整理一張引腳分配表引腳號分配功能復用配置備注1傳感器SCLI2C1_SCL外部上拉4.7k2LCD背光TIM1_CH1PWM控制3調(diào)試串口TXUART2_TX僅調(diào)試用............所有功能確認完之后再開始畫原理圖。這套流程看起來多花了一點時間實際能省掉后面大量的改板和維護成本。寫在最后我在實際做LoRa產(chǎn)品開發(fā)時最深刻的體會是選型階段多花一點時間后面就能少加一個月的班。曾經(jīng)的現(xiàn)實是方案評估時經(jīng)常因為引腳不夠用而被迫降級功能或者額外增加IO擴展芯片去湊需求。48引腳封裝的出現(xiàn)等于給了開發(fā)團隊一個更寬裕的選擇空間只要你評估清楚自己的應(yīng)用到底需要多少引腳、什么外設(shè)選對封裝版本整個設(shè)計和調(diào)試過程的體驗會順暢很多。特別是如果你正在做的是一個功能較多的電池供電終端這個新封裝確實值得認真考慮。