大家好,欢迎来到IT知识分享网。
煽情
按照国际惯例,开篇先煽情一下。作为一个电子技术爱好者兼码农,不知不觉已经混迹于电子行业10年了。时光荏苒,转眼已过34岁,渐渐地感到了中年危机的临近。。。。此处省略一万个字。偶然间发现头条作者可以赚奶粉钱,所以搜肠刮肚想写点啥(不知不觉已经成为为了让人憎恨的为了五斗米折腰的势力“小人”)。写情感吧,情商太低;写故事吧,没有天马行空的思绪;写人文吧,一个研究电子电路和编程的人,人文情怀估计也是呵呵了;转来转去,还是决定写自己熟悉的电子技术领域。不知道这个题材会不会有观众,权当技术交流了。个人能力有限,欢迎大牛批评指正,也欢迎后浪们积极提问,我看到后会及时回复。
下面切入正题,所谓通讯协议就是通讯约定和规范。比如,古代用烽火狼烟,来传递外敌入侵的信息,这其实就是通讯技术。烽火狼烟=外敌入侵,这就是通讯协议。既然通讯协议是一种约定和规范,不同的人,不同的地方,不同的场景那就可能会制定出不同的约定和规范,因此,通讯协议也是多种多样的,本篇主要讲IIC。
IIC概述
IIC:两线式串行总线,它是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。
在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbs以上。
时钟线SCL:在通信过程起到控制作用。
数据线SDA:用来一位一位地传送数据。
IIC通讯过程
IIC通信过程由开始、结束、发送、响应、接收五个部分构成。
IIC通讯电平的规定
1、当SCL为高电平时,SDA线不允许变化;
当SCL线为低电平时,SDA线可以任意0、1变化。
2、只有当SCL为高电平时,IIC电路才对SDA线上的电平(0或者1)进行记录,当SCL线为低电平时,无论SDA是高还是低,IIC电路都不对SDA进行采样。
3、I2C总线的SDA和SCL两条信号同时处于高电平时,规定为总线的空闲状态。由两条信号线各自的上拉电阻把电平拉高。
IIC开始信号和停止信号定义
开始信号:
当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平。
停止信号:
当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不是一个电平信号。

开始&停止信号

IIC开始信号程序

IIC停止信号程序
IIC应答信号定义
发送器每发送一个字节,就在时钟脉冲9之前释放一次数据总线,以此向接收器件反馈一个应答信号。应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放SDA线,接下来主控接收器接着发送一个停止信号P,以结束本次通讯。

应答信号电平

IIC应答程序

IIC非应答程序
IIC向总线发送数据
在I2C总线上传送的每位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,SDA逐位地串行传送每一位数据。注意,发送的时候需要先发送数据的字节高位。IIC主器件发送完一个字节后面必须跟一个等待应答函数。

IIC发送字节数据

IIC主器件等待应答函数

IIC接收字节数据
结束
至此,IIC总线收发字节数据已经全部讲完了,第一次发文,请多多支持,您的支持是我最大的动力。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/184465.html