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)
{
HAL_Init();
while (1)
{
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);
}
}
测试结果:
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对标,绝大部分内容都是兼容的,其它自身特点和新功能需要仔细查看数据手册。