学习笔记——IIC通信协议(一)

一、原理

1、IIC介绍

        (1)IICInter IC Bus)是一种同步、半双工的通用数据总线。

        (2)两根通信线:SCLSerial Clock)、SDA(Serial Data),带数据应答。

        (3)支持总线挂载多设备(一主多从、多主多从),IIC在总线冲突时会通过总线进行仲裁。

2、IIC硬件电路

         IIC禁止所有设备输出强上拉的高电平并采用外置弱上拉电阻加开漏输出(只能输出低电平)的电路结构,来防止主机和从机同时为输出模式。(拉杆子模型)

3、IIC时序基本元素     

        1、起始条件和终止条件

         在主机从机都不碰SCL和SDA时,由外接的上拉电阻将两根线的电平拉高,同为高电平。

        在起始条件下,SCL处于高电平不去动他,主机将SDA拉下来,当从机检测到时,会进行自身的复位,等待主机召唤。在SDA低电平之后,主机会将SCL线再拉下来在,一方面占用总线,另一方面方便拼接。

        在终止条件下,要SCL先放手,然后置SDA为高电平。SCL和SDA回到最初的平静状态。

        起始和终止都由主机控制,从机不允许。

        2、发送一个字节

         主机拉低SCL-->主机将数据放在SDA上-->主机拉高SCL-->从机立刻读取SDA-->主机再拉低SCL·····

3、接收一个字节

         主机释放SDA-->从机在主机控制的SCL低电平期间-->从机放数据到SDA-->从机释放SCL-->主机读取SDA-->主机拉低SCL······

4、发送应答和接收应答

4、IIC时序

        每个从机都由自己的独有的地址。

        1、指定地址写

         对于从机地址为1101000+0(写指令)的设备,在其内部0x19地址的寄存器中,写入0xAA这个数据。

        2、当前地址读

         主机先发1101000+1(读指令),从机应答后,主机就要放手SDA了,由从机往SDA上放数据,然后主机在SCL高电平期间读取数据。

        3、指定地址读

         先寻找从机地址-->主机指定从机的寄存器的一个地址-->重复一个起始条件-->主机发送读指令-->从机发来从机指定的寄存器地址下的数据-->主机给从机一个非应答(只想读到当前)/主机给从机一个应答(想继续往后面读取)

二、代码实现(使用GPIO口模拟IIC时序)

1、起始条件

2、终止条件

 3、发送一个字节

 4、接收一个字节

 5、发送应答

 6、接收应答

 三、代码运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值