IIC详解

IIC详解

本文若有不够严谨的地方,欢迎大家指出,一起进步~~

一、背景

作为才入职的一枚萌新(刚毕业,因为学校里出了一点事情所以现在才找工作入职),进了一家行业内不错的公司。因为走的是社招流程,所以导师培养我的方法不太一样,第一周就直接做实际项目了(我也不知道应届生的培训是怎样的,但估计要比我全面的多555555)。 我做的第一个项目是关于IIC的项目,可是我在大学期间并没有很深入的了解IIC,这可怎么办呀…还好导师给了我足够的时间去学习(万幸)。

二、IIC概念

IIC是一种同步串行的总线。IIC有两条线,分别是数据线SDA和时钟线SCL。所有数据都是通过SDA线传递的,SCL线并不传输数据,它只是提供时钟周期。

三、IIC具体信号

IIC的起始信号:SCL为高电平时,SDA出现下降沿,代表起始信号;

IIC发送数据“1”:SDA为高电平时,SCL也为高电平。注意是要在SDA为高电平时,SCL也为高电平,这中间有个包含关系;
在这里插入图片描述
IIC发送数据“0”:SDA为低电平时,SCL为高电平。同样的,这里也有一个包含关系。
在这里插入图片描述
IIC发送停止信号:SCL为高电平时,SDA为上升沿。
在这里插入图片描述
总结一下:当SCL为高电平时,SDA的改变代表了起始或停止信号;若SDA线想传输数据,必须在SCL为低电平时进行改变;只有在SDA线与SCL线均保持稳定时才能代表发送了一个数据。

四、IIC实际应用

起始很多小伙伴是知道我上面所说的那些部分的,但一到具体应用上面就卡壳了,这是因为大家没有实践过,对IIC的理解不够深导致的,下面我来带领大家完成一个利用IIC协议完成的具体操作。

我们以8025T为例,这个器件和我们常用的ds12c887一样是读写时间的一个芯片,不同之处在于它使用了IIC通讯。 下图是它的读写时序:

在这里插入图片描述
在这里插入图片描述
上面是写时序,下面是读时序。 我们先从写时序看起:
(1)发送起始信号;

(2)发送7位从机地址;

(3)发送读写标志位;

(4)等待从机返回的ACK;

(5)发送要写入的寄存器地址;

(6)等待从机返回的ACK;

(7)发送8位数据;

(8)等待从机返回的ACK;

(9)发送停止信号;

注:若要连续发送数据,可以重复第七步与第八步操作,寄存器地址会自动加1。

下面来看读时序:

(1)发送起始信号;

(2)发送7位从机地址;

(3)发送读写标志位;

(4)等待从机返回的ACK;

(5)发送要写入的寄存器地址;

(6)等待从机返回的ACK;

(7)发送起始信号;

(8)发送7位从机地址;

(9)发送读写标志位;

(10)等待从机返回的ACK;

(11)发送8位数据;

(12)向从机发送ACK/NOACK;

(13)发送停止信号;

注:当只读一个字节的数据时,我们只用在最后发一个NOACK即可,若是连续读(寄存器地址自动增加),要在处最后一组数据外发送ACK,在最后一组数据后面发送NOACK,最后发送停止信号即可。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
IIC(Inter-Integrated Circuit)是一种串行通信总线协议,用于在集成电路之间进行通信。它具有简单、高效、可靠的特点,广泛应用于各种电子设备中。 根据引用\[2\]中的内容,IIC总线协议包括以下几个步骤: 1. 起始状态和结束状态:通信开始时,主机发送起始信号,然后发送设备地址和读/写位。通信结束时,主机发送停止信号。 2. 数据传输:主机通过IIC总线向从机写入数据时,将数据发送到从机的地址中。主机从从机读取数据时,从机将数据发送到总线上。 3. 应答信号:在每个数据字节传输后,接收方会发送应答信号,表示是否成功接收数据。 根据引用\[1\]和引用\[3\]中的代码,可以看出顶层模块`iic_send_top`和`iic_recv_top`分别用于发送和接收数据。这些模块通过IIC总线与设备进行通信,并通过时钟信号和数据线进行数据传输。 综上所述,IIC verilog详解主要包括IIC总线协议的特点、通信步骤和数据传输方式,以及通过Verilog代码实现IIC发送和接收功能的设计思路和接口定义。 #### 引用[.reference_title] - *1* *2* *3* [IIC总线的原理与Verilog实现](https://blog.csdn.net/qq_38695100/article/details/119153048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值