前言
首先学习了解一下蓝桥杯嵌入式CT117E-M4开发板的主控芯片STM32G431RBT6,本文仅为个人学习成果总结,如有错误,恳请指正。
一、芯片简介
上图为STM32CubeMX选型界面,如图可以看出STM32G431RBT6具有以下特点和硬件集成。
- 采用Cortex-M4 32位RISC核心架构,工作频率最高可达170Mhz。
- 128kBytes的FLASH,32kBytes的SRAM。
- 封装形式LQFP 64,引脚个数64pin,其中I/O个数52pin。
- CORDIC数学函数硬件加速,FMAC滤波函数硬件加速,CRC校验计算单元,RNG(Random Number Generator)随机数生成器。
- 2个12位的adc,4个比较器,3个运算放大器,4个DAC通道(2个外部和2个内部),1个内部电压参考缓冲器。
- 1个低功耗RTC(Real-Time Clock),1个通用32位定时器,2个16位PWM定时器(专用于电机控制),7个通用16位定时器,1个16位低功耗定时器。
- 1个FDCAN,3个I2C,3个SPI和2个I2S冲突复用(其中的2个I2S和SPI引脚冲突),1个SAI(Serial Audio Interface)音频接口。
- 3个USART,1个UART,1个低功耗UART,一个全速USB(12MBit/s),1个UCPD。
- 工作条件(略)
二、时钟学习
STM32G431时钟框图如下图所示。
1. STM32G431RBT6具有三个不同的时钟源可以提供SYSCLK系统时钟
- 4-48mhz高速振荡器与外部晶体或陶瓷谐振器(HSE)。它可以为系统锁相环提供时钟。HSE也可以配置为bypass,用于外部时钟。
- 16mhz高速内部RC振荡器(HSI16),可由软件微调。它可以为系统锁相环提供时钟
- 系统锁相环(PLL),最大输出频率170 MHz。它可以用HSE16或HSI16时钟送电。
2. 带时钟恢复系统的RC48 (HSI48):内部的HSIRC48 MHz时钟源可用于驱动USB或RNG外设。
3. 辅助时钟源:两个超低功耗的实时时钟源
- 32.768 kHz低速外接晶体振荡器(LSE),支持四种驱动能力模式。LSE也可以配置为bypass模式,使用外部时钟。
- 32 kHz低速内部RC振荡器(LSI),精度±5%,也用于时钟独立看门狗。
4. 外设时钟源:多个外设(I2S、USART、I2C、LPTimer、ADC、SAI、RNG)具有独立于系统时钟的时钟。
5. 时钟安全系统CSS (Clock security system):当HSE时钟发生故障时,系统时钟自动切换到HSI16,如果使能,则产生软件中断。也可以检测到LSE时钟故障并产生中断。
6. 时钟输出功能
- MCO:微控制器时钟输出:它输出一个内部时钟供外部应用程序使用
- LSCO:低速时钟输出:在所有低功耗模式下输出LSI或LSE
三、SRAM学习
stm32G431 x6/x8/xB系列具有32kBytes的SRAM,但是这32k的SRAM被分为三个部分。
- 首先是16kBytes的SRAM被映射到地址0x2000 0000(SRAM1),CPU可以通过系统总线(S-bus)进行控制,也可以通过指令/数据总线控制(I-but/O-but)(详见四、总线矩阵学习),SRAM1支持硬件奇偶校验。
- 其次是6Kbytes被映射到地址0x2000 4000 (SRAM2),CPU只能通过系统总线进行控制,SRAM2可以保持在停止和待机模式。
- 最后是10Kbytes被映射到地址0x1000 0000 (CCM SRAM),CPU主要通过指令/数据总线控制(I-but/O-but),以获取最大的性能,它的别名也是0x2000 5800地址,所有主节点(CPU、DMA1、DMA2)都可以通过S-bus访问,这些S-bus与SRAM1和SRAM2相邻)。CCM SRAM支持硬件奇偶校验,可以以1kbyte的粒度进行写保护。
- 内存可以在最大CPU时钟速度下读写,等待状态为0。
四、总线矩阵学习
STM32G431RBT6总线矩阵如下图所示。
- ICode/Bus 总线 ICode 中的 I 表示 Instruction,即指令。我们写好的程序编译之后都是一条条指令,存放在 FLASH 中,内核要读取这些指令来执行程序就必须通过 ICode 总线,它几乎每时每刻都需要被使用,它是专门用来取指令的。
- DCode/Bus 总线 DCode 中的 D 表示 Data,即数据,那说明这条总线是用来取数据的。我们在写程序的时候,数据有常量和变量两种,常量就是固定不变的,用 C 语言中的 const 关键字修饰,是放到内部的 FLASH 当中的,变量是可变的,不管是全局变量还是局部变量都放在SRAM中。因为数据可以被 Dcode 总线和 DMA 总线访问,所以为了避免访问冲突,在取数 的时候需要经过一个总线矩阵来仲裁,决定哪个总线在取数据。
- S-Bus 系统总线 系统总线主要是访问外设的寄存器,我们通常说的寄存器编程,即读写寄存器都是通过这根系统总线来完成的
- DMA总线(Direct Memory Access)即直接存储器访问。主要用来传输数据,这个数据可以是某个外设的数据寄存存器,可以在SRAM,可以在内部的FLASH。
- AHB总线 (Advanced High performance Bus)高级高性能总线,主要用于内部的处理器,DMA,RAM,CORDIC,FMAC,DAC,ADC,CRC,GPIO等。
- APB总线(Advanced Peripheral Bus)外围总线,主要用于定时器,比较器和各种通信接口等。
五、GPIO学习
STM32G431RBT6具有51个GPIO口可以进行使用。
GPIO可以配置为输出模式(推挽输出/开漏输出),输入模式(上拉/下拉),复用外围器件模式,
- 推挽输出和开漏输出的区别:学习链接 ,**总结来说就是推挽输出可以输出高低电平,但是驱动能力不行,开漏输出无法输出高电平,需要外接上拉电阻,驱动能力强。
- 输入模式:获取IO口的寄存器状态,通过配置上拉和下拉电阻,增强抗干扰能力。
- 复用模式:复用为某些外围电路的专用IO,比如硬件IIC的SCL和SDA。
总结
本次学习和了解了STM32G431RBT6芯片上的片内资源大概和基础的时钟、总线和GPIO知识,希望大家可以一起学习+进步。文章来源:https://www.toymoban.com/news/detail-406120.html
鉴于官方开发板售价过高,本人自己制作了一款蓝桥杯嵌入式开发板,完全兼容官方的开发板,并且接下来会基于这款开发板进行学习和制作学习日志,到时候所拍实物图片会与官方开发板略有不同,如果有意向一起学习的同学也可以私聊我加群互相学习,ps:
找我低价买块开发板自己学习也是可以的~ 。文章来源地址https://www.toymoban.com/news/detail-406120.html
到了这里,关于蓝桥杯嵌入式CT117E-M4学习笔记02-STM32G431RBT6芯片学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!