日期:2014-05-16  浏览次数:20680 次

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
不支持
  • SCCB协议
  • 高速模式(3.4MBPS)
管脚
管脚 类型 描述
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