I2c理解】的更多相关文章

1.IIc是什么: 是飞利浦公司设计的一种用于mcu与外围设备之间信息交互的一种协议.高速IIC总线一般可大400kbs 2.IIC作用: 用于mcu与外围设备间信息交互. 3.IIc由什么组成: 由 时钟线SCL 和 数据线SDA构成,总共两根线组成. 4.实现原理: 由于只有一个线,为了实现主机和从机间相互信息交互,故采用了半双工通信方式来进行设备间的通信. 如主机先是输出状态,那么立即会转成输入状态.等待应答回应,成功(ack=0,低电平时候有效)再进行下个周期数据发送. 5.工作流程:…
上次用gpio模拟i2c理解i2c协议.相同的,我用gpio模拟spi来理解spi协议. 我用的是4线spi,四线各自是片选.时钟.命令/数据.数据. 数据在时钟上升沿传递,数据表示的是数据还是命令由命令/数据线决定. 開始条件: void spi_start(void) { gpio_config(GPIO_CS, GPIO_OUTPUT); udelay(SPI_SPEED_DURATION); gpio_set(GPIO_CS, 0);/* start condition */ udela…
    题外话:这几天天气突然转冷了.今天已是11月23日了,查查黄历,昨天(11月22日)刚好是小雪,一夜温度骤降,果然老祖先的经验有灵验!冬天来了,还是多加加衣服,注意保暖! 1.Abstract     前些天借用他人的一块MCS-51开发板来做实验,不想这块板子与我刚开始接触MCS-51的板子一样,实在是太亲切了!现在回过来看这块板子,功能算不上是太强大,麻雀虽小五脏俱全,该有的功能都有.于是又忍不住捣腾这块板子,倒不是写小程序一块,看着电路图,到处连线测试一下功能,从中体会下最初的学习…
应某位网友要求,今天说一下单片机的I2C SPI通信,可能说不清楚,因为这毕竟要做实验才可完全理解. I2C和SPI是两种不同的通信协议. 听到协议,似乎高不可攀,其实协议就是人们定义的一个标准而已,我们只要遵照这个标准去做事,就可以.比如公司规定早上9点上班,我们就9点上班,不然就会扣薪水,这就是个协议. 用I2C通信的芯片最常用的就是EEPROM芯片,如Atmel的AT24CXX系列,此外,还有一些其它功能的芯片.用SPI通信的芯片有外置FLASH芯片,同样,还有其他功能的一些芯片. I2C…
为了加深对I2C总线的理解,用C语言模拟IIC总线,边看源代码边读波形: 如下图所示的写操作的时序图: 读时序的理解同理.对于时序不理解的朋友请参考“I2C总线之(二)---时序” 完整的程序如下: #include<reg51.h> #define uchar unsigned char #define uint unsigned int #define write_ADD 0xa0 #define read_ADD 0xa1 uchar a; sbit SDA=P2^; sbit SCL=…
对I2C总线的时钟同步和总线仲裁的深入理解 每一个IIC总线器件内部的SDA.SCL引脚电路结构都是一样的,引脚的输出驱动与输入缓冲连在一起.其中输出为漏极开路的场效应管.输入缓冲为一只高输入阻抗的同相器[1].这种电路具有两个特点: ①由于SDA.SCL为漏极开路结构,借助于外部的上拉电阻实现了信号的“线与”逻辑: ②引脚在输出信号的同时还将引脚上的电平进行检测,检测是否与刚才输出一致.为 “时钟同步”和“总线仲裁”提供硬件基础. I2C总线接口内部结构 IIC设备对总线的操作仅有“把线路接地…
http://home.eeworld.com.cn/my/space-uid-716241-blogid-655190.html 一.I2C协议简介 I2C是两线式串行总线,用于连接微控制器及其外围设备.两根信号线分别是: 时钟信号线SCL和数据信号线SDA.   二.I2C总线传输时序 2.1 I2C传输协议的三种信号 I2C在数据传输过程中有三种信号类型,分别是:起始信号.结束信号和应答信号. ①起始信号:在时钟信号SCL为高电平时,数据线SDA由高电平跳变为低电平,开始传输数据: ②结束…
引用自:http://www.cnblogs.com/zym0805/archive/2011/07/31/2122890.html I2C是由Philips公司发明的一种串行数据通信协议,仅使用两根信号线:SerialClock(简称SCL)和SerialData(简称SDA).I2C是总线结构,1个Master,1个或多个Slave,各Slave设备以7位地址区分,地址后面再跟1位读写位,表示读(=1)或者写(=0),所以我们有时也可看到8位形式的设备地址,此时每个设备有读.写两个地址,高7…
理解I2C设备驱动框架,主要围绕四个结构体去分析就容易了. struct i2c_algorithm:提供I2C协议的实现的操作,如:master_xfer实现数据收发的最基本方法. struct i2c_adapter:每一个i2c_adapter都代表一个I2C物理接口,一个cpu可以有多个I2C接口(i2c_adapter),i2c_algorithm就是为i2c_adapter提供I2C协议的实现.每增加一个i2c接口,即是向i2c_bus_type (i2c_core.c)注册一个i2…
起始位与停止位的定义: 起始信号:当SCL为高期间,SDA由高到低的跳变:启动信号是一种电平跳变时序信号,而不是一个电平信号. 停止信号:当SCL为高期间,SDA由低到高的跳变:停止信号也是一种电平跳变时序信号,而不是一个电平信号. I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化. 我的理解:虽然只要求在高电平期间保持稳定,但是要有一个提前量,也就是数据在SCL的上升沿到来之前就需准备好,因为在…