你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32的IIC笔记

[复制链接]
STMCU小助手 发布时间:2022-8-23 18:34
I2C 速率:
标准模式 —— 100kHz
快速模式 —— 400kHz
快速模式+ —— 1MHz
I2C 时钟源:
SYSCLK
HSI
输出为I2CCLK
隶属于APB1

20201231102346760.png

I2C的波特率

2021010813140691.png

20210126102238152.png

上述两张图中可以得到计算波特率公式:
tSCL = tSYNC1 + tSYNC2 + {[(SCLH+1) + (SCLL+1)] x (PRESC+1) x tI2CCLK}

tSCL 输出波特率周期
tSYNC1 = SCL下降沿 + 滤波 + DNF*tI2CCLK + 2 * tI2CCLK
DNF: 在CR1寄存器中配置
tI2CCLK : RCC->CFGR3 |= RCC_CFGR3_I2C1SW; // tI2CCLK =【(0)HSI 8MHz】【(1)SYSCLK】配置
tSYNC2 = SCL上升沿 + 滤波 + DNF*tI2CCLK + 2 * tI2CCLK
DNF: 在CR1寄存器中配置
tI2CCLK : RCC->CFGR3 |= RCC_CFGR3_I2C1SW; // tI2CCLK =【(0)HSI 8MHz】【(1)SYSCLK】配置
SCLH 在 TIMINGR 寄存器中配置 bit[15:8]
SCLL 在 TIMINGR 寄存器中配置 bit[7:0]
PRESC 在 TIMINGR 寄存器中配置 bit[31:28]
tI2CCLK 在RCC->CFGR3中配置 RCC_CFGR3_I2C1SW 。 tI2CCLK =【(0)HSI 8MHz(0.125us)】【(1)SYSCLK】

官方手册中提供了查表,非常方便:

2021012610511240.png

I2C的软件复位
当清除PE位(I2C_CR1),会产生I2C的软件复位。

软件复位会重置下述寄存器:
I2C_CR2 register: START, STOP, NACK
I2C_ISR register: BUSY, TXE, TXIS, RXNE, ADDR, NACKF, TCR, TC, STOPF, BERR, ARLO, OVR

当处于SMbus状态下,下述寄存器也会被重置:
I2C_CR2 register: PECBYTE
I2C_ISR register: PECERR, TIMEOUT, ALERT

PE复位后,必须在3个APB时钟内保持为低电平,确保软件复位成功。

官方推荐复位操作:
PE = 0; (Write PE = 0)
PE == 0 ?(Check PE = 0)
PE = 1; (Write PE = 1)


I2C的数据接收

20210104092309998.png

I2C 接收分为 移位寄存器 和 R
XDR寄存器。

SDA输入填充移位寄存器。在第8个SCL脉冲之后(当接收到完整的数据字节时),如果移位寄存器是空的(RXNE=0),移位寄存器被复制到I2C_RXDR寄存器。如果RXNE=1,表示前一个接收到的数据字节还没有被读取,SCL行被拉低,直到I2C_RXDR被读取。拉低延时被插入在第8位和第9位之间(在确认脉冲之前)。

I2C的数据发送

20210106132313442.png

I2C的发送分为 移位寄存器 和 TXDR寄存器。

移位寄存器中的值是当前正在发送的值,TXDR寄存器相当于移位寄存器的Buffer,TXE(TXE == 1代表TXDR空)只指示这个Buffer(TXDR)的满或者空状态,因此当TXE置位时,I2C模块可能还在发送数据。
————————————————
转载:Vice Versa XL


收藏 评论0 发布时间:2022-8-23 18:34

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版