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