avr--TWI(I2C)
扫描二维码
随时随地手机看文章
TWI: 是一种全双工的串行通讯协议,与I2C工作方式相同,由一条数据传输线SDL,一条时钟线SCL组成,对应单片机的外部引脚PC1,PC0。
由于只有两条总线,简化了系统设计。
特点: ? 简单,但是强大而灵活的通讯接口,只需要两根线
? 支持主机和从机操作
? 器件可以工作于发送器模式或接收器模式
? 7 位地址空间允许有128 个从机
? 支持多主机仲裁
? 高达400 kHz 的数据传输率
? 斜率受控的输出驱动器
? 可以抑制总线尖峰的噪声抑制器
? 完全可编程的从机地址以及公共地址
? 睡眠时地址匹配可以唤醒AVR
主机: 控制启动和停止传输的设备。主机同时要产生SCL 时钟
从机: 被主机寻址的设备
发送器: 将数据放到总线上的设备
接收器: 从总线读取数据的设备
TWI工作模式: 主机发送模式(MT)
主机接收模式(MR)
从机发送模式(ST)
从机接收器模式(SR)
例如, TWI 可用MT 模式给TWIEEPROM 写入数据,用MR 模式从EEPROM 读取数据。如果系统中有其它主机存在 ,它们可能给TWI 发送数据,此时就可以用SR 模式。应用程序决定采用何种模式。
模式状态缩写:
S: START 状态
Rs:REPEATED START 状态
R:读一个比特(SDA 为高电平)
W:写一个比特(SDA 为低电平)
A:应答位(SDA 为低电平)
A: 无应答位(SDA 为高电平)
Data:8 位数据
P: STOP 状态
SLA:从机地址
一、主机模式:可以向从机发送数据,进入主机模式,首先发送一个START信号,接着的从机地址决定了进入MT还是MR模式
主机发送(MT): S+SLA+W, 主机接收(MR): S+SLA+R
1、波特率设置:TWBR=100;
2、分频设置: TWSR|=(1< 写过程: 1)、发送启动信号: TWCR=(1< 2)、 等待应答信号: while ((TWCR&(1< 3)、 进入主机写模式: TWDR=0Xa0;// TWDR=SLA+W; //通过在TWDR中写入SLA+W进入主机写模式,SLA+R进入主机读模式 TWCR=(1< while ((TWCR&(1< 4)、发送要写入的地址: TWDR=adress; TWCR=(1< while(!(TWCR&(1< 5)、 发送要写入的数据: TWDR=data; TWCR=(1< while(!(TWCR&(1< 6)、发送停止信号: TWC(1< 读过程: 1)、启动信号: TWCR=(1< while(!(TWCR&(1< 2)、 进入主机写模式:TWDR=0Xa0; //TWDR=SLA+W; TWCR=(1< while(!(TWCR&(1< 3)、写入要读的地址: TWDR=address; TWCR=(1< while(!(TWCR&(1< 4)、发送启动信号: TWCR=(1< while(!(TWCR&(1< 5)、进入主机读模式: TWDR=0Xa1 ;//TWDR=SLA+R; TWCR=(1< while(!(TWCR&(1<