展开

关键词

IIC

下图是一个嵌入式系统中处理器仅通过2根线的IIC总线控制多个IIC外设的典型应用图? IIC 通信协议IIC 串行总线一般有两根信号线,一根是双向的数据线 SDA ,另一根是时钟线 SCL ,其时钟信号是由主控器件产生。 所有接到 IIC 总线设备上的串行数据 SDA 都接到总线的 SDA 上,各设备的时钟线 SCL 接到总线的 SCL 上。对于并联在一条总线上的每个 IIC 都有唯一的地址。 空闲状态当 IIC 总线的数据线 SDA 和时钟线 SCL 两条信号线同时处于高电平时,规定为总线的空闲状态。 IIC 总线操作对 IIC 总线的操作实际就是主从设备之间的读写操作。大致可分为以下三种操作情况:主设备往从设备中写数据数据包括从机寄存器地址和需要写入寄存器的数据data?

19610

IIC总线架构 之 IIC协议

IIC硬件连接主要包括IIIC主机、IIC从机、IC总线及上拉电阻。IIC总线:负责通讯的两条电路线SCL、SDA,电路上都有上拉电阻,即空闲状态下,两条线都保持高电平。 通信时,主机按照IIC时序控制SCL和SDA上的高低电平从而产生包含特定数据的IIC时序。IIC主机:一条总线中一般只会有一个IIC主机,一般为可编程芯片。 通过软件编程控制主机连接在IIC总线上的GPIO电平,生成符合IIC总线协议的时序。IIC从机:具备IIC接口的设备器件(例如AT24C02)。硬件连接好后,等待IIC总线访问。IIC总线协议? iic时序图.png空闲状态:由iic硬件连接结构图可知,当IIC总线没有数据传输时,SCL和SDA都保持高电平。起始信号:总线SCL保持高电平,SDA从高电平降为低电平,即IIC通讯开始。 IIC总线上所有的IIC从机设备对应一个唯一的地址。

