如何理解stm32中GPIO口的最大输出速度?
1个回答
展开全部
几种速度的区别:\x0d\x0a(1). GPIO 引脚速度: GPIO_Speed_2MHz (10MHz, 50MHz) ;\x0d\x0a 又称输出驱动电路的响应速度:(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路,通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。)\x0d\x0a 可理解为: 输出驱动电路的带宽:即一个驱动电路可以不失真地通过信号的最大频率。\x0d\x0a(如果一个信号的频率超过了驱动电路的响应速度,就有可能信号失真。失真因素?)\x0d\x0a如果信号频率为10MHz,而你配置了2MHz的带宽,则10MHz的方波很可能就变成了正弦波。就好比是公路的设计时速,汽车速度低于设计时速时,可以平稳地运行,如果超过设计时速就会颠簸,甚至翻车。\x0d\x0a关键是: GPIO的引脚速度跟应用相匹配,速度配置越高,噪声越大,功耗越大。\x0d\x0a带宽速度高的驱动器耗电大、噪声也大,带宽低的驱动器耗电小、噪声也小。使用合适的驱动器可以降低功耗和噪声\x0d\x0a比如:高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。关键是GPIO的引脚速度跟应用匹配(推荐10倍以上?)。\x0d\x0a比如:\x0d\x0a>① >USART串口,若最大波特率只需115.2k,那用2M的速度就够了,既省电也噪声小。\x0d\x0a>② >I2C接口,若使用400k波特率,若想把余量留大些,可以选用10M的GPIO引脚速度。\x0d\x0a>③ >SPI接口,若使用18M或9M波特率,需要选用50M的GPIO的引脚速度。\x0d\x0a(2). GPIO的翻转速度指:输入/输出寄存器的0 ,1 值反映到外部引脚(APB2上)高低电平的速度.手册上指出GPIO最大翻转速度可达18MHz。\x0d\x0a@通过简单的程序测试,用示波器观察到的翻转时间: 是综合的时间,包括取指令的时间、指令执行的时间、指令执行后信号传递到寄存器的时间(这其中可能经过很多环节,比如AHB、APB、总线仲裁等),最后才是信号从寄存器传输到引脚所经历的时间。 \x0d\x0a如:有上拉电阻,其阻值越大,RC延时越大,即逻辑电平转换的速度越慢,功耗越大。\x0d\x0a(3).GPIO 输出速度:与程序有关,(程序中写的多久输出一个信号)。\x0d\x0a2、GPIO口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。\x0d\x0a3、在复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。\x0d\x0a4、所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。\x0d\x0a5、GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询