“移植”的重要性:并非所有的电路都得自己设计,到了一定阶段,“移植”也是一种学习能力。——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(宁河川)

原文地址:http://www.cnblogs.com/ninghechuan/p/6965566.html

IIC协议学习笔记的更多相关文章

  1. IIC驱动学习笔记,简单的TSC2007的IIC驱动编写,测试

    IIC驱动学习笔记,简单的TSC2007的IIC驱动编写,测试 目的不是为了编写TSC2007驱动,是为了学习IIC驱动的编写,读一下TSC2007的ADC数据进行练习,, Linux主机驱动和外设驱 ...

  2. HTTP协议学习笔记(四)

    HTTP协议学习笔记(四) 与 HTTP 协作的 Web 服务器 一台 Web 服务器可搭建多个独立域名的 Web 网站,也可作为通信路径上的中转服务器提升传输效率. 1.用单台虚拟主机实现多个域名 ...

  3. HTTP协议学习笔记(三)

    HTTP协议学习笔记(三) 1.状态码告知从服务器端返回的请求结果 状态码的职责是当客户端向服务端向服务端发送请求时,描述返回的请求结果.借助状态码,用户可以知道服务端是正常处理了请求,还是出现了错误 ...

  4. HTTP协议学习笔记(二)

    HTTP协议学习笔记(二) 1.HTTP报文 HTTP报文:用于HTTP协议交互的信息.请求报文:请求端(客户端)的HTTP报文叫做请求报文.响应报文:响应端(服务端)的HTTP报文叫做响应报文. H ...

  5. HTTP协议学习笔记(一)

    HTTP协议学习笔记(一) 1.HTTP协议用于客户端和服务端之间的通信 客户端:请求访问文本或图像等资源的一端服务端:提供资源响应的一端 在两台计算机之间使用HTTP协议通信时,在一条通信线路上必定 ...

  6. TCP/IP协议学习笔记

    计算机网络基础知识复习汇总:计算机网络基础知识复习 HTTP协议的解析:剖析 HTTP 协议 一个系列的解析文章: TCP/IP详解学习笔记(1)-- 概述 TCP/IP详解学习笔记(2)-- 数据链 ...

  7. RSA算法、SSL协议学习笔记

    最近学习计算机网络,涉及到SSL协议,我想起了去年密码学课程讲过的非对称加密RSA算法,结合阮老师的博客,写写学习笔记,这里再回忆一下. RSA算法 RSA算法是一种非对称密码算法,所谓非对称,就是指 ...

  8. 网络协议学习笔记(二)物理层到MAC层,交换机和VLAN,ICMP与ping原理

    概述 之前网络学习笔记主要讲解了IP的诞生,或者说整个操作系统的诞生,一旦有了IP,就可以在网络的环境里和其他的机器展开沟通了.现在开始给大家讲解关于网络底层的相关知识. 从物理层到MAC层:如何在宿 ...

  9. tcp/ip协议学习笔记一

    一. 简述 以前在学校学习计算机网络的时候学习多是网络7层模型OSI,了解了一些基本的计算机网络概念和协议通信格式,但是一直没弄明白其中的原理,包括各层之间的关系,应用,还有一些常见的令牌环网到底是什 ...

随机推荐

  1. NSString 为什么要使用copy,而不是retain

    NSString 为什么要使用copy,而不是retain1.首先如果使用retain,只是引用计数+1,并没有生成新的对象,所以效率好2.但是使用copy安全.因为NSString 为 NSMuta ...

  2. 自己实现的string的库函数

    为了更好地理解string的各个库函数,现将几个常用的库函数用自己的方式实现如下: #include<iostream> using namespace std; #include< ...

  3. R语言与SQL server链接

    第一步:创建数据源(方法见下面链接) http://www.2cto.com/database/201412/365396.html 第二步:在R中输入以下代码: #####SQL SERVER与R语 ...

  4. Linux环境下用户空间与内核空间数据的交换方式

    在linux环境开发过程中,经常会需要在用户空间和内核空间之间进行数据交换. 介绍了 Linux 系统下用户空间与内核空间数据交换的几种方式 第一节:使用procfs实现内核交互简明教程(1) 第二节 ...

  5. 推荐免费的svn空间

    可能大部分人跟我一样办公和其他环境的代码同步选择用github,但github免费用户的代码是公开的.如果想做商业项目,用免费的github账号就不合适了,这里推荐的免费svn是个不错的选择. 1.h ...

  6. Cocos2d-x 3.2 环境搭建

    参考文章地址: 1.Cocos2d-x官方安装说明文档:http://cn.cocos2d-x.org/tutorial/show?id=781 2.CSDN博客:http://blog.csdn.n ...

  7. linux下python+pycharm安装

    安装环境: vmware 12 centos 6.8   一.安装python3.5 默认情况下,linux下是默认使用2.x版本的,现在我们要安装3.x版本,具体操作如下 1.去官网下载安装包.(这 ...

  8. java文件创建和删除

    流的操作在项目开发中用的很普遍,虽然每次在网上都可以百度到,但是总感觉心里不踏实,对此,关于流的操作做一个详细的总结--- 1.根据数据的流向来分:输出流:是用来写数据的,是由程序(内存)---> ...

  9. Xcode旧项目引入CocoaPod遇到的问题与解决

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  10. 谷歌IAP:skusBundle array associated with key ITEM_ID_LIST cannot contain more than 20 items.

    这几天在接谷歌的支付,在拉谷歌商品列表的时候转菊花,长时间不返回(querySkuDetails),一开始以为因为IAP有key不对导致的,查了下发现没有问题. 再看logcat,发现了这行: Inp ...