STM32硬件I2C时序配置和最高速度测试

本文介绍了如何在STM32G431平台上使用LL库优化I2C的timing参数,揭示了时序设置的细节,包括SCL和SDA时间,以及预分频的影响。作者实测显示,通过硬件I2C可以实现3.12MHz的通信速率,强调了硬件在I2C速度和稳定性上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前一直用STM32cubemx配置得I2C,在cubemx里最高只能给到1MHz,然后那个时序又不怎么看得懂,于是就一度以为最高只能1MHz。

今天忙里偷闲研究了下I2C的timing寄存器

操作平台STM32G431,使用LL库

先贴手册

这是一个32bit寄存器

bit【0~7】SCLL,SCL低电平时间

bit【8~15】SCLH,SCL高电平时间

bit【16~19】SDADEL,数据保持时间,在SCL拉低多久后SDA可以变化

bit【20~23】SCLDEL,数据设置时间,在SDA上加载本次传输的0/1后多久SCL拉高(通知从机数据有效)

bit【28~31】PRESC,时钟源预分频

SCL高低电平时间很好理解

SDADEL和SCLDEL可以参考下图我框出来的,I2C在SCL高电平时数据有效,这个时间主要就是为了防止SCL高电平时SDA数据还没准备好,可以想象大部分情况下给到0其实也不会有问题,但原则上还是至少给1避免不稳定因素

关于timing参数的最小时间单位,我的理解是时钟树配给I2C的频率除去预分频就是了 ,例如160M主频如果不分频,那么timing的数字就表

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值