Linux I2C设备驱动编写(三)-实例分析AM3359
TI-AM3359 I2C适配器实例分析
I2C Spec简述
特性:
- 兼容飞利浦I2C 2.1版本规格
- 支持标准模式(100K bits/s)和快速模式(400K bits/s)
- 多路接收、发送模式
- 支持7bit、10bit设备地址模式
- 32字节FIFO缓冲区
- 可编程时钟发生器
- 双DMA通道,一条中断线
- 三个I2C模块实例I2C0\I2C1\I2C2
- 时钟信号能够达到最高48MHz,来自PRCM
不支持
管脚
管脚 |
类型 |
描述 |
I2Cx_SCL |
I/OD |
I2C 串行时钟 |
I2Cx_SDA |
I/OD |
I2C 串行数据 |
I2C重置
- 通过系统重置PIRSTNA=0,所有寄存器都会被重置到上电状态
- 软重置,置位I2C_SYSC寄存器的SRST位。
- I2C_CON寄存器的I2C_EN位可以让I2C模块重置。当PIRSTNA=1,I2C_EN=0会让I2C模块功能部分重置,所有寄存器数据会被暂存(不会恢复上电状态)
数据有效性
- SDA在SCL高电平期间必须保持稳定,而只有在SCL低电平期间数据线(SDA)才可以进行高低电平切换
开始位&停止位
当I2C模块被设置为主控制时会产生START和STOP:
- START开始位是SCL高电平期间SDA HIGH->LOW