首页 > 其他分享 >(11.2)iic串口读写EEPROM实验:iic串口协议

(11.2)iic串口读写EEPROM实验:iic串口协议

时间:2024-06-03 11:00:50浏览次数:15  
标签:字节 数据线 器件 11.2 地址 iic 串口 EEPROM

一、iic协议介绍

  iic(i2c,inter-integrated Circuit),即集成电路总线,是一种两线式串行总线。多用于主机(fpga)和从机(外围设备)在数据量不大且传输距离短的场合下使用(支持一主多从,根据器件地址进行从机的区分)

  iic由数据线SDA时钟线SCL构成通信线路,既可以发送数据,也可以接受数据

  iic为半双工同步通信方式,在不同模式下通信速率不同

  标准模式:100Kbit/s

  快速模式:400Kbit/s

  高速模式:3.4Mbit/s

二、协议时序

  数据线只允许在时钟的低电平时改变,在高电平时保持不变

  开始:时钟高电平时,数据线由高变为低;结束:时钟高电平时,数据线由低变为高

 

  应答过程:开始时数据线由高变低,紧接着连续八个时钟fpga输出8bit数据(一开始的数据可能是器件地址),从设备检测到器件地址是自己的后,则拉低自己的相应信号,fpga会检测这个拉低的信号,即EEPROM是否响应了数据

  如果没有响应(即SDA信号一直为高),则可能是因为器件地址发送错误,也可能是时钟频率过高

  器件地址:由8位数据构成,前四位为固定值,后三位为A2、A1、A0(器件中已全部接地,因此都为0),最后一位为控制位,表示对器件是读操作还是写操作(读操作为1,写操作位0)

   字节写:首先数据线由高到低表示开始(在时钟高电平时),紧接着发出8位的器件地址(最后一位为0,表示写),接下来的ACK是一个应答位,即EEPROM接收到正确地址后会相应,将拉低这个SDA数据线,(即前面的器件地址是fpga在控制这根线,后面的这个应答位是EEPROM在控制这根线);

  接下来是第一个字节地址位(×号表示不用关心的bit位,为什么不用关心呢?因为EEPROM一共有8192个字节,即2的13次方,因此第一个字节位地址前三位是不关心的,后五位和第二个字节地址8位构成了我们的13位字节地址),发送完后EEPROM同样做出一个应答ACK;

  接下来发送第二个字节位地址(低八位),发送完后EEPROM同样做出一个应答ACK;

  传送完字节地址后,fpga会将数据DATA发送给EEPROM,同样做出一个应答ACK;

  最后fpga会发送一个结束操作,即SCL为高电平期间SDA由低变高

  结束之后EEPROM会处于一个写的周期,将数据写入字节地址中,在此期间无法对其进行操作,这一过程大概5ms

  

  页写:前面的操作和字节写相同,区别在于在发送了数据后,不发送终止操作,而是接着发送其他数据,后面的数据依次往后面的地址中写入,直到31(地址是递增的,每一页有32个字节),如果到31还不给结束操作的话,那么他又会返回到0去写数据(注意:这里是在当前页的循环!!要到下一页的话需要重新发起操作改变前面的字节地址)

 

 

 

  

标签:字节,数据线,器件,11.2,地址,iic,串口,EEPROM
From: https://www.cnblogs.com/liwilling/p/18227922

相关文章

  • 基于WebSocket的modbus通信(三)- websocket和串口
    WebSocket传递ModbusTCP数据包错误纠正上一篇还有个错误,就是客户端写数据时服务端不需要响应,但我的服务端响应了的。我选择改客户端,把写数据时接收到的响应丢弃。PrintBytes(ADUMessage.Serialze(request),"请求");if(Client!=null){awaitClient.Client.SendAsyn......
  • NET工控,上位机,Modbus485网口/串口通讯(鸣志步进电机,鸣志伺服电机,松下伺服电机,华庆
    先上两个通用Modbus帮助类,下面这个是多线程不安全版,在多线程多电机同一端口通信下,可能造成步进电机丢步或者输出口无响应等,还有个多线程安全版,只是基于这个不安全版加上了LOCK,THISusingModbus.Device;usingSunny.UI;usingSystem;usingSystem.IO.Ports;usingSystem.Li......
  • (11.1)iic串口读写EEPROM实验:EEPROM介绍
    一、EEPROM简介EEPROM(ElectricallyErasableProgrammableReadOnlyMemory),带电可擦除可编程只读存储器,是一种掉电后数据不丢失的非易失性存储器,用户可以通过高于普通电压的作用来擦除和编程(重写)非易失性存储器主要包括:EEPROM:以字节为单位改写;结构复杂,成本高;存储......
  • WiFi串口服务器与工业路由器:局域网应用的协同之力
    在工业物联网(IIoT)迅猛发展的当下,局域网(LAN)作为连接工业设备与数据中心的桥梁,其重要性日益凸显。WiFi串口服务器与工业路由器作为局域网中的关键组件,以其独特的性能和功能,为传统行业的数字化转型提供了强有力的支持。本文将深入探讨WiFi串口服务器与工业路由器如何协同工作,以实现......
  • iic发送地址后没有应答
    现象描述iic主机发送地址后,从机没有返回信号给主机,即没有应答信号。分析首先是硬件有没有问题,包括传感器虚焊、地址选择口有没有添加这些。先检查硬件是否连接正常,保证能有信号给到从机。再者,软件的问题,包括iic控制是否正常、传感器地址是否正确、速率匹配问题、是否符合iic协......
  • STM32 IIC读取Eeprom失败问题
    现象描述异常断开产品的电源,会出现产品无法读取eeprom数据,并且iic返回繁忙警告。原因iic再读取eeprom时,出现电源抖动的情况。而该电源能维持芯片不进入关机状态,但是会影响iic通讯问题。解决办法在出现iic忙碌时,将iic复位即可。voidi2c_reset(void){ /*复位I2C*/ /*Res......
  • 推推宝藏会议-RAIIC 2024
    【IEEE出版|往届3个月完成检索】第三届机器人、人工智能与智能控制国际会议(RAIIC2024)The3rd InternationalConferenceonRobotics,ArtificialIntelligenceandIntelligentControl 重要信息会议时间:2024年7月5-7日会议地点:中国·绵阳二轮截稿时间:2024年6月......
  • STM32_HAL_串口IAP
    1.IAP简介        IAP(InApplicationProgramming)即在应用编程。STM32可以通过设置MSP的方式从不同的地址启动:包括Flash地址、RAM地址等,在默认方式下,我们的嵌入式程序是以连续二进制的方式烧录到STM32的可寻址Flash区域上的。如果我们用的Flash容量大......
  • 11.2 重定向的含义-管道的使用-tee 命令
    11.2.1输出重定向定义:将命令的正常输出结果保存到指定的文件中,而不是直接显示在显示器的屏幕上重定向输出使用`>``>>`操作符号语法:>文件名解释:表示将标准输出的内容,写到后面的文件中,如果此文件已经存在,将会覆盖原文件中的内容语法:>>文件名......
  • STM32F4平台使用SerialPort串口库教程
    这一期教程的内容主要是在STM32F4平台使用SerialPort串口库和上位机通信,上位机(例如串口调试助手)向下位机发送字符串,下位机接收到字符串后,经过加工处理再发送给上位机。SerialPort串口库使用C++编写,用户只需在外部实现4个中断回调函数即可完成串口DMA收发,然后使用read函数读......