首页 > 其他分享 >iic地址

iic地址

时间:2022-11-15 12:11:58浏览次数:30  
标签:SCL Slave NACK 发送 地址 Master SDA iic

IIC,两根线,SCL时钟线,SDA数据线。

一个主机master,一个或多个从机slave。

主机通常就是MCU,从机会有一个地址,这个地址通常前4位是器件本身固定的,5-7位可以硬件选择,最后一位通常是WP位,一般此位低电平表示正常读写,此位高电平表示读保护,只能读。如常用的EEPROM 24C02,地址高四位是1010,5-7位硬件连接决定,即是将其A0-A2引脚接地为000,这样设备地址是0xA0或者0xA1(读)。

IIC的指令:

默认下(无数据传输):SCL=1,SDA=1;

Start:当SCL=1时,SDA由1向0跳变;

Stop:当SCL=1时,SDA由0向1跳变;

数据位:当SCL由0向1跳变时,由发送方控制SDA,此时SDA为有效数据,不可改变SDA;当SCL保持为0时,SDA上的数据可改变。也就是说,不管是主机发从机,还是从机发主机,只要想发送或者读取数据,必须有一个scl上升的过程,此时SDA数据有效,数据来自于发送方。

地址位:定义同数据位,但只由Master发给Slave;

应答位(ACK):发送SDA=0,可以是主机主动发送,也可以是从机发送主机接收。
否应答位(NACK):发送SDA=1,可以是主机主动发送,也可以是从机发送主机接收。

注意:

1,SCL一直由Master控制。
2,Start和Stop,只能由Master发出。
3,地址的8位传送完毕后,成功配置地址的Slave设备必须发送“ACK”。否则否则一定时间之后Master视为超时,将放弃数据传送,发送“Stop”。
4,当写数据的时候,Master每发送完8个数据位,Slave设备如果还有空间接受下一个字节应该回答“ACK”,Slave设备如果没有空间接受更多的字节应该回答“NACK”,Master当收到“NACK”或者一定时间之后没收到任何数据将视为超时,此时Master放弃数据传送,发送“Stop”。
5,当读数据的时候,Slave设备每发送完8个数据位,如果Master希望继续读下一个字节,Master应该回答“ACK”以提示Slave准备下一个数据,如果Master不希望读取更多字节,Master应该回答“NACK”以提示Slave设备准备接收Stop信号。
6,当Master速度过快Slave端来不及处理时,Slave设备可以拉低SCL不放(SCL=0将发生“线与”)以阻止Master发送更多的数据。此时Master将视情况减慢或结束数据传送。
在实际应用中,并没有强制规定数据接收方必须对于发送的8位数据做出回应,尤其是在Master和Slave端都是用GPIO软件模拟的方法来实现的情况下,编程者可以事先约定数据传送的长度,slave不检查NACK,有时可以起到减少系统开销的效果。但是如果slave方是硬件i2c要求一定要标准的NACK,master方是GPIO软件模拟i2c并没有正确的发送NACK,就会出现“slave收不到stop”导致i2c挂死。

标签:SCL,Slave,NACK,发送,地址,Master,SDA,iic
From: https://www.cnblogs.com/amxiang/p/16891998.html

相关文章

  • iic协议实操
    1.同一I2Cbusdevice之I2Cslaveraddress不可一样.2.检查这些devices,是否可以变更I2Cslaveraddress(hardwarepincontrolorsoftwareregistersettin......
  • XIicPs_MasterSendPolled和XIicPs_MasterRecvPolled
    Xilinx FPGA的IIC程序中的XIicPs_MasterSendPolled和XIicPs_MasterRecvPolled函数的使用,8位寄存器地址写入24位数据硬件平台:黑金AX7010开发板vivado版本:Vivado2017.4SDK......
  • 三秒让你学会公私网地址转换(NAT)
    NAT网络地址转换一.NAT定义二.华为Ensp拓扑图三.代码(动态NAT) 一.NAT定义NAT(NetworkAddressTranslasion) 又称网络地址转换,用于实现私有网络和公有网络之间的......
  • C# c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内
    CIMWin32WMIProvidersWMI是什么Windows管理规范(WindowsManagementInstrumentation)是一项核心的Windows管理技术;用户可以使用WMI管理本地和远程计算机。WMI通过......
  • netsh绑定ip和mac地址
    当使用arp-s无法将ip和mac绑定的时候,可以使用一下命令来绑定。netshiishowin然后找到网线或网卡对应的idxnetsh-c"ii"addneighbors11"网关IP""Mac地址"这里......
  • Linux虚拟地址空间布局
       在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(VirtualAddressSpace),在32位模式下它是一个4GB的内存地址块。在Linux系统......
  • Linux系统编程·进程地址空间
    你好,我是安然无虞。文章目录​​自学网站​​​​三个验证​​​​虚拟地址引入​​​​进程地址空间​​​​练习题​​自学网站推荐给老铁们两款学习网站:面试利器&算法......
  • IIC协议简介
    IIC总线介绍IIC也称I2C,是一个多主从的串行总线,由飞利浦公司发明的通讯总线,属于半双工同步传输类总线,仅由两条线就能完成多机通讯,一条SCL时钟线,另外一条双向数据线SDA,IIC总......
  • 开发笔记 -- URL地址格式显示异常-用python-urllib库解决1
    场景描述:开发中,尤其数据采集过程中,偶尔会遇到URL地址显示异常的情况,如下:https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fp6.itc.cn%2Fq_70%2Fimages03%2F......
  • 使用ethtool命令修改网卡mac地址流程【转】
    转自:https://blog.csdn.net/King_stt/article/details/118612261 仅供参考学习使用1.修改网卡eeprom的指令格式ethtool-E<eth_name>magic<magic_val>offsetN......