1. I2C学习要点
1.有2条双向串行线,一条数据线SDA,一条时钟线SCL
如果只做master SCL可以只是输出
SDA在PAD上一定是inout pin,当然转为数字信号时可以分为两组
inout SDA;
input sda_i;
output sda_o;
wire sda_oen;
assign SDA = (sda_oen == 0) ? sda_o : 1'bz;
assign sda_i = SDA;
在GPIO的OD模式,输出三态缓冲输出高阻态时,SDA总线上是高电平,所以GPIO的oen可直接接sda_o,输出三态缓冲门输入tie0
实际与GPIO的连接可参考:
I2S和I2C分别如何连接pad_cy413026的博客-CSDN博客典型的pad及其接口如下图所示:一般情况下IE信号直接tie 1.因为大部分都不会做输入控制。https://blog.csdn.net/cy413026/article/details/128413260?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22128413260%22%2C%22source%22%3A%22cy413026%22%7D
2.以1byte为数据传输单位,如果需要继续传输,需要数据接收端(可能是slave,也可能是master)在SDA上返回ACK
也就是说在发送8bit数据后 发送数据端会释放总线,oen=1输出高阻,等待接收端在第9个SCL高电平时返回SDA=0,否则进入stop
3.输出SCL的是master
4.slave有地址,master要和某个slave通信时 先发送地址,广播地址为0,地址的bit0 表示读还是写
5.I2C采样数据在SCL高电平,而不是边沿,所以SDA数据在SCL低电平时可以变化,在高电平保持
6.一旦在SCL的高电平期间 SDA发生变化,要么时start状态要么是stop状态
7.可以使用普通GPIO口模拟I2C,但要需要将GPIO配置成OD模式(开漏模式)
2.接口时序
具体时序参考以下:
【科普贴】I2C接口详解——偏硬件解析_湉湉家的小虎子的博客-CSDN博客_i2c接口一、 I2C接口简介I2C最早是Philips公司开发的一款简单的双向总线,实现有效的IC控制。把这个总线写成Inter IC 简称IIC或I2C(PS:说白了2就是两个“I”的意思。)I2C总线一些特征:1、只有两根线分别是串行数据线(SDA),串行时钟线(SCL)。2、每个连接到总线的器件有唯一一个地址。3、总线中可以存在一个主机多个从机的模式,也存在多个主机的模式(实际应用非常少,本文不做累述)。4、使用串行8位双向数据传输方式。有标准模式(Standard mode)传输速度达1https://blog.csdn.net/zangqihu/article/details/123247532
I2C接口__Charles_Chen的博客-CSDN博客_i2c接口1.I2C协议 2条双向串行线,一条数据线SDA,一条时钟线SCL。 SDA传输数据是大端传输,每次传输8bit,即一字节。 支持多主控(multimastering),任何时间点只能有一个主控。 总线上每个设备都有自己的一个addr,共7个bit,广播地址全0. 系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,具体由原理图和芯片手册共同定义! 例如: 以AT24C02存储器为例: 通过查阅芯片手册发现 设备地址=01010A2A1...https://blog.csdn.net/chenhuanqiangnihao/article/details/112556391
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)