2020.10.28的時候,我登陸立創商城,搜索stm32f103c8t6,單價15左右,100片的話,價格不到13。
2020.11.5再次登陸,搜索stm32f103c8t6,價格瘋長到了20+
瘋了啊!
真的要考慮單片機型號的國產化了!
以下文章轉自網絡:
說起MCU,ST(意法半導體)的STM32單片機十幾年來已經銷售了幾十億顆,在國內幾乎占有50%的市場,會使用STM32單片機也基本成為電子工程師的標配職業技能,然而2018年下半年的供貨緊張,以及中興事件,給我們硬件工程師敲了敲警鐘,假如有一天我們必須替換下STM32單片機,國產芯有哪些是可以替代的呢?
GD32作為中國32位通用MCU領域的主流之選,以累計超過2億顆的出貨數量、超過1萬的用戶數量、20個系列300余款產品型號選擇的廣闊應用覆蓋率穩居市場前列。GD32使用的是Cortex-M3內核,型號做到了與STM32相同型號的全兼容,方便替換,主頻頻率更高。
GD32F103是GD早期的產品,GD32E103和GD32F303是對GD32F103的升級和優化,所以4者是兼容的,雖然內核不同,但是通用外設幾乎很少涉及到內核部分,在時間急迫的情況下可以使用ST的庫開發。
一、相同點
1)外圍引腳PIN TO PIN兼容,每個引腳上的復用功能也完全相同。
2)芯片內部寄存器、外部IP寄存器地址和邏輯地址完全相同,但是有些寄存器默認值不同,有些外設模塊的設計時序上和STM32有差異,這點差異主要體現在軟件上修改,詳情見下文。
3)編譯工具:完全相同例如:KEIL 、IAR
4)型號命名方式完全相同,所以替代只需找尾綴相同的型號即可,例如:STM32F103C8T6 與 GD32E103C8T6。
5)仿真工具:JLINK GDLINK
二、外圍硬件區別
三、硬件替換需要注意的地方
從上面的介紹中,我們可以看出,GD32F30/E103系列和STM32F103系列是兼容的,但也需要一些注意的地方。
1)BOOT0必須接10K下拉或接GND,ST可懸空,這點很重要。
2)RC復位電路必須要有,否則MCU可能不能正常工作,ST的有時候可以不要。
3)有時候發現用仿真器連接不上。因為GD的swd接口驅動能力比ST弱,可以有如下幾種方式解決:
a、線盡可能短一些;
b、降低SWD通訊速率;
c、SWDIO接10k上拉,SWCLK接10k下拉。
4)使用電池供電等,注意GD的工作電壓,例如跌落到2.0V~2.6V區間,ST還能工作,GD可能無法啟動或工作異常。
四、使用ST標準庫開發需要修改的地方
1)GD對時序要求嚴格,配置外設需要先打開時鐘,在進行外設配置,否則可能導致外設無法配置成功;ST的可以先配置在開時鐘。
2)修改外部晶振起振超時時間,不用外部晶振可跳過這步。
原因:GD與ST的啟動時間存在差異,為了讓GD MCU更準確復位。
修改:
將宏定義:#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)修改為:#define HSE_STARTUP_TIMEOUT ((uint16_t)0xFFFF)
3)GD32F10X flash取值零等待,而ST需要2個等待周期,因此,一些精確延時或者模擬IIC或SPI的代碼可能需要修改。
原因:GD32采用專利技術提高了相同工作頻率下的代碼執行速度。
修改:如果使用for或while循環做精確定時的,定時會由于代碼執行速度加快而使循環的時間變短,因此需要仿真重新計算設計延時。使用Timer定時器無影響。
4)在代碼中設置讀保護,如果使用外部工具讀保護比如JFLASH或脫機燒錄器設置,可跳過此步驟。
在寫完KEY序列后,需要讀該位確認key已生效,修改如下:
總共需要修改如下四個函數:
FLASH_Status FLASH_EraseOptionBytes(void);FLASH_Status FLASH_ProgramOptionByteData(uint32_t Address, uint8_t Data);uint32_t FLASH_GetWriteProtectionOptionByte(void);FlagStatus FLASH_GetReadOutProtectionStatus(void);
5)GD與ST在flash的Erase和Program時間上有差異,修改如下:
6)需求flash大于256K注意,小于256K可以忽略這項。
與ST不同,GD的flash存在分區的概念,前256K,CPU執行指令零等待,稱code區,此范圍外稱為dataZ區。兩者在擦寫操作上沒有區別,但在讀操作時間上存在較大差別,code區代碼取值零等待,data區執行代碼有較大延遲,代碼執行效率比code區慢一個數量級,因此data區通常不建議運行對實時性要求高的代碼,為解決這個問題,可以使用分散加載的方法,比如把初始化代碼,圖片代碼等放到data區。
總結:至此,經過以上修改,在不使用USB和網絡能復雜協議的代碼,就可以使用ST的代碼操作了。
MM32系列基于ARM Cortex-M0及Cortex-M3 內核,產品包括:針對通用高性能市場的MM32F系列,針對超低功耗及安全應用的MM32L系列,具有多種無線連接功能的MM32W系列,電機驅動及控制專用的MM32SPIN系列,以及OTP型的MM32P系列等,同樣的管腳、型號等與ST全兼容,替換成本非常低。
華大半導體-HC32系列
有國企背景的HC32系列基于ARM Cortex-M0+及Cortex-M4內核,產品包括超低功耗應用的HC32L系列和針對電機應用市場的HC32M系列,針對通用市場的高性價比HC32F系列,與ST同型號產品管腳兼容,可以直接替換。
中科芯(CETC)
中科芯的32位MCU產品可批量替換STM32的F103、F030、F031和F051等系列。基于ARM架構覆蓋Cortex-M0、M3、M4內核八大系列產品,硬件引腳與STM32 P2P兼容,軟件采用寄存器級兼容設計,對于已經使用ST系列MCU開發完成的程序,HEX文件可直接燒錄到中科芯對應型號的MCU中即可運行,無需過多改動。
雅特力(Artery)
雅特力的AT32F403A/F407/ F413/ F415/F421系列,可批量替換STM32的F030、F303、F103、F107、F072、F401和F411等系列,其產品硬件引腳與STM32 P2P兼容,軟件高度兼容,由于內核、SRAM、外設等性能相比STM32大幅度提升,AT32可一顆取代多顆STM32,另外還獨有安全性&二次開發功能: security Lib,更寬的工作溫度:-40~105度。
中微股份(CMSemicon)
中微股份的高性能低功耗高集成全領域的MCU,可批量替換STM32F030/031系列、STM32G030/031系列和STM32L031/051系列。
航順(Hangshun)
航順已量產基于ARM Cortex-M0及Cortex-M3 內核的MCU產品包括:通用高性能市場的HK32F103家族,HK32F030/031/03X家族,存儲器EEPROM家族。2019年即將推出的超低功耗7nA及安全應用的HK32L家族以及具有多種無線連接功能的HK32W/B家族,以滿足客戶多元化需求。
國產 芯任重道遠
國產芯片在國內MCU市場的占有率在2%左右,市場非常低,還有很大的進步空間。以GD32為代表的國內芯片廠商的崛起勢必沖擊ST,但是我們也必須看到與ST之間的差距,產品線不完整,產品性能以及穩定性還不能完全與其匹敵,未來5年能搶下多少份額,我們拭目以待。
責任編輯:xj
-
單片機
+關注
關注
6035文章
44554瀏覽量
634635 -
STM32
+關注
關注
2270文章
10895瀏覽量
355734 -
意法半導體
+關注
關注
31文章
3126瀏覽量
108592
發布評論請先 登錄
相關推薦
評論