1、IIC(Inter-Integrated Circuit),是IICBus简称,是一种串行通信总线

2、IIC协议:遵循主机master和从机slave的主从关系机制,区别于SPI通信协议,IIC协议存在应答机制,即当主机发送控制、地址、或数据时,需要从机回复ACK确认消息(在sda总线上回复)。

3、IIC协议:控制两根信号线SCL时钟信号线(一种理解方式)和sda数据总线,即可完成对从机的控制、输入、输出。

4、IIC协议访问eeprom为例(执行byte写命令):访问时存在“开始位”,“控制byte”,“应答位”, “高位地址位”, “应答位”,“低位地址位”, “应答位”,“数据位”, “应答位”,“停止位”。(byte写:eeprom的一种写入方式,一次写入一个字节的数据)

“开始位”, “应答位”,“停止位”单拍。

“控制byte”,“高位地址位”,“低位地址位”,“数据位”为8bit。

 “控制byte”:的组成是由control code操作码4位+cs片选3位+write/read命令位1位=8位

control code: eeprom 为1010

cs片选信号: 可以片选eeprom内的8个存储单元(片选即激活某个存储单元,可进行读写等)

write/read命令:0表示写命令;1表示读命令。

高+低地址位:共计16位,取低13位为有效位,高三位 don't care

 ACK:   从机的应答信号,当scl为高电平时,sda被从机拉低位0,表示从机确认,反之不确认NACK。(注意当发完8bit的数据后,三态门的控制,下面6说明三态门)

5、SCL时钟信号线的产生,是利用晶振时钟的上升沿或下降沿翻转产生,注意IIC使用的时钟的频率不要超过400khzHZ。(IIC高速模式下可达3.4Mbit/s,查看器件芯片手册是否支持),如果利用上升沿产生scl信号,那么电路驱动时钟采用下降沿有效,always @ (negedge clk)。

6、sda信号是主机和从机共用的一根数据总线,命令,数据、地址、等都在这根总线上传输,需要采用三态门,切换主机和从机对sda总线的控制权。无控制权的一方输出高阻态(即控制方发什么,总线sda就发什么,不会产生干扰)

7、开始位:当scl为高电平时,将sda拉低(sda初始是高电平,非工作时间保持高电平状态),表示开始,随即将在scl为低时,将控制位8bit信息发送出去。(注意主机数据的发送只能在scl为低电平时发送,实际就是并转串的过程),当发送完成后,在scl低电平时,将三态门使能拉低,将sda的控制(赋值主动权)给到从机。

8、ACK位:在scl为高电平时,对sda的状态做判断,为0时,表示从机ACK,为1时表示从机未确认。当ACK时,三态门的使能拉高,开始发送高位地址。

9、后续同理依次发送低位地址和数据,需要注意三态门的及时拉高和拉低切换sda的从机或主机的控制权。

10、当数据发送完成,并且收到从机反馈的ACK确认信息后,需要立即获得主机主动权,在scl为低时,拉低sda。

11、在scl为高时,拉高sda,这是stop停止位,结束操作的结束时序命令(在scl为低时,拉低sda,在scl为高时,拉高sda)。

附写仿真图,包含写的开始、控制byte、ack、高位地址位:

结束语:以上就是IIC协议的基本概念和在eeprom的应用实例。eeprom还可以实现page写,current read、random read,sequential read等命令,有兴趣的小伙伴可以私信。下面附一张读完后的结束仿真图,random read读完后进入stop状态的信号逻辑(注意:读完数据后反馈的是NACK)。

