最近因?yàn)槠胶廛囀袌?chǎng)的突然火爆加上某些商業(yè)特色,使得STM32F103RC芯片需求量驟然增加,導(dǎo)致缺貨嚴(yán)重。因?yàn)槿必,可謂有人歡喜有人愁。這些”人”包括相關(guān)產(chǎn)品的芯片原始供應(yīng)商;各級(jí)中級(jí)代理及貿(mào)易商,當(dāng)然包括那些沖鋒陷陣在前的業(yè)務(wù)員;還有就是各級(jí)終端用戶,開發(fā)商和生產(chǎn)商。
因?yàn)樵撔酒木o張和價(jià)格飆升,不論平衡車客戶還是非平衡車客戶,有部分客戶想到或被人推薦使用STM32F103RC的兼容型號(hào)來應(yīng)付。這個(gè)過程中還是可能會(huì)遇到些問題,趁機(jī)一起交流下ST MCU兼容性話題。
所謂電子芯片的兼容,沒法說出精準(zhǔn)的概念,畢竟兼容一詞意義本身蘊(yùn)含模糊。大致意思就是功能接近、性能大體一致,不同型號(hào)或款式間具備較好的替換性。
整體上講ST MCU各系列間的兼容性是非常好的,在業(yè)界算是做得很不錯(cuò)了。具體體現(xiàn)硬件和軟件兩方面。硬件主要在管腳的兼容性、存儲(chǔ)器的安排、內(nèi)部硬件結(jié)構(gòu)等。軟件方面體現(xiàn)在各系列都有參考固件庫(kù),各寄存器的定義具有很高的一致性,與芯片基本特征有關(guān)的定義或聲明往往只需做些宏定義的調(diào)整或開關(guān)選擇,基本的外設(shè)相關(guān)操作都封裝成C函數(shù),用戶多數(shù)時(shí)候只需直接調(diào)用。不同型號(hào)間的軟件移植時(shí)只需要做差異性的小范圍調(diào)整,有些子系列間的型號(hào)變更移植時(shí)可能不需要任何調(diào)整,同一電路和代碼隨意替換。
以STM32為例,它目前有9各系列,不但各系列內(nèi)部不同型號(hào)有很強(qiáng)的兼容性,而且夸系列間也有很強(qiáng)的兼容性,比方STM32F1系列與STM32F3系列,STM32F2系列與STM32F4系列。對(duì)于同一系列,往往可能會(huì)分出幾個(gè)子序列,子系列間整體上管腳的兼容方面一般是沒什么問題,但內(nèi)部資源除了存儲(chǔ)容量大小差別外,可能還有些細(xì)微差異,在兼容替換時(shí)可能需要做些小調(diào)整。這里以STM32F103RC的相關(guān)替換實(shí)例作為開始,用幾個(gè)具體案例來分享交流下,旨在做些提醒。
1、一日某生產(chǎn)平衡車的客戶電話我,說目前STM32F103RC缺貨,有業(yè)務(wù)建議他使用STM32F105替換。業(yè)務(wù)跟他說是兼容的,可以互換。
可當(dāng)客戶把之前STM32F103RC的機(jī)器碼寫入STM32F105RC時(shí),設(shè)備根本不工作。說實(shí)話,在103RC供貨緊張且價(jià)格飆升時(shí)考慮用105替換是個(gè)好建議。
二者管腳上沒有啥問題,完全兼容。不過,二者雖然屬同一F1系列,但屬于不同子系列,內(nèi)部資源略有差異,二者在RCC及中斷矢量表這些地方是有差異的,不排除這些差異導(dǎo)致產(chǎn)品功能的差異。軟件上可能需要做些調(diào)整。把基于103rc的工程項(xiàng)目改為基于32f105的工程項(xiàng)目做些調(diào)試確認(rèn)。
遺憾的是,這個(gè)客戶說他根本沒有源代碼,只有機(jī)器碼。這也算最近平衡車市場(chǎng)的一特色。既然這樣,建議他還是找103RC。
2、一日某非平衡車客戶,跟我交流。本來一直用32F103RC做產(chǎn)品應(yīng)用,最近103RC突然缺貨且價(jià)格高,為了應(yīng)付生產(chǎn),無賴之下也是被人建議使用32F105RC來做替換。但當(dāng)他把103的工程修改為105的工程編譯后生成的執(zhí)行文件燒進(jìn)32F105芯片后,發(fā)現(xiàn)別的功能都好,USB功能不行了。
他問我STM32F105是不是支持USB功能不好。幸好這個(gè)客戶跟上面客戶不一樣,軟硬件都是自己開發(fā)的。我說不是105的USB功能支持得不好,而是相比103RC,105RC的USB功能更全了,它內(nèi)置USB OTG模塊。103RC只能單純做USB DEVICE,而105RC內(nèi)置USB OTG模塊,可以扮演HOST或DEVICE雙角色,具體到這里,得把相關(guān)軟件代碼做些調(diào)整讓其工作DEVICE模式。否則直接搬過來就用不了。
3、繼續(xù)舉個(gè)跟103/105有關(guān)的案例,不過這次就不扯到平衡車了。
記得有個(gè)客戶開發(fā)產(chǎn)品,開始是用STM32F105RC,還編寫了IAP程序。產(chǎn)品量產(chǎn)出貨一段時(shí)間后因產(chǎn)品功能調(diào)整取消了CAN通信,其它功能基本不變,于是想到同系列兼容型號(hào)103C8。客戶稍作修改調(diào)整后,發(fā)現(xiàn)一個(gè)奇怪的問題。把之前基于105的代碼移植到103C8后,做IAP升級(jí)時(shí),基本上每顆芯片的第一次IAP升級(jí)沒問題,以后就總是失敗。升級(jí)成功后芯片功能倒也正常。 結(jié)果發(fā)現(xiàn)問題就是出在IAP相關(guān)擦寫FLASH的函數(shù),最根本的原因是103C8與105RC內(nèi)部FLASH 頁(yè)大小有差異,那相關(guān)擦除函數(shù)參數(shù)會(huì)有差異。具體細(xì)節(jié)這里不延伸了。
4、還記得曾有個(gè)遠(yuǎn)方客戶,在使用STM32F4系列新品開發(fā)產(chǎn)品,在做不同腳位的芯片移植時(shí),好像是100腳與144腳間芯片移植,由于忽視了某個(gè)接地腳的正確處理,導(dǎo)致連燒近20快板后才發(fā)現(xiàn)真正原因。剛開始一直想當(dāng)然的鎖定在供貨物料上的問題。
5、上面說的都是跟STM32有關(guān)的案例。再說個(gè)STM8芯片移植的案例來結(jié)尾。
某深圳客戶用8S103開發(fā)某電子產(chǎn)品。突然有一天,他跟我說有人建議他使用8S003,聽人說是一模一樣而且價(jià)格更便宜。我了解他的產(chǎn)品,產(chǎn)品要用到8S103的UID作為其無線編碼應(yīng)用。我跟他強(qiáng)調(diào)了8S003與103的差別,003是不保證帶UID的。建議它不要投機(jī)取巧。自己的產(chǎn)品穩(wěn)定、一致才是硬道理。
總之,兼容只是可以無限接近相同或一致,但往往并不能打等號(hào)。上面的具體案例只是些友情提醒。所以在做具體的兼容型號(hào)移植時(shí)最好多了解下差異,另外必須做樣品或小批量的驗(yàn)證測(cè)試。在結(jié)合技術(shù)手冊(cè)的基礎(chǔ)上,以驗(yàn)證測(cè)試為準(zhǔn),滿足你產(chǎn)品要求的就是合適的。
歡迎光臨 (http://www.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |