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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • WinZip Pro 9 for Mac(专业zip压缩解压工具)

    WinZip Pro 9 for Mac(专业zip压缩解压工具)WinzipMac是Mac上的老牌解压缩软件,老字号的压缩软件当然更稳定更靠谱。WinzipMac注册版率先支持ribbon界面,支持ZIP、CAB、TAR、GZIP、MIME,以及更多格式的压缩文件。您可以压缩并加密文件更快捷,更安全。安装:WinZipPro9forMac(专业zip压缩解压工具)zip压缩工具Mac版功能亮点压缩文件以节省空间并发送更快的电子邮件压缩文件可节省宝贵的存储空间,减少文件上载/下载时间,并使您可以发送更快,更高效的电子邮件。-新!WinZ

    2022年9月25日
    2
  • MC蒙特卡洛_我的世界mcc是什么

    MC蒙特卡洛_我的世界mcc是什么MCMC(一)蒙特卡罗方法MCMC(二)马尔科夫链MCMC(三)MCMC采样和M-H采样MCMC(四)Gibbs采样作为一种随机采样方法,马尔科夫链蒙特卡罗(MarkovChainMont

    2022年8月1日
    27
  • 数据库锁表与解锁_数据库解锁

    数据库锁表与解锁_数据库解锁关键字:数据库锁表与解锁一、mysql锁定表:LOCKTABLEStbl_name{READ|WRITE},[tbl_name{READ|WRITE},…]解锁表:UNLOCKTABLES例子:LOCKTABLEStable1WRITE,table2READ…更多表枷锁;说明:1、READ锁代表其他用户只能读不能其他操作

    2022年8月23日
    12
  • 关闭networkmanager服务_电脑不小心禁用了无线网络怎么办

    关闭networkmanager服务_电脑不小心禁用了无线网络怎么办NetworkManager服务是管理和监控网络设置的守护进程,CentOS7更加注重使用NetworkManager服务来实现网络的配置和管理它是一个动态的,事件驱动的网络管理服务。常用管理命令:查看#systemctlstatusNetworkManager开启#systemctlstartNetworkManager关闭#systemctlstopNetworkManager不可用#systemctldisableNetworkManager可用#

    2022年10月4日
    2
  • 使用PyPDF2模块处理PDF文件通用方法技巧

    使用PyPDF2模块处理PDF文件通用方法技巧基本概念:PDF和Word文档是二进制文件,除了文本之外还保存字体,颜色,布局等信息。处理PDF文件,使用PyPDF2模块,PyPDF2不能从PDF文档中提取图像、图表或其他媒体,但可提取文本,作为字符串返回。  读取PDF文件步骤:首先以读二进制模式打开PDF文件,然后将打开文件File对象传递给PyPDF2.PdfFileReader()函数,例如: …

    2022年6月23日
    58
  • 求解逆矩阵的常用三种方法_阿桑的专栏_逆矩阵怎么求最快

    求解逆矩阵的常用三种方法_阿桑的专栏_逆矩阵怎么求最快1.待定系数法矩阵A=1,2-1,-3假设所求的逆矩阵为a,bc,d则从而可以得出方程组a+2c=1b+2d=0-a-3c=0-b-3d=1解得a=3;b=2;c=-1;d=-12.伴随矩阵求逆矩阵伴随矩阵是矩阵元素所对应的代数余子式,所构成的矩阵,转置后得到的新矩阵。我们先求出伴随矩阵A*=-3,-21,1接下来…

    2022年4月19日
    141

发表回复

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

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