STM32等基于 ARM Cortex内核的微控制器,凭借丰富的片上资源与简单易用的标准外设库,逐步成为消费与工业领域中的主流产品。
我们所说的STM32F103C8T6是属于市场上用得比较广泛的一种型号,意法提供的标准外设库对 STM32片上资源进行了封装,标准库和HALL库相比,标准外设库比较接近于传统的寄存器操作,国产GD32微控制器在很多方面都可以移植替代。
STM32F103C8T6是一款基于 ARM 32位 Cortex™-M3内核,电压使用范围是2.0V ~ 3.6V,工作频率最高可以达到72MHz,内部采用64K或128K字节 Flash程序存储器,以及高达20K字节的 SRAM数据存储器;内置 CRC循环冗余校验以及 96位编码( 24位的十六进制数)的芯片唯一序列号。
它的主系统由 4个控制单元(DCode总线D-bus、系统总线S-bus、通用DMA1、通用DMA2)以及 4个受控单元(内部SRAM、内部Flash、FSMC、AHB到 APB的桥AHB2APBx)组成,它们通过一个多级的 AHB总线相互进行连接。
ICode总线:连接 M3内核指令总线与 Flash的指令接口,主要作用是进行指令预取。
DCode总线:连接 M3内核 DCode总线与 Flash的数据接口,主要作用是完成调试访问和常量加载。
System总线:连接 M3内核系统总线与总线矩阵 Bus Matrix,用于协调内核与 DMA之间的通信。
DMA总线:连接 DMA的 AHB主接口与总线矩阵 Bus Matrix,用于协调 DCode和 DMA对 SRAM、Flash以及其它外设的访问。
Bus Matrix总线矩阵:利用轮换算法管理内核系统总线与 DMA主总线之间访问的仲裁,由 4个控制单元(DCode、系统总线、DMA1和 DMA2总线)以及 4个受控单元(FLITF、SRAM、FSMC、AHB2APB桥)组成。
时钟系统
由于 STM32外设资源众多,工作的时钟频率各不相同,所以采用了多达 5个时钟源:片上经过出厂调校的8MHz RC振荡器系统时钟HSI,以及带校准的40kHz RC振荡器作为实时时钟LSI,也可以采用外置4 ~ 16MHz晶体振荡器作为系统时钟HSE,以及带校准功能的32kHz RTC振荡器作为实时时钟LSE;最后还内置了用于对 CPU时钟进行倍频的的PLL锁相环。
GPIO
STM32F103C8T6采用 LQFP48方式封装,一共拥有 37个 I/O引脚,被分为PA(15个)、PB(15个)、PC(3个)、PD(2个)、PE(0个)五个组,所有 I/O接口可以映像到 16个外部中断,并且大部份端口都可以可以兼容5V信号。每个 I/O端口可以接受或输出8mA电流,灌电流则可达到20mA。除了模拟输入功能的引脚之外,所有 GPIO都拥有大电流通过能力。根据我们的需要可以对 GPIO进行锁定,主要是防止意外擦写 GPIO相关的寄存器。位于APB2上的 GPIO引脚,其脉冲转换速度可达18MHz。
定时器
STM32F103C8T6拥有 7个定时器,其中 1个用于电机控制的 16位 PWM高级控制定时器、3个 16位通用定时器、2个看门狗定时器(包含独立型的和窗口型)、1个 24位自减型系统嘀嗒定时器。
通信接口
STM32F103C8T6拥有 2个 I²C接口、3个 USART接口、2个 SPI接口、1个 CAN接口、1个 USB 2.0全速接口。
DMA(直接内存存取,Direct Memory Access)用来提供在外设与存储器或者存储器与存储器之间的高速数据传输,传输过程无需经过 CPU进行干预,数据直接通过 DMA快速进行操作,从而节省大量 CPU资源。
STM32F103C8T6的优点:
1.资料教程丰富,在网上一搜,一堆答案。
2.稳定且性价比高
早期的时候STM32性价比还是很高的,现在价格似乎也慢慢回落了。STM32的话性能很稳定,不会有奇奇怪怪问题。
3.可移植性做得很好
最强大的就是他们的库,很多芯片基本都是大同小异,比如使用STM32F030的切换到STM32F103也很轻松,代码风格和定义非常相似。这样有助于产品快速更新迭代。
4.量大
有一个现象就是,如果芯片涨价,那涨得最猛的肯定是量最大的那颗,STM32F103C8T6就是典型的例子。
市场占有率大,这样的话产品不会有芯片交期的困扰。
但是特别量大的情况下,很多公司会选择用国产芯片。
5.生态完善
ST的产品生态和开发生态都已经相对完善了。
官网提供了很多行业应用的方案选型,估计很多人忽略了。
如果你在做一款产品,确定用STM32,但是不知道哪个型号合适,可以到他们官网的应用找找。
其它单片机外设资料、Flash、RAM就没啥说的了,现在基本都是大同小异。