STM32GPIO速度配置究竟改变了什么-笔记
- 摘要
- STM32引脚内部框图
- STM32时钟树
- 端口寄存器
- I/O交流特性定义
摘要
一般有 Low、Medium、High,三种速度选择。速度配置变了硬件什么状态? 对 GPIO 的输入输出信号有什么影响? 编程时如何选取速度参数?或者最直接的 你以为 GPIO口的刷新频率 那么就错了,实际上情况如下解释
含义是什么,是书面意思的速度吗?它是像有些人理解的那样是带宽吗?
STM32引脚内部框图
“输出控制”首先这个频率设置是针对输出信号的
STM32时钟树
GPIO 口是挂接在 AHB 总线上,输入状态的频率也已经确定了是按时钟 APB2分频时钟进行刷新的。
端口寄存器
这些代码实际上最终设置了寄存器,端口配置低寄存器(GPIOX_CRL)。
I/O交流特性定义
当信号的上升时间加下降时间小于2/3个周期并且占空比为50%左右时为最大频率
上升时间和下降时间是由负载决定的,频率提高时,周期 T 逐渐缩短而 Tr 和 Tf 保持不变。他们在一个周期内的占比会逐渐上升而使稳定高电平和稳定低电平这一段Tw 越来越短,如果要使这个输出的数字信号能有效地被接收端正确识别,Tw 就不能太短,所以定义当 Tw 缩短到1/6 T 时就不能再短了。
最大频率受制于上升沿和下降沿。
设置三种或者四种 GPIO 速度模式,实际上是上并和下降时间的设置。
那么这个频率是信号带宽吗?
因为输出最大频率时波形实际上已经接近正旋波了,其 3dB 带宽稍大于信号的频率
信号的上升时间和下降时间是由电路的驱动能力和负载电容决定的当负载电容一定时,GPIO 端口的驱动能力越大,充放电的电流也越大、上升时间就越短。
三种模式是改变那部分的是改变了芯片电路中的哪个部分。从而达到调整上升和下降时间的呢?
输出控制的MOS管的驱动电压,使它们有不同的导通电阻,从而控制驱动输出的电流,影响上升沿和下降沿。
尤其是多个 GPIO 端口同时输出时,在信号切换电平的瞬间会有一个很大的尖峰电流。
也就是这个尖峰电压会产生一个很大的干扰电压。