產(chǎn)替代實(shí)戰(zhàn):從內(nèi)核選型到量產(chǎn)備貨全解析)
1. 項(xiàng)目背景與選型邏輯1.1 為什么是8位RISC18而不是51核或ARM核前陣子接了一個(gè)家電控制器項(xiàng)目量大、成本壓力大、交期又緊客戶點(diǎn)名要求“能用國(guó)產(chǎn)就別用進(jìn)口”。一開(kāi)始團(tuán)隊(duì)里有人慣性選了8051核的國(guó)產(chǎn)芯片理由很簡(jiǎn)單熟悉、資料多、網(wǎng)上例程一抓一大把。但真正把程序框架搭起來(lái)之后發(fā)現(xiàn)51核在幾個(gè)關(guān)鍵點(diǎn)上其實(shí)并不舒服IO翻轉(zhuǎn)速度不夠快PWM分辨率上不去中斷響應(yīng)延遲抖動(dòng)偏大做電機(jī)控制或調(diào)光調(diào)色時(shí)候總差那么一點(diǎn)。換ARM核吧性能當(dāng)然好但對(duì)應(yīng)的是封裝更大、物料成本更高、硬件設(shè)計(jì)復(fù)雜度增加對(duì)這類“電飯煲、風(fēng)扇、墻壁開(kāi)關(guān)”級(jí)別的產(chǎn)品來(lái)說(shuō)完全屬于殺雞用牛刀。后來(lái)我們把目光鎖定在8位RISC18內(nèi)核上。這是一類精簡(jiǎn)指令集的8位單片機(jī)指令集比CISC的8051干凈得多絕大多數(shù)指令單周期執(zhí)行主頻不需要拉太高就能獲得不錯(cuò)的實(shí)時(shí)響應(yīng)。8位RISC核的Flash、RAM、外設(shè)資源雖然不如32位但做中小型控制類應(yīng)用綽綽有余。最關(guān)鍵的是這類芯片的單價(jià)、PCB面積、功耗控制都是實(shí)實(shí)在在的優(yōu)勢(shì)在消費(fèi)電子、小家電、智能家居、電動(dòng)工具等領(lǐng)域一直是出貨量最大的基本盤(pán)。我個(gè)人的看法是選什么樣的核先看產(chǎn)品屬性和量產(chǎn)規(guī)模不要被“ARM萬(wàn)能論”帶著走。一個(gè)溫控器、一個(gè)定時(shí)插座主頻不需要96MHzFlash也不需要512KB。8位RISC18在這個(gè)區(qū)間的能效比和綜合成本確實(shí)很能打尤其適合每年出貨幾十萬(wàn)、上百萬(wàn)片的產(chǎn)品。1.2 供應(yīng)商評(píng)估為什么優(yōu)先對(duì)接英銳恩國(guó)產(chǎn)8位單片機(jī)廠商其實(shí)不少有老牌的、有新晉的真的到了“量產(chǎn)供貨商推薦”這一步我不太看宣傳冊(cè)而是看四件事供貨穩(wěn)定性、芯片一致性、開(kāi)發(fā)工具鏈、售后響應(yīng)速度。英銳恩進(jìn)入我的視野首先是因?yàn)樗腞ISC18內(nèi)核產(chǎn)品線定位非常清晰不貪多就做精。它家的芯片主打高性價(jià)比和“兼容性遷移”簡(jiǎn)單說(shuō)就是讓原本用進(jìn)口8位RISC單片機(jī)的方案能用更低的成本、更短的時(shí)間遷移過(guò)來(lái)。我特意做過(guò)對(duì)比測(cè)試把原來(lái)某進(jìn)口芯片的方案移植到英銳恩RISC18上改動(dòng)的代碼量比我預(yù)想的小很多這在國(guó)內(nèi)8位單片機(jī)陣營(yíng)里是很大的加分項(xiàng)。其次是供貨。疫情之后的芯片行情大家都有目共睹進(jìn)口物料交期動(dòng)輒十幾周甚至二十幾周而國(guó)產(chǎn)芯片的優(yōu)勢(shì)就是本地化供貨。英銳恩在量產(chǎn)項(xiàng)目的交期、備貨、批次管理方面經(jīng)過(guò)了我們幾個(gè)同行客戶的驗(yàn)證大貨交期相對(duì)穩(wěn)定。做量產(chǎn)項(xiàng)目的人都懂方案再好斷供等于零。第三個(gè)是技術(shù)支持。英銳恩工程師對(duì)自家芯片的寄存器、外設(shè)、時(shí)序細(xì)節(jié)很熟不像有些廠商的FAE只會(huì)發(fā)數(shù)據(jù)手冊(cè)。對(duì)接過(guò)程中我們遇到幾個(gè)批量一致性的問(wèn)題對(duì)方直接拉上原廠應(yīng)用工程師一起排查給了實(shí)質(zhì)性的建議。這種支持力度在中低端8位機(jī)供應(yīng)鏈里不是標(biāo)配。1.3 選型前的成本與供應(yīng)鏈分析做量產(chǎn)項(xiàng)目選型不只是看一顆芯片多少錢(qián)要看整體擁有成本。我列過(guò)一筆賬以一顆8位MCU為例物料成本、PCB面積成本、燒錄工時(shí)、不良率返修成本、不同批次間的重新驗(yàn)證成本、軟件適配成本全部加起來(lái)才是真實(shí)的單顆成本。RISC18架構(gòu)的優(yōu)勢(shì)在于功耗控制靈活休眠電流做到很低外圍電路簡(jiǎn)潔需要的無(wú)源器件少PCB布線也容易。英銳恩的引腳定義兼容常見(jiàn)封裝直接把原有PCB的絲印調(diào)整一下就能用省去了重新畫(huà)板、重新過(guò)EMC測(cè)試的時(shí)間和費(fèi)用。所以在項(xiàng)目立項(xiàng)階段我把“優(yōu)先對(duì)接英銳恩”寫(xiě)進(jìn)了技術(shù)建議書(shū)不是迷信某個(gè)品牌而是基于性能和供貨建的選型池。結(jié)果是這個(gè)決策幫助我們提前兩周完成EVT驗(yàn)證小批量一次通過(guò)。后面文章里我會(huì)從芯片資源、開(kāi)發(fā)工具、量產(chǎn)流程、問(wèn)題排查幾個(gè)維度詳細(xì)展開(kāi)把我們?cè)陧?xiàng)目中真實(shí)踩過(guò)的路、趟過(guò)的坑都寫(xiě)出來(lái)給正在做同等選型評(píng)估的朋友一個(gè)參考。2. RISC18內(nèi)核結(jié)構(gòu)與芯片資源解析2.1 精簡(jiǎn)指令集到底帶來(lái)什么實(shí)質(zhì)收益很多人對(duì)“精簡(jiǎn)指令集”無(wú)感覺(jué)得都是廠家宣傳噱頭。我在實(shí)際調(diào)電機(jī)驅(qū)動(dòng)時(shí)體會(huì)非常明顯RISC18采用定長(zhǎng)指令單周期執(zhí)行比例很高同頻下比傳統(tǒng)51核的指令效率高出一截。這意味著什么意味著你可以用更低的主頻完成同樣的任務(wù)功耗和EMI隨之下降或者反過(guò)來(lái)同樣的主頻下獲得更高的實(shí)時(shí)性能。舉個(gè)例子。做一個(gè)直流無(wú)刷電機(jī)六步換向核心是靠定時(shí)器中斷精確控制換向時(shí)刻。51核在做乘除法、查表、位操作時(shí)指令周期拖沓一旦中斷里再疊加上ADC讀取和速度環(huán)計(jì)算抖動(dòng)就容易超標(biāo)。而RISC18的單周期指令和正交IO操作讓中斷服務(wù)程序能保持在一個(gè)確定的時(shí)間窗口內(nèi)完成換向抖動(dòng)控制在可接受范圍電機(jī)噪音和電流尖峰明顯改善。還有一個(gè)工程細(xì)節(jié)RISC18的位操作能力比較強(qiáng)像“置位某引腳”“翻轉(zhuǎn)某引腳”這類操作可以用一條指令完成不像多數(shù)CISC芯片要先讀回、再修改、再寫(xiě)回。這在模擬串口、單總線協(xié)議這類需要精確時(shí)序的場(chǎng)合特別有用代碼體積也更緊湊。當(dāng)然不是說(shuō)RISC18就沒(méi)有短板。8位機(jī)的數(shù)據(jù)帶寬、內(nèi)存尋址空間天然有限做復(fù)雜算法、跑RTOS會(huì)很吃力。選型時(shí)一定要把“這個(gè)產(chǎn)品到底需要多少Flash、多少RAM、多少運(yùn)算量”想明白匹配到合適的資源檔位。2.2 Flash/RAM/EEPROM常見(jiàn)規(guī)格與選型英銳恩RISC18系列覆蓋的規(guī)格跨度我了解到的常見(jiàn)配置大致在Flash從2KB到8KB左右、RAM從128B到512B區(qū)間部分型號(hào)帶獨(dú)立EEPROM或DataFlash。不同封裝下管腳數(shù)從8腳到20腳不等。做玩具、簡(jiǎn)單控制器的用低配就夠做帶數(shù)碼管顯示、多路ADC采樣、復(fù)雜協(xié)議棧的需要高配。我用一個(gè)對(duì)比表列一下常見(jiàn)的資源檔位和適配產(chǎn)品供選型參考。具體型號(hào)參數(shù)以官方數(shù)據(jù)手冊(cè)為準(zhǔn)我不在這里貼精確型號(hào)免得誤導(dǎo)。資源檔位Flash容量RAM容量典型封裝適配產(chǎn)品舉例入門(mén)檔2KB左右128B左右SOP8 / DIP8小家電單按鍵控制、LED夜燈、簡(jiǎn)單定時(shí)器主流檔4KB左右256B左右SOP16 / SOP20溫控器、風(fēng)扇調(diào)速、煙霧報(bào)警器、充電器擴(kuò)展檔8KB左右512B左右SOP20 / SSOP20帶LCD顯示的電控板、多路傳感器采集、協(xié)議轉(zhuǎn)換實(shí)際項(xiàng)目里我一般把存儲(chǔ)預(yù)算放寬到估算值的1.3倍到1.5倍。因?yàn)楹笃诖蟾怕室庸δ?、加保護(hù)邏輯、上電初始化時(shí)多寫(xiě)幾段自檢代碼。省Flash省出來(lái)的“體面感”會(huì)在產(chǎn)品量產(chǎn)三個(gè)月后變成反復(fù)刪代碼的噩夢(mèng)。2.3 定時(shí)器、PWM、ADC、比較器這些外設(shè)的真實(shí)水平做控制類產(chǎn)品MCU的“計(jì)算能力”反而不是第一位的外設(shè)的豐富程度和精度才是。RISC18類的產(chǎn)品線里比較通用的配置是8位或16位定時(shí)器若干路帶硬件PWM輸出10位ADC模擬比較器以及UART/SPI/I2C等常見(jiàn)通信接口。我特別關(guān)注的是三個(gè)細(xì)節(jié)。一是PWM的分辨率和死區(qū)控制。做LED調(diào)光或電機(jī)驅(qū)動(dòng)如果PWM位數(shù)不夠低亮度檔位會(huì)出現(xiàn)可見(jiàn)閃爍電機(jī)低速會(huì)很“咯噔”。RISC18系列里有些型號(hào)支持更高分辨率的PWM并對(duì)互補(bǔ)輸出帶死區(qū)控制做半橋或H橋驅(qū)動(dòng)會(huì)省掉一部分外部邏輯電路。二是ADC的參考電壓和轉(zhuǎn)換速度。10位ADC在消費(fèi)級(jí)產(chǎn)品里足夠用關(guān)鍵是參考電壓要穩(wěn)定、采樣保持時(shí)間要可配置。英銳恩的ADC在低阻抗信號(hào)源下表現(xiàn)還不錯(cuò)但高阻信號(hào)源記得加跟隨器否則采樣值會(huì)偏。三是比較器的用法。很多人只用ADC忽略了模擬比較器。實(shí)際上做電池電壓監(jiān)測(cè)、過(guò)流保護(hù)、過(guò)零檢測(cè)時(shí)比較器比“ADC連續(xù)采樣軟件判斷”快得多而且不占CPU。我們做電機(jī)驅(qū)動(dòng)時(shí)就用比較器做硬件級(jí)過(guò)流閾值保護(hù)比純軟件響應(yīng)快了不是一點(diǎn)半點(diǎn)。2.4 封裝、工作電壓與溫度范圍對(duì)項(xiàng)目的影響選封裝這件事不寫(xiě)代碼的工程師往往低估了它對(duì)成本和可靠性的影響。英銳恩RISC18系列的常見(jiàn)封裝覆蓋SOP8、SOP16、SOP20、DIP8、SSOP20等。貼片封裝適合自動(dòng)貼片量產(chǎn)直插封裝適合手工打樣和簡(jiǎn)單的DIY項(xiàng)目。我自己的習(xí)慣是只要產(chǎn)品能上貼片就絕不選直插手工焊樣板只是暫時(shí)的產(chǎn)線貼片才是長(zhǎng)期歸宿。工作電壓方面8位機(jī)普遍支持寬壓輸入比如2.0V到5.5V這對(duì)電池供電產(chǎn)品非常友好。需要注意的是不同主頻下最低工作電壓有差異高主頻往往需要更高的電壓低電壓時(shí)只能降頻運(yùn)行。當(dāng)初我們?cè)?.4V低壓產(chǎn)品上直接把內(nèi)部RC拉到最高頻率結(jié)果低壓?jiǎn)?dòng)時(shí)偶爾復(fù)位后來(lái)按照數(shù)據(jù)手冊(cè)里的電壓-頻率曲線降頻問(wèn)題徹底消失。溫度范圍也要提前確認(rèn)。消費(fèi)電子0到70℃就夠但戶外設(shè)備、汽車(chē)周邊最好選工業(yè)級(jí)否則高溫下電流漏電、低溫下晶振起振困難都會(huì)成為批量故障。英銳恩整條線我目測(cè)以商業(yè)級(jí)為主做戶外設(shè)備的要跟原廠確認(rèn)清楚不要想當(dāng)然。3. 開(kāi)發(fā)環(huán)境與程序設(shè)計(jì)要點(diǎn)3.1 開(kāi)發(fā)工具鏈編譯器、燒錄器和調(diào)試心得8位RISC18的開(kāi)發(fā)工具鏈相對(duì)簡(jiǎn)單上手難度遠(yuǎn)低于ARM核。常見(jiàn)的方式是官方提供的IDE環(huán)境配合對(duì)應(yīng)的C編譯器。同時(shí)這類芯片也支持匯編開(kāi)發(fā)。我個(gè)人的建議是除非你對(duì)指令集熟到閉眼能寫(xiě)否則優(yōu)先用C寫(xiě)業(yè)務(wù)邏輯在時(shí)序敏感的地方內(nèi)嵌匯編。燒錄器方面英銳恩的用戶需要選支持RISC18內(nèi)核的編程器。這里有一個(gè)工程上容易忽略的坑編程器、燒錄座、目標(biāo)板之間的連線方式會(huì)影響燒錄穩(wěn)定性。特別是量產(chǎn)燒錄時(shí)如果使用頂針治具線太長(zhǎng)、夾持不穩(wěn)燒錄失敗率會(huì)明顯上升。我們量產(chǎn)時(shí)專門(mén)做了燒錄治具把線長(zhǎng)控制在15厘米以內(nèi)并加了屏蔽失敗率從最初的千分之幾降到幾乎為零。我還會(huì)在工程配置里打開(kāi)編譯器的所有警告把“隱式聲明”“類型不匹配”這些當(dāng)錯(cuò)誤處理。8位機(jī)的C編譯器不比對(duì)32位編譯器聰明很多隱患在編譯期不報(bào)運(yùn)行期才露餡。程序?qū)懞弥蠼ㄗh用官方工具抓一下代碼占用率我在第三節(jié)末尾會(huì)專門(mén)說(shuō)資源怎么體檢才算合格。3.2 從PIC或51核遷移RISC18時(shí)最容易踩的五個(gè)坑現(xiàn)在很多產(chǎn)品是從進(jìn)口8位機(jī)或國(guó)產(chǎn)51核遷移過(guò)來(lái)的遷移過(guò)程看著不難但有幾個(gè)坑幾乎每個(gè)團(tuán)隊(duì)都會(huì)踩坑一寄存器Bank不分。RISC類單片機(jī)的特殊功能寄存器往往分Bank切換Bank時(shí)忘了代碼會(huì)在特定分支跑飛。解決辦法是建立寄存器操作宏把Bank切換包進(jìn)去做到上層無(wú)感??佣﨔lash頁(yè)大小引起寫(xiě)操作不連續(xù)。很多人習(xí)慣把EEPROM當(dāng)Flash用按字節(jié)寫(xiě)。實(shí)際上多數(shù)8位MCU的Flash需要按頁(yè)擦除、按字或按頁(yè)寫(xiě)。寫(xiě)數(shù)據(jù)前一定要判斷跨頁(yè)邊界否則固件數(shù)據(jù)會(huì)被莫名清掉??尤袛鄻?biāo)志要軟件清除。RISC核的中斷標(biāo)志往往需要讀后寫(xiě)1清除或軟件清0很多人從51核帶過(guò)來(lái)“自動(dòng)清除”的慣性結(jié)果中斷一直在進(jìn)主程序永遠(yuǎn)卡住??铀亩丝谀J(rèn)狀態(tài)和復(fù)用功能。芯片復(fù)位后IO的默認(rèn)電氣狀態(tài)未必是你想要的可能是懸空輸入或帶上拉。產(chǎn)品上電瞬間如果IO亂跳可能驅(qū)動(dòng)蜂鳴器亂響或繼電器誤動(dòng)作。配置GPIO的優(yōu)先級(jí)一定要放到上電初始化最前面??游蹇撮T(mén)狗喂狗時(shí)機(jī)。喂狗位置不對(duì)高負(fù)載時(shí)會(huì)誤復(fù)位。建議放在主循環(huán)“心跳”處而不是放在某個(gè)功能模塊里。中斷里喂狗更是大忌一旦主循環(huán)卡死看門(mén)狗形同虛設(shè)。我們遷移時(shí)逐條對(duì)照這些坑寫(xiě)checklistEVT實(shí)測(cè)下來(lái)省了大量DEBUG時(shí)間。3.3 低功耗設(shè)計(jì)休眠電流與喚醒源配置英銳恩RISC18在低功耗方面的表現(xiàn)說(shuō)實(shí)話超出了我預(yù)期。休眠模式下功耗能做到很低具體數(shù)值要以官方數(shù)據(jù)手冊(cè)為準(zhǔn)但即使按比較保守的估算對(duì)紐扣電池供電的設(shè)備也是可用的。真正決定產(chǎn)品續(xù)航的不是芯片標(biāo)稱的休眠電流而是喚醒之后的運(yùn)行時(shí)間和喚醒頻率。一個(gè)典型的低功耗設(shè)計(jì)流程是這樣的進(jìn)入休眠前關(guān)掉ADC、關(guān)閉不用的定時(shí)器、把IO設(shè)置成確定電平防止漏電然后選擇喚醒源常見(jiàn)的是外部引腳邊沿喚醒和定時(shí)器周期性喚醒。喚醒后先做時(shí)鐘穩(wěn)定等待再關(guān)掉外圍設(shè)備完成采樣或通信后馬上再次休眠。有一個(gè)細(xì)節(jié)要注意GPIO如果懸空在休眠狀態(tài)下會(huì)通過(guò)保護(hù)二極管產(chǎn)生漏電導(dǎo)致實(shí)測(cè)整機(jī)休眠電流比芯片手冊(cè)數(shù)字高十倍。解決辦法是把未使用的IO全部配置為輸出低或帶上拉的輸入具體以對(duì)外圍電路影響為準(zhǔn)。這個(gè)坑我見(jiàn)過(guò)很多次了不是芯片不行是板上漏電路徑?jīng)]斷干凈。3.4 代碼資源分配與健壯性設(shè)計(jì)8位機(jī)資源小寫(xiě)程序要有“算計(jì)”的概念。我習(xí)慣先畫(huà)一張資源地圖Flash的總?cè)萘?、已用空間、可擴(kuò)展空間RAM的全局變量、??臻g、中斷嵌套占用定時(shí)器的通道數(shù)和用途一一對(duì)應(yīng)每個(gè)外設(shè)分配給哪個(gè)功能模塊決不共用。這張地圖在項(xiàng)目初期花半小時(shí)畫(huà)后期能省幾個(gè)通宵。健壯性設(shè)計(jì)方面我堅(jiān)持幾個(gè)原則第一所有傳感器讀取都做合理性檢查超出上下限的采樣本要丟掉或置默認(rèn)值。第二EEPROM存儲(chǔ)的關(guān)鍵參數(shù)要帶校驗(yàn)和、雙區(qū)備份防止寫(xiě)入一半掉電導(dǎo)致參數(shù)丟失。第三主循環(huán)要留出“喂狗自檢調(diào)度”的固定節(jié)拍不能把某個(gè)業(yè)務(wù)邏輯寫(xiě)成阻塞式的死循環(huán)。這些小習(xí)慣在8051時(shí)代適用在RISC18上同樣適用。不要覺(jué)得代碼能跑就行量產(chǎn)后的客訴問(wèn)題九成都來(lái)自“能跑但不夠健壯”的代碼。4. 量產(chǎn)對(duì)接流程與供貨保障4.1 對(duì)接原廠或代理商從選型到申請(qǐng)樣片“優(yōu)先對(duì)接英銳恩”在我們項(xiàng)目里的實(shí)際流程從正式接洽開(kāi)始的。第一次對(duì)接建議大家直接找到原廠或授權(quán)代理商把你的項(xiàng)目情況、用量預(yù)估、目標(biāo)價(jià)格、交期要求講清楚。英銳恩的對(duì)接窗口會(huì)給出一張選型表讓你基于封裝和資源快速圈定方向。申請(qǐng)樣片是個(gè)技術(shù)活。不要只申請(qǐng)一顆芯片回來(lái)畫(huà)板要把目標(biāo)型號(hào)、數(shù)據(jù)手冊(cè)、參考例程、燒錄工具一次性配齊。我們當(dāng)時(shí)還要求了和現(xiàn)有方案引腳兼容的型號(hào)方便在同一塊PCB上做平行對(duì)比測(cè)試。此外務(wù)必讓代理或原廠標(biāo)注批次信息方便我們記錄不同批次的電氣參數(shù)一致性。我認(rèn)為原型階段值得做一件事讓原廠提供RISC18的樣例工程和頭文件而不是自己從頭讀寄存器。一來(lái)省時(shí)間二來(lái)參考原廠的初始化和中斷寫(xiě)法避免出現(xiàn)“代碼風(fēng)格不一致”導(dǎo)致的隱性bug。我們拿到參考例程后編譯通過(guò)逐行讀過(guò)然后再做功能裁切比從零寫(xiě)要快得多。4.2 小批量試產(chǎn)燒錄、老化與可靠性驗(yàn)證試產(chǎn)階段最核心的是燒錄和老化。量產(chǎn)燒錄建議直接用離線編程器或在線燒錄方式先把固件燒錄好再做貼片或者先貼片再在測(cè)試工裝上燒錄二者各有適用場(chǎng)景。小板、大批量適合先燒錄再貼片帶校準(zhǔn)參數(shù)、需要功能測(cè)試的產(chǎn)品適合貼片后在線燒錄。可靠性驗(yàn)證我的經(jīng)驗(yàn)是不能只做單板功能測(cè)試。至少要抽一定數(shù)量的樣機(jī)做高溫老化同時(shí)對(duì)比不同批次芯片的ADC偏移、內(nèi)部RC振蕩頻率、休眠電流三項(xiàng)數(shù)據(jù)把偏移范圍記錄下來(lái)。這個(gè)數(shù)據(jù)不僅是產(chǎn)品質(zhì)量憑證也是后續(xù)量產(chǎn)時(shí)“調(diào)整軟件校準(zhǔn)值”的依據(jù)。還有一個(gè)容易被忽略的是引腳焊接可靠性。SOP封裝如果PCB焊盤(pán)設(shè)計(jì)太小、鋼網(wǎng)開(kāi)孔不對(duì)過(guò)回流焊后可能出現(xiàn)虛焊。而虛焊在功能測(cè)試時(shí)可能只是“偶爾死機(jī)”到用戶手里就變成“完全不開(kāi)機(jī)”。我們有一次追批次不良原因最后發(fā)現(xiàn)是虛焊加芯片引腳氧化共同導(dǎo)致從那以后來(lái)料都要做引腳可焊性抽檢。4.3 量產(chǎn)物料備貨策略與交期管理做量產(chǎn)項(xiàng)目最關(guān)鍵的是別讓生產(chǎn)線停下來(lái)等物料。我的備貨策略是“滾動(dòng)態(tài)備貨安全庫(kù)存”雙軌制。跟英銳恩對(duì)接時(shí)把未來(lái)三個(gè)月的預(yù)測(cè)用量按月拉平給到對(duì)方并在合同里約定安全庫(kù)存水位和最短補(bǔ)貨周期。國(guó)產(chǎn)8位機(jī)的好處是周期短本地調(diào)貨方便但也要預(yù)防突發(fā)需求量翻倍的情況。建議在做量產(chǎn)采購(gòu)時(shí)明確批次編碼規(guī)則。這樣萬(wàn)一某批次出現(xiàn)異??梢愿鶕?jù)PCBA噴碼倒查該批芯片來(lái)料時(shí)間、供貨渠道和檢測(cè)記錄。我們當(dāng)時(shí)在SMT流程里增加了“套料批次記錄表”每批PCB對(duì)應(yīng)哪批芯片一目了然。同時(shí)要預(yù)留“第二供應(yīng)商”的替代方案。還沒(méi)有別的國(guó)產(chǎn)8位MCU的引腳、寄存器完全一樣可以改PCB布局、預(yù)留兼容封裝的方式做第二貨源。例畫(huà)板時(shí)多開(kāi)一組定位孔和焊盤(pán)讓兩種芯片都能貼裝再在軟件里做條件編譯切換品牌時(shí)只需換料、換固件不用改板。這才是量產(chǎn)項(xiàng)目真正的抗風(fēng)險(xiǎn)設(shè)計(jì)。4.4 防止買(mǎi)到翻新片、假片渠道驗(yàn)證方法國(guó)產(chǎn)芯片同樣有翻新、假片問(wèn)題尤其熱門(mén)型號(hào)市場(chǎng)上可能出現(xiàn)Remark過(guò)的產(chǎn)品。我的經(jīng)驗(yàn)是三條第一只從原廠書(shū)面授權(quán)渠道采購(gòu)第二每批來(lái)料申請(qǐng)?jiān)瓘S出廠檢驗(yàn)報(bào)告或批次確認(rèn)第三自己上機(jī)抽測(cè)關(guān)鍵參數(shù)。抽查時(shí)我會(huì)測(cè)幾項(xiàng)靜態(tài)功耗、休眠電流、ADC零點(diǎn)偏移、Flash擦寫(xiě)次數(shù)可靠性。不要只點(diǎn)燈、只跑一遍例程那樣很難暴露翻新片。翻新片最常見(jiàn)問(wèn)題是引腳氧化、絲印模糊、芯片頂面有打磨痕跡用放大鏡配合強(qiáng)光就能初步判斷。如果價(jià)格比市場(chǎng)均價(jià)低很多別貪大概率有問(wèn)題。另外提醒一句元器件采購(gòu)務(wù)必走對(duì)公合同和發(fā)票流程保留完整的溯源鏈。這不僅是財(cái)務(wù)合規(guī)也是產(chǎn)品出問(wèn)題時(shí)的追責(zé)依據(jù)。5. 項(xiàng)目落地中的常見(jiàn)問(wèn)題與排查技巧5.1 芯片無(wú)法燒錄或燒錄后不運(yùn)行燒錄問(wèn)題八成出在連接和供電上。先量一下目標(biāo)板VDD/GND是否短路再確認(rèn)燒錄座或在線調(diào)試器連接線是否接觸良好。RISC18的燒錄腳通常會(huì)復(fù)用普通IO如果程序里把這幾個(gè)IO配置成其他功能第二次燒錄就可能失敗。解決辦法是量產(chǎn)階段使用離線燒錄開(kāi)發(fā)階段如果遇到芯片鎖死看能否用高壓編程或解鎖指令恢復(fù)。燒錄后不運(yùn)行先查復(fù)位引腳。外部復(fù)位引腳懸空或受到干擾芯片可能一直處于復(fù)位狀態(tài)。再看振蕩器配置如果程序配置成外部晶振但板上沒(méi)有晶振或者晶振起振慢程序會(huì)一直卡在時(shí)鐘穩(wěn)定等待。這時(shí)候用示波器量一下晶振引腳波形或者直接改成內(nèi)部RC在燒錄前確認(rèn)配置是最快的定位方式。我通常會(huì)在程序最開(kāi)始放一個(gè)LED閃爍初始化段只要燒錄完上電能看到LED按預(yù)期閃爍就說(shuō)明最小系統(tǒng)正常問(wèn)題在外圍。否則就回到電源、時(shí)鐘、復(fù)位三要素去查別急著翻寄存器代碼。5.2 內(nèi)部RC振蕩器溫漂引起的串口和時(shí)序問(wèn)題用內(nèi)部RC做串口通信最怕波特率偏差。RC振蕩器在全溫區(qū)下有頻率漂移實(shí)測(cè)在多串口交互時(shí)可能出現(xiàn)高低溫環(huán)境下通信偶發(fā)錯(cuò)誤。解決思路一是兼容較寬容錯(cuò)的波特率接收算法二是在高溫老化標(biāo)定環(huán)節(jié)修正配置值三是關(guān)鍵通信對(duì)時(shí)序要求高的場(chǎng)合改用外部晶振或帶時(shí)鐘校準(zhǔn)功能的型號(hào)。這里我還想強(qiáng)調(diào)一個(gè)技巧如果芯片支持在線校準(zhǔn)內(nèi)部RC頻率產(chǎn)品出廠測(cè)試時(shí)可以把“實(shí)測(cè)波特率誤差校準(zhǔn)值”寫(xiě)在EEPROM里軟件啟動(dòng)時(shí)自動(dòng)修正。這個(gè)方案能在不增加硬件成本的前提下把RC振蕩精度拉回到可接受范圍內(nèi)做帶串口通信的消費(fèi)電子產(chǎn)品非常有用。5.3 ADC采樣值跳變與參考電壓不穩(wěn)ADC采樣值在8位機(jī)上跳變先檢查參考電壓引腳上的濾波電容沒(méi)有或者太小讀數(shù)必然會(huì)飄。其次采樣通道切換后需要足夠的采樣保持時(shí)間很多代碼里緊挨著切換通道就立即讀取結(jié)果內(nèi)部采樣電容沒(méi)有充滿讀取值自然不準(zhǔn)。比較隱蔽的問(wèn)題是地線公共阻抗。如果MCU的ADC地和電機(jī)、繼電器等大電流器件共地大電流瞬間會(huì)在地線上產(chǎn)生電壓差A(yù)DC參考電位跟著抖采樣結(jié)果時(shí)準(zhǔn)時(shí)不正。解決方法是ADC參考地和功率地單點(diǎn)連接并加大ADC電源引腳的儲(chǔ)能電容。軟件濾波方面簡(jiǎn)單的多次平均未必合適因?yàn)闀?huì)拖慢響應(yīng)速度。我用得更多是“滑動(dòng)窗口去極值”或“一階低通濾波”既能濾掉尖峰又不引入明顯滯后。反應(yīng)速度要求極高的場(chǎng)合直接用比較器中斷比ADC更快。5.4 批量產(chǎn)品中偶爾出現(xiàn)上電死機(jī)或復(fù)位異常批量產(chǎn)線上最頭疼的是“十塊板里有一塊上電不正?!薄_@類問(wèn)題芯片本身的原因占比并不高更多是電源設(shè)計(jì)余量不足。上電瞬間如果穩(wěn)壓器啟動(dòng)慢或者M(jìn)CU供電引腳離去耦電容太遠(yuǎn)就會(huì)導(dǎo)致上電過(guò)程中VDD上升沿太緩MCU內(nèi)部上電復(fù)位電路判斷失敗。排查方法是做“上電時(shí)序測(cè)試”用示波器同時(shí)抓VDD、復(fù)位引腳、晶振引腳看看上電過(guò)程中誰(shuí)先誰(shuí)后、有沒(méi)有毛刺。很多時(shí)候加一個(gè)幾毫秒的復(fù)位延時(shí)電容或者加一個(gè)電源監(jiān)控芯片問(wèn)題就消失了。另外批次問(wèn)題也要查。同型號(hào)不同批次的芯片內(nèi)部LDO或前端電路有細(xì)微差異可能導(dǎo)致“上一批沒(méi)事、下一批有事”。解決辦法是來(lái)料抽測(cè)時(shí)直接模擬整機(jī)快速上電、斷電循環(huán)測(cè)試而不是只測(cè)芯片靜態(tài)參數(shù)。上電循環(huán)測(cè)試做到50次以上不出現(xiàn)死機(jī)這一批才算過(guò)關(guān)。5.5 程序升級(jí)與燒錄加密的細(xì)節(jié)量產(chǎn)之后難免要產(chǎn)品升級(jí)。RISC18如果支持在線升級(jí)那么Bootloader區(qū)要單獨(dú)規(guī)劃并且必須考慮升級(jí)失敗的自恢復(fù)機(jī)制。我的做法是雙區(qū)方案A區(qū)運(yùn)行當(dāng)前固件B區(qū)存新固件校驗(yàn)通過(guò)后切換切換失敗還能回退到A區(qū)。代碼燒錄加密是正規(guī)產(chǎn)品必備的一環(huán)。不要在量產(chǎn)時(shí)圖方便省略加密熔絲除非芯片本身是OTP且你不在意代碼泄露。加密后的芯片雖然不能直接讀回Flash但也不能完全阻止側(cè)信道攻擊所以核心算法盡量在應(yīng)用層做混淆不要裸存關(guān)鍵密鑰。加密還要考慮售后返修。如果產(chǎn)品返修時(shí)維修人員需要刷固件而所有芯片已經(jīng)加密且無(wú)法重新燒錄返修就會(huì)很麻煩。建議公司內(nèi)部保留“未加密的調(diào)試固件”和“量產(chǎn)的加密固件”兩套版本調(diào)試固件僅供返修使用絕不外發(fā)。6. 量產(chǎn)供貨商選擇的最終建議6.1 從英銳恩RISC18項(xiàng)目里總結(jié)出的選型方法論回頭看這次英銳恩RISC18項(xiàng)目落地我只碼住一個(gè)原則選8位MCU量產(chǎn)供貨商看的是綜合交付能力不是單顆芯片的參數(shù)表。RISC18的內(nèi)核效率、外設(shè)資源、價(jià)格優(yōu)勢(shì)只是入場(chǎng)券真正讓量產(chǎn)順利跑起來(lái)的是供貨穩(wěn)定、技術(shù)支持到位、批次質(zhì)量問(wèn)題有人管。對(duì)接過(guò)程中英銳恩給到的支持不只是數(shù)據(jù)手冊(cè)和樣片還協(xié)助我們確認(rèn)了不同封裝下的熱阻參數(shù)、ESD等級(jí)、引腳焊接推薦工藝這些都是一般博主不會(huì)貼出來(lái)但產(chǎn)線實(shí)際需要的東西。所以我的建議是做選型評(píng)估不要只開(kāi)會(huì)看PPT一定要把“樣品、手冊(cè)、例程、FAE響應(yīng)速度、交期承諾、批次管理”六個(gè)維度全部打分再綜合排名。6.2 最后再分享幾個(gè)實(shí)用經(jīng)驗(yàn)寫(xiě)這篇文章時(shí)我們的產(chǎn)品已經(jīng)完成三輪試產(chǎn)累計(jì)出貨超過(guò)數(shù)萬(wàn)片整體不良率控制在可接受范圍英銳恩的物料在一致性方面經(jīng)受住了考驗(yàn)。我個(gè)人和同行交流時(shí)總結(jié)了幾點(diǎn)第一不要只因?yàn)椤氨阋恕边x芯片。8位機(jī)單價(jià)差一兩毛錢(qián)在成品里完全可以忽略但如果因?yàn)楣┴泦?wèn)題停線一小時(shí)損失遠(yuǎn)超省下的物料費(fèi)。第二每個(gè)新項(xiàng)目都要做完整的老化測(cè)試和上電循環(huán)測(cè)試不要跳步。國(guó)產(chǎn)芯片不一定比進(jìn)口差但每家的特性曲線不同寧可在實(shí)驗(yàn)室多花時(shí)間不要在用戶手上多花時(shí)間。第三技術(shù)協(xié)議和采購(gòu)協(xié)議要分開(kāi)簽。技術(shù)協(xié)議管功能、管驗(yàn)證采購(gòu)協(xié)議管交期、管備貨、管批次追溯和售后賠償條款。白紙黑字寫(xiě)清楚“交付異常時(shí)的替代方案和損失承擔(dān)”比口頭承諾管用得多。8位RISC18這條線我用下來(lái)的結(jié)論是“靠譜”英銳恩作為對(duì)接供貨商整體配合度在國(guó)產(chǎn)MCU陣營(yíng)里屬于前列。當(dāng)然任何選型結(jié)論都需要你用自己的產(chǎn)品和測(cè)試數(shù)據(jù)來(lái)驗(yàn)證畢竟真正決定項(xiàng)目成敗的是設(shè)計(jì)與供應(yīng)鏈的長(zhǎng)期磨合而不是一篇推薦文章。希望這篇記錄能幫正在做國(guó)產(chǎn)化替代選型的同行少走彎路有任何關(guān)于RISC18移植、量產(chǎn)測(cè)試的新問(wèn)題歡迎隨時(shí)交流。