IIC通信协议技术说明

IIC通信协议技术说明简介IICBus最早是Philips半导体开发的两线时串行总线,经常用于微控制器和外设之间的连接。IIC通信方式为半双工,只有一根SDA线,同一时间只可以单向通信,485为半双工,SPI和UART为全双工。网络拓扑SDA:串行数据线SCL:串行时钟线数据传输每个字节传输必须带有响应位ACK,相关的响应时钟也有主机产生,在响应的时钟脉冲期间(第9个时钟周期),发送端释放SDA线,接收端把SDA拉低。SCL第9位时钟高电平信号期间,SDA拉低代表了有ACK响应位。当出现非响应NACK位:

大家好,又见面了,我是你们的朋友全栈君。

简介

IIC Bus 最早是Philips半导体开发的两线时串行总线,经常用于微控制器和外设之间的连接。IIC通信方式为半双工,只有一根SDA线,同一时间只可以单向通信,485为半双工,SPI和UART为全双工。

网络拓扑

在这里插入图片描述
SDA:串行数据线
SCL:串行时钟线

在这里插入图片描述

数据传输在这里插入图片描述

每个字节传输必须带有响应位ACK,相关的响应时钟也有主机产生,在响应的时钟脉冲期间(第9个时钟周期),发送端释放SDA线,接收端把SDA拉低。SCL第9位时钟高电平信号期间,SDA拉低代表了有ACK响应位。
当在SCL第9位时钟高电平信号期间,SDA仍然保持高电平,这种情况定义为NACK。这种情况下,主机可以直接产生STOP条件,终止以后的数据传输或者重新START开始一个新的传输。
出现非响应NACK位:
1.接收机没有发送机响应的地址,接收端没有任何ACK发送给发射机
2.由于接收机正在忙碌处理实时程序导致无法接收或者发送
3.传输过程中,接收机识别不了发送机的数据和命令
4.主机接收完成读取数据后,要发送NACK结束告知从机

操作演示

1.主设备从从设备中写数据
2.主设备从设备中读数据
3.主设备往从设备写数据,然后重启起始条件,紧接着从从设备读取数据

  • 从设备中读流程
/* @brief @param1 器件slave address 地址 @param2 数据的地址 @param3 数据 */
uint8_t IIC_ReadOneByte(uint8_t addr, uint8_t reg, uint8_t* data)
{ 
   
    IIC_Start();                                           // 开始 调整SDA和CLK电平
    IIC_Send_Byte(addr << 1 | I2C_Direction_Transmitter);  // 确定数据传输方向
    if (IIC_Wait_Ack())                                    // 等待ACK反馈,此时SDA为输入口
	{ 
   
        IIC_Stop();
        return 0;
    }
    IIC_Send_Byte(reg);                                    // 发送数据的地址
    IIC_Wait_Ack();
	IIC_Start();
	IIC_Send_Byte(addr << 1 | I2C_Direction_Receiver);  // 确定数据传输方向
	IIC_Wait_Ack();
    *data = IIC_Read_Byte();          //读数据 
    IIC_NAck();
    IIC_Stop();
 }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136579.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月3日 上午11:46
下一篇 2022年6月3日 上午11:46


相关推荐

  • 常用滤波器设计之低通滤波器、高通滤波器、带通滤波器、带阻滤波器

    常用滤波器设计之低通滤波器、高通滤波器、带通滤波器、带阻滤波器本文为转载内容,原文地址为点击打开链接。下两个滤波器都是切比雪夫I型数字滤波器,不是巴特沃尔滤波器,请使用者注意!1.低通滤波器使用说明:将下列代码幅值然后以m文件保存,文件名要与函数名相同,这里函数名:lowp。functiony=lowp(x,f1,f3,rp,rs,Fs)%低通滤波%使用注意事项:通带或阻带的截止频率的选取范围是不能超过采样率的一半%即,f1,f3的值都要小于Fs/…

    2022年6月2日
    31
  • 豪华版飞机大战系列(六)–附源代码

    豪华版飞机大战系列(六)–附源代码

    2022年1月20日
    45
  • jquery 字符串转数组

    如何把字符串”123,abc,xy,hi”转换成数组或者jQuery数组vararr=’123,abc,xy,hi’.split(‘,’);for(variinarr){alert(arr[i])}出处:http://www.cnblogs.com/xiaomuv587/archive/2012/10/18/2729766.html

    2022年4月14日
    143
  • 平板远程控制电脑_平板远程桌面

    平板远程控制电脑_平板远程桌面当下的局势,移动办公已经成为主流,远程控制工具也成为了我们日常办公不可或缺的软件。

    2025年8月22日
    4
  • webstorm激活码2021【2021.8最新】

    (webstorm激活码2021)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsa…

    2022年3月26日
    55
  • Win7系统解决无法打开任务管理器「建议收藏」

    Win7系统解决无法打开任务管理器「建议收藏」Win7系统解决无法打开任务管理器有时候在使用Win7系统过程中会出现无法打开任务管理器的情况,以下内容给出几种常见的打开任务管理器的方式以及无法启动任务管理器时的简单解决方案。Win7系统解决无法打开任务管理器常用打开任务管理器的方式一、快捷键方式二、命令行方式解决方案常用打开任务管理器的方式一、快捷键方式Ctrl+Alt+DelCtrl…

    2022年6月22日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号