欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 嵌入式学习笔记 - STM32 I2C 速率以及时钟控制寄存器(I2C_CCR)的设置以及代码实现

嵌入式学习笔记 - STM32 I2C 速率以及时钟控制寄存器(I2C_CCR)的设置以及代码实现

2025/4/28 7:53:44 来源:https://blog.csdn.net/qq_35771411/article/details/147493329  浏览:    关键词:嵌入式学习笔记 - STM32 I2C 速率以及时钟控制寄存器(I2C_CCR)的设置以及代码实现

i2c 100kb/s 这里的b指的bit,就是二进制的一位,所以:

100kb/s =12.5 KB/s,因为1 byte = 8 bits。

寄存器设置:

那么关于时钟控制寄存器(I2C_CCR),如何设置:

CCR= Thigh/Tpclk1 

Thigh=(1/100k)/2=5us, 因为是半个周期所以除以2

为了达到5μs的高电平或低电平时间,需要的底层时钟周期数为 5μs / (1/8) =40, 此处以PCLK1=8M为例说明。

HAL库代码实现:

HAL_I2C_Init(I2C_HandleTypeDef *hi2c)中代码如下

这个MODIFY的功能是,先与非 第二个参数(要设定的寄存器位的掩码),然后或上第3个参数达到设定寄存器相应位的目的。

I2C_SPEED(pclk1, hi2c->Init.ClockSpeed, hi2c->Init.DutyCycle) 代码如下

此段代码没看明白怎么实现的,有看明白的欢迎评论区留言。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词