I2C模块功能知识点梳理
简介
- 多主机
- 用于控制I2C的时序,协议,仲裁和定时
- 标准和快速两种模式
- CRC码生成和校验
- 总线功能:SMBus和PMBus
- 可使用DMA
主要特点
- 并行协议转换器
- 多主机功能,可做主机和从机
- 主机:产生时钟和起始位,终止位
- 从机:可编程地址,双地址能力,停止位检测
- 产生和检测:7/10位地址和广播呼叫
- 通信速度:100K和400K
- FLAG:状态和错误,状态包括发送器和接收器模式,字节发送结束和BUS忙
- 错误包括,仲裁丢失,应答错误,错误起始位终止位,时钟上溢和下溢
- 通信过程和错误均可触发中断
- 可选的时钟拉长功能,时钟延长:等待读取数据寄存器,中间可以有延时,如果禁止,则报警输出过载错误。
- 可选DMA功能,以及PEC检测,SMBusG功能
功能描述
模式选择
- 4种模式,主从收发
- 默认从机,生成起始条件后,自动转主机,仲裁丢失或产生停止信号,自动转从机。
- 8位传输,高位在前,起始条件+1字节/2字节地址,接收器发回应答信号。
从机模式
- 时钟:2M和4M
- 检测起始位,将地址存入和比较
- 如果从机为发送,则数据入DR,此时SCL为低电平,等待地址被复位和SDA准备好,收到应答可中断,然后检测到停止条件,可中断
- 如果从机为接收则跟上述相反
主机模式
- 用过START产生起始条件,进入主模式
- 操作顺序
- 设置模块时钟
- 时钟寄存器
- 上升时间寄存器
- 启动I2C
- 产生起始条件
- 发送从地址
- 根据最后一位决定:继续发送OR接收
- 设置STOP位产生终止,自动进入从机模式
- 同样有4种错误:总线错,应答错,仲裁错和过载
DMA功能
- DMA产生条件为:DR发送变空和接收变满
- DMA设置的数据量完成,则发送ETO,产生中断
- DMA步骤
- I2C的DR地址
- 存储地址
- 发送字节数
- 通道优先级
- 中断条件:一半还是全完
- 激活通道
中断请求
- 通信中断:起始位,地址,10位头,停止,数据传输完,接收缓冲满和发送空
- 错误中断:总线,仲裁,响应,过载,以及PEC,超时和SMB提醒
时钟延时,PEC和SMBus功能
- 略过