37420
  • 广告
    关闭

    腾讯云前端性能优化大赛

    首屏耗时优化比拼,赢千元大奖

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    IIC协议

    IIC协议解释(1)概述I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用 (IIC是半双工,而不是全双工)。b.每个连接到总线的器件都可以通过唯一的地址和其它器件通信,主机从机角色和地址可配置,主机可以作为主机发送器和主机接收器。 一个典型的IIC接口如下图(1)所示?图(1)(3)IIC的协议层IIC的协议层才是掌握IIC的关键。 设备里写东西,然后再紧接着写入IIC设备里的寄存器地址,而我直接写入了0x68,导致出错},每次数据传送总是由主机产生的终止信号结束。 即使是含有IIC硬件的单片机(如stm32 103系列)也有一定的缺陷,所以一般也会模拟IIC的时序。现将具体时间截图如下:?

    20610

    IIC实测波形入手,搞懂IIC通信

    本文将从实测的IIC波形入手,带你看到真实的IIC样子,进而去理解IIC的通信原理。 在 CPU (单片机)与IIC模块之间、IIC模块与IIC模块之间进行双向传送。 1.2 IIC物理连接使用IIC通信的IIC器件有很多,比如陀螺仪加速度计MPU6050,EEPROM存储芯片AT24C02等,通过IIC总线,可以与单片机之间进行数据传输。 IIC通信线只有只有两根,数据线SDA的高低电平传输2进制的数据,时钟线SCL通过方波信号提供时钟节拍多个IIC器件可以并联在IIC总线上,每个器件有特定的地址,分时共享IIC总线实际使用IIC当然还要连接电源以及共地哦 因为IIC应答是一种相互关系,单片机发数据给IIC器件,IIC器件要进行应答,表示收到了数据,同样,单片机接收IIC器件的数据后,也要给IIC器件一个应答。

    60540

    2.1 IIC协议的FPGA实现(二)IIC协议的FPGA实现

    2.1 IIC协议的FPGA实现 2.1.2 IIC协议的FPGA实现              图2 13 IIC模块的建模图  图2 13是 IIC 储存模块的建模图,左边是顶层信号,右边则是沟通用的问答信号 具体内容,我们还是来看代码吧:            代码2 1 IIC代码声明1. parameter FCLK = 10d125, FHALF = 10d62, FQUARTER = 10d31;2 IIC 总线的起始位也就类似串口或者 PS2 等传输协议的起始位,然而不同的是, IIC 总线的起始位是 SCL 拉高 TR + TSU_STA + THD_STA + TF 之久,换之 SDA 则是拉高 对此, Verilog 则可以这样描述,结果如下所示:          代码2 2 IIC起始位产生代码1. begin2. isQ = 1;3. rSCL

    34740

    2.1 IIC协议的FPGA实现(一)IIC 总线规范简介

    2.1 IIC协议的FPGA实现 2.1.1 IIC 总线规范简介1) IIC 总线特性介绍  在现代电子产品开发过程中,为了简化系统,提高系统的可靠性,缩短产品开发周期,增加硬件构成的灵活性,推出了一种高效 、可靠、方便的 IIC串行总线。 所谓硬件 ID 就是 IIC 设备的辨识 ID,硬件 ID 会随着厂商还有设备的种类而有所改变。开发板上的 IIC 设备是某厂商的 IIC 储存器,即 24LC04,硬件 ID 为 4’b1010。 至于硬件地址就是 IIC 设备在总线上辨识地址,默认下为 3 位,即同类的 IIC 设备在同一条 IIC总线上仅允许占据 8 个而已。然而,开发板上的 24LC04 为 3’b000。 Start 是 IIC 总线的起始位, Stop 是 IIC 总线的结束位, Data 是 IIC 总线的数据位,为了确保三者成功写入从机, Setup Time 与 Hold Time 必须得到满足。

    46010

    ARM(十五).IIC with IRQ

    ,在手持设备与嵌入式领域有大规模的应用,可以说目前的绝大部分便携或手持电子消费品都是用的 ARM 芯片前面一篇简单地对 ARM 裸机开发、平台环境与工具、创建项目、看门狗的控制与基础进行了演示这里再对IIC 协议转输进行探究----概要----IIC协议转输要求使用 IIC 协议在 ARM 板上24C02芯片中存取数据IIC 原理图IIC总线连接方式AT24C02A电路原理图创建项目创建项目的总体过程就是新建文件夹创建项目文件项目中添加源代码只有以下几个方面需要稍微注意一下选择三星

    7620

    MSP430F5529LP IIC与OLED的HELLOWRLD

    简单理解下什么是IIC I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用 XLevelH&0x0F)*16+XLevelL)#define Max_Column 128最大屏幕像素宽度#define Max_Row 64 最大屏幕像素宽度#define Brightness 0xCF IIC Y_WIDTH 64 屏幕像素高度void IIC_delayus(unsigned int i);void IIC_ioinit(void);初始化IICvoid IIC_start(void);开始IIC 通信void IIC_stop(void);结束IIC通信void IIC_writebyte(unsigned char IIC_byte);写字节void IIC_writecmd(unsigned

    63870

    这个IIC太奇葩

    摘要本篇笔记主要记录在恩智浦MPC5744p系列上IIC通信遇到的问题,这个片子本身没有硬件IIC,如果要使用I2C接口,需要软件模拟。 系列是恩智浦针对汽车行业的用量比较大的一颗料,本身没有硬件I2C接口,如需使用I2C接口需要使用GPIO口来模拟,因为我本身也是第一次使用这颗料,所以想借助SDK快速来评估样机功能,就详细阅览了SDK的结构和代码,发现IIC

    10040

    IIC协议学习笔记

    IIC写时序? IIC读时序? IIC协议在读写数据时,总是要发送器件地址,这里需要注意的是,不是主机给从机发送地址,而是主机给地址总线上发送地址,挂IIC总线上的所有从机都能收到地址,如果发过来的地址和自己的地址匹配上了,从机就会给主机一个应答 所以我在想,如果从机的器件是完全一样的,那么IIC协议就可以同时给多个从机,即对多个器件进行配置。 即IIC协议一次只能和一个设备器件进行通讯。IIC读写时序补充 双字节地址写时序,写入器件地址,写入寄存器地址高位、低位,然后写数据。? 多数据写时序,写入器件地址,写入寄存器地址,连续写入数据。?

    59460

    协议——SCCB与IIC的区别

    由此可见,SCCB就是改编版的IIC,完全可以按照IIC来理解,下面仔细讲解SCCB的时序以及和IIC的不同之处。一、SCCB起始和结束(与IIC完全一致)? 二、SCCB写(与IIC完全一致)?  ID Address(W)里面就已经包括进了IIC中的“读写控制位”,所以没有额外写出。   X,表示“dont care”,而IIC应答位称为ACK。   2.SCCB只能单次读,而IIC除了单次读还支持连续读。   _2 除去上面三点,SCCB和IIC再无区别,因此如果只需要配置寄存器(只用到写),可以直接拿IIC的时序来当做SCCB用,如果需要读,读操作中间必须有一个stop。

    25030

    28.Linux-IIC驱动(详解)

    上一节 我们学习了:  IIC接口下的24C02 驱动分析接下来本节, 学习Linux下如何利用linux下I2C驱动体系结构来操作24C021. adap){ struct list_head *item; 链表头,用来存放i2c_driver结构体的表头 struct i2c_driver *driver; i2c_driver,用来描述一个IIC = (msg->addr & 0x7f) flags & I2C_M_RD) { 判断是读,还是写 stat |= S3C2410_IICSTAT_MASTER_RX; addr |= 1; 设置从IIC 从设备地址值,并回应ACK}通过上面的代码和注释,发现主要是写入IIC从设备地址,然后发送起始信号+IIC从设备地址值,并回应ACK显然IIC总线驱动i2c-s3c2410.c,主要设置适配器adapter ,里面帮我们做好了IIC通信的架构,就是不知道发什么内容我们进入driveri2cchips中,看看eeprom设备驱动是如何写的参考: driveri2cchipseeprom.c6.还是首先来看它的

    1.2K70

    20.Linux-IIC驱动(详解)

    adap){ struct list_head *item; 链表头,用来存放i2c_driver结构体的表头 struct i2c_driver *driver; i2c_driver,用来描述一个IIC = (msg->addr & 0x7f) flags & I2C_M_RD) { 判断是读,还是写 stat |= S3C2410_IICSTAT_MASTER_RX; addr |= 1; 设置从IIC (i2c->regs + S3C2410_IICCON); 读出IICCON寄存器 writel(stat, i2c->regs + S3C2410_IICSTAT); 写入IICSTAT寄存器,使能IIC ->dev, START: %08lx to IICSTAT, %02x to DSn, stat, addr); writeb(addr, i2c->regs + S3C2410_IICDS); 将IIC 从设备地址值,并回应ACK}  通过上面的代码和注释,发现主要是写入IIC从设备地址,然后发送起始信号+IIC从设备地址值,并回应ACK  显然IIC总线驱动i2c-s3c2410.c,主要设置适配器adapter

    12620

    IIC设备驱动实例调试

    iic通讯协议网上总结的相当到位,有时间会整理一下。本篇对iic通讯协议的介绍到此为止,主要是对iic实际设备的代码总结。 注册和卸载驱动的API: i2c_add_driver(); i2c_del_driver(); 本质是将iic驱动加载到系统的iic的链表中。 总结: 本篇主要记录了iic设备ap3216c的驱动简单实现,对于iic通讯原理并没有做太详细的分析。 在实际学习中,我的经验是:先对iic协议有个详细的了解,然后实际实现一个iic驱动设备,再从头复习iic通讯协议,会对iic通讯有一个更加清晰深刻的认识。 对于使用过单片机调试iic设备的同学,对于iic通讯应该很熟悉了,主要就是对linux驱动注册流程稍加研究即可。

    27220

    ESP8266_09基于IIC控制的OLED屏幕

    但偶尔,我可能还会说一下它的硬件的基本用法,例如ADC、SPI等,看情况吧,时间富裕与否~ 好,这一节,主要说一下ESP8266上面的IIC接口。是的,它有SPI接口,也有IIC接口。 但IIC接口是使用GPIO模拟的,也就是说,你可以使用8266上的任意两个GPIO模拟出IIC接口来。同时,每个管脚内部都有上拉电阻,无需外接。 注:ESP8266只能用做IIC主设备,不能用做从设备。 那我们是否还要写一堆IIC的start函数、stop函数? 这里使用一个0.96寸的,带有IIC接口的OLED屏幕。这类屏幕按照我见过的接口不同,分两种:一种是4针的,只能接IIC接口;一种是7针的,既能接IIC,又能接SPI。 会用IIC的自然就懂了,不懂就说明你还没学好IIC。 7针的接口,针脚功能如下:? 虽然IIC只用到CLK和SDA两个脚,但是这里还要注意下复位管脚,要给它接一个高电平,否则无法工作。

    38031

    ARM(十五).IIC with IRQ 2

    EQU 0x53000004 ;Watch-dog timer dataWTCNT EQU 0x53000008 ;Eatch-dog timer count ;================= ; IIC ;================= IICCON EQU 0x54000000 ;IIC controlIICSTAT EQU 0x54000004 ;IIC statusIICADD EQU 0x54000008 ;IIC addressIICDS EQU 0x5400000c ;IIC data shift ;================= ; IIS ;================= IISCON

    9430

    01-用户空间操作IIC

    工具准备调试IIC过程中,需要准备示波器或逻辑分析仪,需要通过示波器查看波形确定硬件连接是否正确,不然出现问题,软件再怎么调试,都是枉然.普源示波器RIGOL(DS1102E)逻辑分析仪,淘宝上购买, USB 逻辑分析仪 24M采样8通道自动分析UART,IIC,SPI等诸多标准协议 实际使用过程中,效果还不错,体积很小,USB接口, 自己解析IIC波形, 相比示波器,方便许多。 参考i2c驱动之调用ioctl函数进行读写at24c08Androidlinux 平台下使用 i2c-tools调试IIC方法树莓派学习笔记——I2C Tools 学习笔记7位,8位和10位IICI2C

    75630

    ARM(十五).IIC with IRQ 3

    0x53000004) Watch-dog timer data#define rWTCNT (*(volatile unsigned *)0x53000008) Eatch-dog timer count IIC #define rIICCON (*(volatile unsigned *)0x54000000) IIC control#define rIICSTAT (*(volatile unsigned * )0x54000004) IIC status#define rIICADD (*(volatile unsigned *)0x54000008) IIC address#define rIICDS ( *(volatile unsigned *)0x5400000c) IIC data shift#define rIICLC (*(volatile unsigned *)0x54000010) IIC

    147110

    IIC总线最多可以挂多少个设备

    IIC(Inter-Integrated Circuit)其实是IIC Bus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展 IIC总线最多可以挂多少个设备由IIC地址决定,8位地址,减去1位广播地址,是7位地址,2^7=128,但是地址0x00不用,那就是127个地址, 所以理论上可以挂127个从器件。 总线之所以规定电容大小是因为,IIC的OD要求外部有电阻上拉,电阻和总线电容产生了一个RC延时效应,电容越大信号的边沿就越缓,有可能带来信号质量风险。 所以结论就是IIC总线挂载设备一般在8个以下。 补充:IIC协议经常用在一些外部存储器件,比如64K、128K的flash,主控和flash之间是IIC通信,Linux内核有写的非常规范的IIC协议和各种所需的结构体,可以参考。

    51040

    03-IIC外设从机地址

    在7位寻址过程中,从机地址在启动信号后的第一个字节开始传输,该字节的前7位为从机地址,第8位为读写位,其中0表示写,1表示读

    27920

    扫码关注云+社区

    领取腾讯云代金券