找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5422|回复: 1
打印 上一主题 下一主题
收起左侧

一个与STM32 GPIO输出速率相关的话题

[复制链接]
跳转到指定楼层
楼主
ID:98618 发表于 2016-10-12 00:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
对于STM32芯片,其GPIO输出可根据不同的应用需求而灵活选择不同档次的输出速率。一般分为低、中、高或者很高几个档次,具体速率视不同的STM32芯片而定。

不妨以STM32F407为例,它分四个输出档次,具体的数值范围参考芯片数据手册的I/O的交流特性部分。




这个输出速率主要体现I/O驱动电路的输出反应能力,通过选择不同的输出驱动速率,实现最佳的噪声与和功耗控制。不难理解,选择输出驱动速率越高,噪声也越大,相应的芯片功耗也会越大。所以对于这个输出频率的选择,不要太随意,合适就好。在满足应用的需求的前提下,就不要随意往高端速率选择。


这里说几个简单的应用案例,以加深印象和理解。


1、LED闪烁快慢不一致

某客户使用STM32F4芯片做产品开发,其中用到 while( count++ > 0xffffff) 做软件delay,然后让LED闪烁。相关代码甚为简单,却发现产品的一致性不好,LED 闪烁有的快有的慢。

反复排查代码原因,未发现程序逻辑错误。后来尝试将LED 驱动脚的Output Speed设置从very high调整为 low 后一切正常。


2、Audio 噪声

某客户使用STM32芯片做产品开发。其中有I2S的音频播放功能。客户在调试时用到Printf串口打印,发现使用printf输出时会出现噪音,如果关闭printf则正常。

后来,反复查看代码,直到将UART的TX输出端口的管脚输出速率由very high改为Low后噪声消失。


3、SPI通信异常

有人使用STM32芯片开发产品,其中用到SPI通信。STM32做主,其它外围器件做从,有时发现SPI读取数据总是出错。

对于这里的通信出错,如果SPI通信端口脚的输出速率选择跟实际通信速率不合适的话也会出现。相比实际速率需求,过高或过低了都会导致通信出错。


好,抛砖引玉似地罗列上面几个案例。这里顺便聊下跟GPIO输出速率有关的I/O补偿单元。


目前STM32家族的9大系列里面,其中高性能的STM32F2/STM32F4/STM32F7系列的芯片,都带有GPIO补偿单元。



该补偿单元的功能就是对GPIO的输出摆率进行合理控制以降低I/O噪声和功耗。当你在产品开发中需要配置50M或更高的输出速率时,强烈建议开启该补偿单元。


总之,对于STM32 GPIO输出速率的选择问题,我们在开发应用中要多加注意。如果因为这个输出速率选择导致麻烦,原因往往比较隐晦,很难直接从代码语句或程序逻辑上找到突破。在满足实际应用需求的前提下,速率就低不就高,这对降低功耗、减少噪声、改善EMI都有好处。当然,如果选择过低于实际需求的输出速率也不可取,那样会导致输出失真、通信异常等问题,自然也违背了ST设计多档位输出速率的初衷。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:142395 发表于 2016-10-12 02:51 | 只看该作者
高知识,学习中
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表