通信协议之IIC协议(eeprom)_通俗易懂篇!相关推荐

  1. 几种常用通信协议:IIC协议、SPI协议、UART协议

    通信可以形象的比喻成两个人讲话:1.你说的别人得能听懂:双方约定信号的协议.2.你的语速别人得能接受:双方满足时序要求. 一.IIC协议: 2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一 ...

  2. 小米登录协议分析_性能测试篇之Loadrunner与ida工具结合完成java vuser协议的脚本...

    你这么优秀,一定只想把"柠檬班"置顶 ▲ → 性能3期优秀作业 利用lr的java vuser协议完成 (登录,md5加密完成重置支付密码,获取订单列表)请求,并加if判断完善脚本 ...

  3. 亚稳态及亚稳态解决方案_通俗易懂篇!

    亚稳态,又称亚稳定性,是数字设备中导致系统失效的一种现象. 发生场景:亚稳态发生在非相关时钟域或异步时钟域的传输过程中.同步系统中,输入信号总是满足时序要求,不会出现亚稳态问题. 什么是亚稳态:每一个 ...

  4. STM32硬件IIC读写EEPROM

    前面一篇写了软件模拟IIC读写EEPROM. 本篇介绍硬件IIC读写EEPROM.平台是STM32F103+AT24C04N.SDA和SCL接5K上拉电阻到3.3v. 首先介绍AT24C04N的基本特 ...

  5. Verilog实现IIC协议读写EEPROM

    在FPGA设计中,IIC协议是一个十分常见的协议,因为几乎所有的EEPROM都是用这个协议进行读写的,此外,一些特殊场合,也会用到此协议.这里我首先给出IIC协议的中文标准文档的下载链接(不要积分), ...

  6. cmos逻辑门传输延迟时间_用DSLogic 逻辑分析仪 解析出来的IIC协议太完美了!

    1. 协议基础 1.1. 协议简介 IIC-BUS(Inter-IntegratedCircuit Bus)最早是由PHilip半导体(现在被NXP收购)于1982年开发.主要是用来方便微控制器与外围 ...

  7. IIC协议驱动EEPROM的Verilog实现与竞争冒险与下降沿触发、多重驱动

    文章目录 一.前言 二.软硬件平台 软件平台 硬件平台 三.IIC与EEPROM IIC简介 1. 写操作大致步骤 2. 读操作大致步骤 3. IIC总线有以下几种状态 1. 空闲状态 2. 起始信号 ...

  8. STM32 IIC协议 读写EEPROM

    EEPROM.MCU6050和OLED显示屏外设都是通过IIC协议[半双工]进行通信. 除此之外,另一个广泛地使用在系统内多个集成电路间的通讯协议:SPI. 目录 一.IIC物理层: 二.IIC协议层 ...

  9. 车载以太网之DoIP协议_第一篇

    车载以太网之DoIP协议_第一篇 1.DoIP含义 1.1 DoIP使用场景 1.2 DoIP在Autosar中的位置 2.以太网协议 2.1 物理层与数据链路层 2.2 网络层与传输层 2.3 Do ...

最新文章

  1. (转)失败和拒绝,也是一种肯定
  2. 英文书《用unreal来学习c++》_用机器学习来提升你的用户增长:第四步,客户流失预测
  3. Hibernate二级/查询缓存的陷阱
  4. 图论:二分图多重匹配
  5. 你必须知道的 SmartSql !
  6. html 前端传入后台为object_浅谈Object.defineProperty()
  7. 最新版idea2017+kemulator搭建J2ME开发环境
  8. JSONArray.fromObject(); 引入问题
  9. 初中英语听力计算机考试反馈,【初中英语】英语听说机考,怎样才能有效提高英语听力和口语水平?...
  10. Manjaro 安装搜狗输入法
  11. android MediaRecorder录屏时带录音功能实现
  12. 教你PDF怎么压缩的小一点?PDF压缩方法
  13. 【mmdetection】对VOC格式的数据集进行测试
  14. 科学万能科计算机科学万能计算机,万能科学计算器CalcES v5.0.5脱壳专业会员版...
  15. 海底光缆是如何铺设出来的?
  16. 罗杨美慧 20190919-3 效能分析
  17. Android studio 安装配置SDK
  18. 渗透测试CTF-图片隐写的详细教程2(干货)
  19. mysql utf8mb4 bin_Mysql的utf8与utf8mb4区别,utf8mb4_bin、utf8mb4_general_ci与utf8mb4_unicode_ci的选择...
  20. LeetCode 每日一题:606. 根据二叉树创建字符串

热门文章

  1. 网站发布一般步骤以及解决方法
  2. Python缓存cacheout的使用
  3. GoJS v2.2.7 去水印
  4. java手机振动软件_Android实现手机震动效果
  5. 异常处理:.net.UnknownHostException nodename nor servname provided, or not known
  6. Linux 磁盘管理-配额管理-配置用户对磁盘进行指定大小或者文件数量的使用权限
  7. Android音乐播放器的设计与实现
  8. 谈技术文章翻译的信雅达-上
  9. 四个福利性在线网站分享,每一个都让你欲罢不能……
  10. social-GAN