一般DSP 上面都集成了I2C 模块,这样在连接外部器件时可以很方便的控制外部的器件。I2C基本上都是用于外部控制的,因为是是串行总线。在我们的实验板上I2C 总线连接到了两个从设备上面,一个是我们的eeprom,另一个是我们的音频芯片 AIC23。通过 I2C 协议我们写入和读取 eeprom 数据,控制AIC23 的声音一些属性! 简介一下 I2C 协议的规则: 一. 技术性能: 工作速率有 100K 和 400K 两种; 支持多机通讯; 支持多主控模块,但同一时刻只允许有一个主控; 由数据线 SDA 和时钟 SCL 构成的串行总线; 每个电路和模块都有唯一的地址; 每个器件可以使用独立电源 二. 基本工作原理: 以启动信号 START 来掌管总线,以停止信号 STOP 来释放总线; 每次通讯以START 开始,以STOP 结束; 启动信号 START 后紧接着发送一个地址字节,其中 7 位为被控器件的地址码,一位为读/写控制位 R/W,R/W 位为 0 表示由主控向被控器件写数据,R/W 为 1 表示由主控向被控器件读数据; 当被控器件检测到收到的地址与自己的地址相同时,在第 9 个时钟期间反馈应答信号; 每个数据字节在传送时都是高位(MSB)在前; 写通讯过程: 1. 主控在检测到总线空闲的状况下,首先发送一个 START 信号掌管总线; 2. 发送一个地址字节(包括 7 位地址码和一位 R/W); 3. 当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK); 4. 主控收到 ACK 后开始发送第一个数据字节; 5. 被控器收到数据字节后发送一个 ACK 表示继续传送数据,发送 NACK 表示传送数据结束; 6. 主控发送完全部数据后,发送一个停止位 STOP,结束整个通讯并且释放总线; 读通讯过程: 1. 主控在检测到总线空闲的状况下,首先发送一个 START 信号掌管总线; 2. 发送一个地址字节(包括 7 位地址码和一位 R/W); 3. 当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK); 4. 主控收到 ACK 后释放数据总线,开始接收第一个数据字节; 5. 主控收到数据后发送 ACK 表示继续传送数据,发送 NACK 表示传送数据结束; 6. 主控发送完全部数据后,发送一个停止位 STOP,结束整个通讯并且释放总线; DSP 中IIC 模块框图: 1. 总线空闲状态 SDA 和SCL 两条信号线都处于高电平,即总线上所有的器件都释放总线,两条信号线各自的上拉电阻把电平拉高; 2. 启动信号START ...