### I2C Module知识点概述
本资料主要针对TMS320x28xx与28xxx系列微控制器中的I2C模块进行了详细介绍。I2C(Inter-Integrated Circuit)是一种用于连接低速器件(如微控制器、EEPROM、A/D转换器、D/A转换器等)的双向两线式串行总线标准。该标准由Philips公司开发,并广泛应用于各种电子设备中。本文档将重点介绍I2C模块的功能特性、操作细节以及相关的寄存器配置等内容。
#### 1. I2C模块简介
- **功能特点**:
- 支持7位和10位地址寻址模式。
- 支持主模式和从模式。
- 内置硬件支持NACK检测和时钟同步。
- 可编程的时钟分频器,支持多种通信速率。
- 具有中断请求功能,可配置不同的中断源。
- 内置FIFO缓冲区,支持数据的快速传输。
- **不支持的功能**:
- 某些高级特性或扩展功能可能未在该版本的I2C模块中实现。
- **功能概览**:
- I2C模块主要由控制逻辑、时钟发生器、数据收发器等部分组成。
- 支持多种通信模式,包括读写操作、多字节传输等。
- 可以作为主控器或从控器参与通信。
- **时钟生成**:
- I2C模块通过内部时钟分频器来调节通信速度。
- 支持外部时钟输入,可以通过配置寄存器来设置时钟频率。
#### 2. I2C模块操作细节
- **输入和输出电压水平**:
- I2C接口的工作电压范围通常为1.8V至5.5V之间,具体取决于微控制器的设计。
- 输入和输出电压电平应符合TTL或CMOS标准。
- **数据有效性**:
- 数据的有效性是基于时钟信号的下降沿确定的。
- 在时钟下降沿之前,数据线必须稳定在一个确定的状态。
- **操作模式**:
- 主模式: 发起数据传输的一方,负责产生起始和终止条件。
- 从模式: 响应主控器发起的请求,执行相应的读写操作。
- 支持复位模式,可以用来初始化模块或重置状态。
- **起始和终止条件**:
- 起始条件是指SCL为高电平时SDA从高到低的变化。
- 终止条件则是指SCL为高电平时SDA从低到高的变化。
- 这两种条件用于标记数据传输的开始和结束。
- **串行数据格式**:
- 数据传输采用7位或10位地址格式,具体取决于配置。
- 包含起始位、地址位、读写指示位、数据位、确认位和终止位等。
- **NACK位生成**:
- NACK(Not Acknowledge)位用于表示接收方未能正确接收到数据。
- 如果NACK位被设置,则后续的数据将不会被接收。
- **时钟同步**:
- 为了确保数据传输的准确性,I2C总线上的时钟信号需要同步。
- 通过内部时钟发生器来保证时钟的稳定性。
- **仲裁机制**:
- 当多个主控器尝试同时控制总线时,会发生冲突。
- I2C模块通过比较发送的数据来解决这种冲突。
#### 3. 中断请求
- **基本I2C中断请求**:
- 支持多种类型的中断,如起始条件、终止条件、数据接收完成等。
- 可以通过中断使能寄存器进行配置。
- **I2C FIFO中断**:
- 支持FIFO(先进先出)缓冲区,当数据溢出或空闲时触发中断。
#### 4. I2C模块重置/禁用
- 通过特定寄存器的配置来实现I2C模块的重置或禁用。
#### 5. I2C模块寄存器
- **I2C模式寄存器 (I2CMDR)**:
- 配置I2C模块的基本操作模式和功能。
- 包括地址格式选择、自动重复启动等功能。
- **I2C中断使能寄存器 (I2CIER)**:
- 用于使能或禁止特定类型的中断请求。
- 可以单独控制每个中断源。
- **I2C状态寄存器 (I2CSTR)**:
- 显示当前I2C模块的状态信息,如忙标志、错误标志等。
- **I2C中断源寄存器 (I2CISRC)**:
- 指示触发中断的具体原因。
- **I2C预分频寄存器 (I2CPSC)**:
- 用于配置时钟分频器的比例。
- **I2C时钟分频寄存器 (I2CCLKLand I2CCLKH)**:
- 设置具体的分频值。
- **I2C从机地址寄存器 (I2CSAR)**:
- 存储从机的地址信息。
- **I2C自身地址寄存器 (I2COAR)**:
- 定义I2C模块自身的地址。
- **I2C数据计数寄存器 (I2CCNT)**:
- 记录数据传输的数量。
- **I2C数据接收寄存器 (I2CDRR)**:
- 存储接收到的数据。
- **I2C数据发送寄存器 (I2CDXR)**:
- 用于存放待发送的数据。
- **I2C发送FIFO寄存器 (I2CFFTX)**:
- 支持数据的快速发送。
- **I2C接收FIFO寄存器 (I2CFFRX)**:
- 用于快速接收数据。
通过以上对I2C模块的详细解析, 我们可以看出该模块提供了丰富的功能和配置选项, 使得开发者能够灵活地设计并实现所需的I2C通信系统。无论是对于初学者还是经验丰富的工程师来说, 熟悉这些内容都将极大地帮助他们更好地利用I2C模块完成项目需求。