5款國產ARM-Cortex3芯片(對標stm32f103c8t6)兼容性測試評估
前言:
國產arm芯片近年來不斷的開疆拓土,建功立業。然而,隨着大變局時代的開啓,美國對中國科技的打壓,對中國芯片的鎖脖,ST芯片價格的一再高漲,更加有力推動了國產arm芯片的蓬勃發展。可以預計的未來,隨着國產arm在價格上的優勢和性能上的不斷提高,隨着國內企業對國外芯片不確定性恐懼的逐漸加深,國產arm市佔率必定持續攀升。
因此, 很有必要把幾款國產芯片拿來說說事。一般的設計者都希望能直接兼容替代對應的ST產品,本文也主要探討各個產品基本的兼容性。如程序運行、下載等。拿來的5種國產芯片分別是:
GD32F103c8t6(北京易兆創新)
APM32F103c8t6(珠海極海)
HK32F103c8t6(深圳航順)
CKSF103c8t6(無錫中科芯)
CH32F103c8t6(南京沁恆)
五種數據手冊可下載:https://download.csdn.net/download/weixin_41565556/14121823
測試平臺:STm32最小系統,只更換芯片,其餘不變,
軟件:keil和Stm32CubeProgrammer
程序:HAL庫,blink程序
工具:usb轉串口
一、管腳兼容性
每個芯片的手冊裏的管腳定義分別如下5個圖,可以看到都兼容ST芯片。
二、結構框架、總線安排、時鐘分配等
爲保證兼容性,架構基本一致。因爲內核一樣,所以只能最多在外設等安排上進行刪減,總體上和ST結構類似。這裏只列舉ST公司和CH公司的參考比較。
三、寄存器、存儲器地址映射
**這個決定了芯片外設是否兼容,能否可以使用st官方驅動庫。**不一樣的地方、或者有增強的地方、或者省去的地方都可以一目瞭然,並且按照變化來增加或者刪減相關配置。其中只有GD芯片沒有按圖的方式,而是以表的方式給出,其它數據手冊都是按照自己的圖的方式給出。比較可以看出,基本外設地址都是一致的,部分的器件有功能的增加和減少,**這也意味着絕大多數的功能是可以兼容的,但用到一些特定的功能時,需要參考官方例程或者庫,或者移植寄存器地址設置。**例如CH公司在地址0x4002 3400處增加了自己的USBHD地址映射,這是其他芯片沒有的,加之其自有的BOOT,所以能夠輕鬆實現USB下載固件。其它可以按下圖仔細比較異同。
四、自帶的Bootloader兼容性評估
還是以ST的串口下載爲例,以目前官方主推的STM32CubeProgrammer軟件爲標準,看看是否能夠順利下載並運行點燈程序。
程序採用ST官方的HAL庫,主程序代碼如下:blink燈
int main(void)
{
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
HAL_Delay(1000);
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
測試結果:
GD32、APM32可以通過此軟件下載,其它幾種不可以,說明GD32和APM的BootLoader是和STM32兼容的。
五、flash下載算法兼容性評估
兩種方法比較,一種是在編譯環境中,如keil裏採用stlink下載,算法仍然選擇ST中密度的。如下圖。
另外一種方法是仍然用STM32CubeProgrammer軟件下載,採用SWD方式下載。硬件連接方式和軟件配置如下:
測試結果:
GD32、APM32、HS32、CSK32都可以可以正常下載,只有CH32不可以,說明只有CH32的flash算法和ST不兼容。
值得說明的是,CH給出了自己的算法,但需要安裝依賴包器件庫,這樣在keil裏也可以正常下載,另外他自己的bootloader支持串口和usb下載,具體可參考博文:https://blog.csdn.net/weixin_41565556/article/details/111619741
部分公司也提供了自己的器件庫,可方便在keil環境裏開發。
六、總結
國產芯片都有較好的兼容性,並且各有特點,和ST對標,絕大部分內容都是兼容的,其它自身特點和新功能需要仔細查看數據手冊。