IIC协议学习笔记

  “移植”的重要性:并非所有的电路都得自己设计,到了一定阶段,“移植”也是一种学习能力。——CrazyBingo

  转眼间期末又到了,最近开始了所谓的期末总预习,比赛最终还是把作品交了,也算是对自己这学期一个交代了吧,感觉不总结出来总是少点什么,所以还是在努力一把,熬夜把之前的东西整理出来吧。Bingo说的“移植”是一种能力,但是完全拿别人的代码拿来用不加以思考和学习,那样是没有意义的,这学期就是因为“移植”的太多了,才感觉学到的很零散不系统。学习的过程本来就是一个非常枯燥的过程,不能总想着得到。之前看了许多文章,在寻找FPGA的前途是什么,到头来还是没一探出个究竟,还不如坚持内心,做自己想做的,学自己想学的,学知识的方法是相通的,想太多只能说是有点浮躁,写博客可以说不失为一个让人静心的好方式,即使没营养有怎样,我的博客我喜欢你能把我怎样。

IIC协议:

  主机:初始化总线的数据传输并个允许传输的时钟信号器件。

  从机:任何被寻址的器件都被认为是从机                                              

  SCL时钟线SDA 数据线

  起始位:SCL为高电平,SDA下降沿

  结束位:SCL高电平,SDA为上升沿

  总结:当scl为高电平的时候,sda为出现下降沿为start位,当生成了为低电平的时候,sda出现上升沿为stop位,所以在scl为高电平的时候sda应该保持稳定不能随意乱动。

写入数据状态

  scl为高电平的时候sda的数据被写入从机,

  scl为低电平的时候sda的数据被写入主机

读取数据状态

  scl为低电平的时候器件的数据被读出到sda总线上,在scl高电平器件保持数据稳定

  scl为高电平的时候主机将sda总线上的数据读出被存储,在scl低电平时间保持稳定

  SCL 周期400k 2.5us,SCL最大可以为400Khz,但是一般设置为100Khz

IIC写时序

  ACK (Acknowledgement),即确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。即应答。低电平。

  “接收器每接受一个正确的数据字节后,都要在数据线上发送一个应答信号。低电平为确认,高电平为不确认”

  MSB是Most Significant Bit的缩写,最高有效位。在二进制数中,MSB是最高加权位。与十进制数字中最左边的一位类似。通常,MSB位于二进制数的最左侧,LSB位于二进制数的最右侧

LSB,英文 least significant bit,中文义最低有效位。

图中MSB即表示从最高位开始传输,ACK即表示写入数据完成后的应答

  1)产生 start 信号

  2)传送器件地址(写 DEVICE ADDRESS)

  3)传送字地址 WORD ADDRESS(ACK 不用管)

  4)发送想要写入的 8 位数据(ACK 不用管)

  5)产生 stop 信号(ACK 不用管)

IIC读时序

  write虚写,一次空写入。在这里实际上是要读取数据,不是写数据,但是还是要写入需要读取得器件地址,却没有写入数据,向设备写要读的数据的地址   不是真正向地址写数据  这个地址会被锁存,不会触发读写操作  所以dummy  write。

  1)产生 start 信号

  2)传送器件地址(写 DEVICE ADDRESS)

  3)传送字地址 WORD ADDRESS

  4)发送 start 信号

  5)再一次传送器件地址(读 DEVICE ADDRESS)

  6)读出

  8)位数据

  7)产生 stop 信号

SCCB(I2C)时序图

IIC协议从机对主机响应

   每当一个字节的数据或命令传输完成时,都会有一位的应答位,需要应倒时,数据发出方将SDA总线设置为3态输入,由于IIC总线上有上拉电阻,因此此时总线默认高电平,若数据接收方正确接收到数据,则数据接收方将SDA总线拉低,以示正确应答。

        IIC传输的应答位是数据接收方给数据发送方!

  SCCB总线在写寄存器时,先写设备地址(0x42),收到从设备应答后再写寄存器地址,最后写将要写入的寄存器的值。

         SCCB总线的读取寄存器时序:SCCB总线在读寄存器时,分两个阶段:第一阶段为先写设备地址(0x42),然后再写寄存器地址;第二阶段为写设备地址(0x43),然后读出寄存器地址的值,从而完成对一个寄存器值的读取。

  这是I2C协议的两条总线,时钟总线sclk和数据总线sdat,我们在时钟总线为高电平的中心时采集数据,在时钟总线为低电平的中心改变数据,每发送8位数据会有一个应答。

  应答在仿真时序图上看是为高阻态z的,这一点很重要,当时我就是在这上面迷惑了好久。

  最后在说一句Modelsim真是太好用了,用脚本仿真的话会大大加快仿真的速度的看来还是要有很多东西要学的。眼看期末了,赶紧把考试早早通过,就可以做我自己想做的事情了。

转载请注明出处:NingHeChuan(宁河川)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏草根博客站长有话说

HTTPS 要比 HTTP 多用多少服务器资源?

HTTP 访问,用户只需要完成 TCP 三次握手,建立 TCP 连接就能够直接发送 HTTP 请求,获取应用层数据。而 HTTPS=HTTP+SSL,也就是说 ...

704
来自专栏挖掘大数据

详解Hadoop HA 如何运作

最近对于Hadoop技术有比较大的兴趣,但由于接触时间不长,很多技术细节认识不够,作为一个技术人员,本着追根溯源的精神,还是有必要吃透,也为自己的工作沉淀一些经...

2385
来自专栏张绍文的专栏

基于 TLS 1.3的微信安全通信协议 mmtls 介绍(下)

随着近些年网络安全事情的频繁发生,使得用户对网络通信安全的意识越来越强。国内外的网络服务提供商都逐渐提供全站的安全通信服务,如国内的淘宝、百度先后宣布已经完成了...

5611
来自专栏腾讯Bugly的专栏

全站 HTTPS 来了

阅读提示:全文较长,预计阅读时长:20分钟 各位使用百度、谷歌或淘宝的时候,有没有注意浏览器左上角已经全部出现了一把绿色锁,这把锁表明该网站已经使用了 HTTP...

2184
来自专栏向治洪

HTTPS加密协议详解

简介 HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,是一个安全通信通道,它基于HTTP开发用于在客户计...

2127
来自专栏Linux驱动

IIC接口下的24C02 驱动分析

本节来学习IIC接口下的24C02 驱动分析,本节学完后,再来学习Linux下如何使用IIC操作24C02 1.I2C通信介绍 它是由数据线SDA和时钟SCL构...

1899
来自专栏北京马哥教育

SSL/TLS原理详解

本文大部分整理自网络,相关文章请见文后参考。 SSL/TLS作为一种互联网安全加密技术,原理较为复杂,枯燥而无味,我也是试图理解之后重新整理,尽量做到层次清晰。...

42112
来自专栏温球良的专栏

Hadoop HA 机制学习

最近分享过一次关于 Hadoop 技术主题的演讲,由于接触时间不长,很多技术细节认识不够,也没讲清楚,作为一个技术人员,本着追根溯源的精神,还是有必要吃透,也为...

1.1K0
来自专栏吴伟祥

https和http有何区别? 原

  HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计...

802
来自专栏Java架构沉思录

深入浅出HTTPS

前言 在之前的文章《深入浅出密码学(上)》、《深入浅出密码学(中)》与《深入浅出密码学(下)》中,沉思君为大家介绍了密码学中一些重要的概念,例如:加密、单向散...

30111

扫码关注云+社区