I2C总线学习1

I2C总线学习(一)--信号类型

I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。     

    每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器,由总线上接收数据的器件则为接收器。
   在CPU与被控IC 之间、IC 与IC 之间进行双向传送,高速IIC 总线一般可达400kbps以上。 I2C总线在传送数据过程中共有三种类型信号,  它们分别是:开始信号、结束信号和应答信号。 
  开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 
  结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。 
  应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。 这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。

 

 代码:

(1)起始信号   

复制代码
Void I2CStart(void)
{
  SomeNop(  );

  SCL = 1;

  SomeNop(  );

  SDA = 0;

  SomeNop(  );

  SCL = 0;

  SomeNop(  );

}
复制代码

(2)终止信号

复制代码
void I2cStop(void)
{
    SDA = 0;
    SomeNop(  );
    SCL = 1;
    SomeNop(  );
    SDA = 1;
    SomeNop(  );
    SCL = 0;
}
复制代码

嵌入式单片机

 
摘要: 设计前要分析设备的需求,包括设备类型、要实现的所有功能,对应每一个功能如何实现、采用的数据传输类型和速率、所需要的硬件资源。接着针对我们的功能选择合适USB接口芯片,比较各种芯片的性能,选择性价比最高的芯片进行设计。选择好芯片后就可以开展实际的USB功能设备的软硬件开发,软件的开发包括USB芯片的固件设计、USB主机的驱动程序和主机的用户界面应用程序等,硬件开发涉及功能设备组件实现、硬件接口、分配资源等,软硬件的设计和调试是分不开的,最后对整个软硬件系统进行综合调试,以确保所需功能的完善。 USB设备的设计流程阅读全文
posted @ 2013-04-03 21:59 markmin214 阅读(2) | 评论 (0) 编辑
摘要: USB主机在USB系统中处于中心地位,并且对USB及其连接的设备有着特殊的责任,主机控制着所有对USB的访问,一个外设只有主机允许才有权力访问总线,主机同时也监测着USB的结构。USB主机包括三层:设备驱动程序、USB系统软件、USB主控制器(主机的总线接口) 。另外,还有两个软件接口:USB驱动接口,主机控制驱动(HCD)接口。 USB设备包括Hub和功能设备,一个USB设备可以分为三个层:最底层是总线接口用来发送与接收包,中间层处理总线接口与不同的端点之间的数据流通,一个端点是数据最终的使用者或提供者,它可以看作数据的源或接收端,最上层就是USB设备所提供的功能比如鼠标或键盘等。Hub(.阅读全文
posted @ 2013-04-03 21:51 markmin214 阅读(2) | 评论 (0) 编辑
摘要: USB总线接口具有向外提供电源的能力,并且是5V的电压,非常的适合TTL信号系统。使用这个电源可以再一定程度上为设备供电,减少了USB电源设计,简化了USB系统结构。USB电缆有四根导线:电源线(红色Vbus)、地线(黑色GND)、D+(绿色)和D -(白色)。 D+和D -导线是差分对,D+和D-是差分输入线,它使用的是3.3V的电压,而电源线和地线可向设备提供5V电压,对于高输出功率USB端口其最大输出电流为500MA,低输出功率为100mA。当然USB设备可以采用总线 供电,也可以采用自供电。连接某一设备后,主控制器将通过一个称为“枚举”的过程查询该设备,枚举过程允许主控制器了解所...阅读全文
posted @ 2013-04-03 21:45 markmin214 阅读(2) | 评论 (0) 编辑
摘要: USB(Universal Serial Bus,通用串行总线)作为一种新的外设连接技术,最初是由Compag,DEC,IBM,Intel,Microsoft,NEC和Northern Telecom等七大业内巨头共同开发的。该技术着眼于简化计算机与外设的连接过程,顾及低速和高速的兼容;从而解决串行设备和并行设备与计算机相连的争论,为用户提供一种可共享的、可扩充的、使用方便的串行总线。 随着PC机向各层次的发展与渗透,外围设备与PC的连接与扩充变得越来越重要。1994年,Microsoft公司提出PnP(Plus and Play,即插即用)方案,旨在把PC外设和扩充电路板连接起来,实现系统对阅读全文
posted @ 2013-04-03 21:41 markmin214 阅读(1) | 评论 (0) 编辑
摘要: 从左往右依次为:miniUSB公口(A型插头)、miniUSB公口(B型插头)、 USB公口(B型)、 USB母口(A型插座)、 USB公口(A型插头)阅读全文
posted @ 2013-04-03 21:25 markmin214 阅读(3) | 评论 (0) 编辑
摘要: 以三轴加速度传感器MMA7660为例:#define MMA7660_SDAGPIO_Pin_10//PC10 //IIC数据线接口#define MMA7660_SCLGPIO_Pin_15//PA15 //IIC时钟线接口#define MMA7660_INTGPIO_Pin_14//PA14 1 /* 2 *========================================================= 3 * 函数功能:IIC总线初始化信号 4 * 参数:无 5 * 函数返回值:无 6 * SDA --- 7 * ...阅读全文
posted @ 2013-04-03 18:55 markmin214 阅读(2) | 评论 (0) 编辑
摘要: 写入过程 单片机进行写操作时,首先发送该器件的7位地址码和写方向位“0”(共8位,即一个字节),发送完后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号作为相应,单片机收到应答后就可以传送数据了。 传送数据时,单片机首先发送一个字节的被写入器件的存储区的首地址,收到存储器器件的应答后,单片机就逐个发送各数据字节,但每发送一个字节后都要等待应答。当要写入的数据传送完后,单片机应发出终止信号以结束写入操作。写入n个字节的数据格式 : 读出过程 单片机先发送该器件的7位地址码和写方向位“0”(“伪写”),发送完后释放SDA线并在SCL阅读全文
posted @ 2013-04-03 18:30 markmin214 阅读(4) | 评论 (0) 编辑
摘要: 总线的寻址(1)寻址字节位定义 I2C总线采用7位的寻址字节,寻址字节是起始信号后的第一个字节。 D7~D1位组成从机的地址。D0位是数据传送方向位,为“0”时表示主机向从机写数据,为“1”时表示主机由从机读数据。(2)寻址方式 主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据R/位将自己确定为发送器或接收器。 从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。如一个从机的7位寻址位有4位是固定位,3位是可编程位,这时仅能寻址8个同样的器件,即可以有8阅读全文
posted @ 2013-04-03 17:28 markmin214 阅读(8) | 评论 (0) 编辑
摘要: 数据传送格式(1)字节传送与应答 每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。 (2)数据帧格式 在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。 注:有阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送。 A表示应答, 表示非应答(高电平)。S表示起始信号,P表示终止信号。。 举例:阅读全文
posted @ 2013-04-03 16:57 markmin214 阅读(8) | 评论 (0) 编辑
摘要: I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。 每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器,由总线上接收数据的器件则为接收器。 在CPU与被控IC 之间、IC 与IC 之间进行双向传送,高速IIC 总线一般可达400kbps以上。 I2C总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。 开始信号:SCL为高电平时,SDA由高...阅读全文
posted @ 2013-04-03 16:41 markmin214 阅读(119) | 评论 (0) 编辑
摘要: 将系统内各时钟的频率定义为宏,方便用户操作。•初始化流程:(1)(2)(3)阅读全文
posted @ 2013-04-03 14:54 markmin214 阅读(4) | 评论 (0) 编辑
摘要: CPU正常工作需要有合适的时钟信号,包括ARM核使用的CCLK时钟,和芯片外设使用的PCLK时钟。CPU时钟结构:时钟产生单元包括晶体振荡器、锁相环振荡器(PLL)和VPB分频器。•晶体振荡器可以使用内部的晶体振荡器产生时钟信号,也可以从外部引入时钟信号。•锁相环(PLL)由晶体振荡器输出的时钟信号,通过PLL升频,可以获得更高的系统时钟(CCLK)。•VPB分频器VPB分频器决定处理器时钟(CCLK)与外设器件所使用的时钟(PCLK)之间的关系。用途:通过VPB总线为外设提供所需的PCLK时钟,以便外设在合适的速度下工作;在应用不需要任何外设全速运行时使功耗降低。阅读全文
posted @ 2013-04-03 11:59 markmin214 阅读(23) | 评论 (0) 编辑
摘要: Cortex-M3 处理器内核Cortex-M3 处理器系统方框图Cortex ‐ M3总线连接范例寄存器组 Cortex ‐ M3处理器拥有 R0‐R15 的寄存器组。其中 R13 作为堆栈指针 SP 。SP 有两个,但在同一时刻只能有一个可以看到,这也就是所谓的“banked ”寄存器。存储器映射Cortex ‐ M3预定义的存储器映射 不像其它的 ARM 架构,它们的存储器映射由半导体厂家说了算,Cortex ‐ M3预先定义好了“粗线条的”存储器映射。通过把片上外设的寄存器映射到外设区,就可以简单地以访问内存的方式来访问这些外设的寄存器,从而控制外设的工作。结果,片上外设可以使用 C 阅读全文
posted @ 2013-04-03 09:00 markmin214 阅读(505) | 评论 (0) 编辑
摘要: 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。 嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。详细框图嵌入式开发体系结构 最小系统框图:阅读全文
posted @ 2013-03-28 19:25 markmin214 阅读(15) | 评论 (0) 编辑
摘要: MMA7660是一个3轴g-sensor,它主要用于测量倾斜角,惯性力,冲击力及震动.工作原理:mma7660是一种电容式g-sensor.电容式g-sensor大多为欧美厂商,其技术是在wafer的表面做出梳状结构,当产生动作时,由侦测电容差来判断变形量,反推出加速度的值.与压阻式不同的是,电容式很难在同一个结构中同时感测到三个轴(X,Y,Z)的变化,通常都是X,Y和Z分开来的, (这也就是为什么当板子水平放置时,无论如何改变X,Y的位置,都不会有中断产生,因为这时它只能检测Z轴的变化,X,Y的变化它检测不到,只有当我们将板子倾斜一个角度后才能检测X,Y的变化) .而压阻式在同一个结...阅读全文
posted @ 2013-03-28 17:15 markmin214 阅读(6) | 评论 (0) 编辑

 

 

 

 

 

原文地址:https://www.cnblogs.com/Leo_wl/p/2998782.html