基于I2C总线的单主多从单片机之间的通信

发布者:温暖梦想最新更新时间:2011-11-02 关键字:I2C总线  单主多从单片机 手机看文章 扫描二维码
随时随地手机看文章
  引言

  随着单片机控制系统的不断扩大以及控制功能不断增多,有限的单个单片机通用I/O口已不能满足同一系统中控制多个受控对象需要,随着FC总线研究的深入,用I2C总线扩展单片机I/O口的方法在全自动、半自动仪器的开发领域得到了广泛应用,本文介绍了一个测试系统通过FC总线扩展I/O口实现了系统的多个功能。给出了系统的硬件连接以及Atmega128与三个Atmega168之间的软件通信流程图。

  2 系统的硬件结构

  图1是作者所研究的测试系统的整体框图,本系统中主要芯片PHILIPS公司的LPC2292,在此系统中键盘上其中三个按钮分别控制三个电机,系统的主要功能是LPC2292将扫描到的键盘信息发给Atmega128单片机,Atmega128单片机通过I2C总线寻址Atmega168,并向被寻址的Atmega168发送电机控制命令,最后,电机根据Atmega168控制策略正常运行。电机启动同时,数据采集模块也开始正常运行,数据采集模块把采到数据送到LPC2292的A/D转换接口,然后将ADC输出的数据发送到LCD。系统中的拨码开关用于设置相应的Atmega168单片机的地址,当单片机Atmega128接收到LPC2292发来的控制命令时,通过I2C总线寻址Atmega168,当某个Atmega168的地址与Atmega128广播地址相同时,它就开始根据Atmega128发送的命令控制电机开始工作。


  图1基于I2C总线的I/O扩展框图

  3 I2C总线

  I2C总线是PHILIPS公司推出的芯片间串行数据传输总线,软、硬件协议十分巧妙,2根线(SDA,SCL)HP可实现完善的全双工同步数据传送,能够十分方便地构成单主系统或多主系统和外同器件扩展系统。不过,多主系统(即系统中有多个I2C总线接口的单片机)会出现多主竞争的复杂状态。I2C器件是把I2C的协议植入器件的I/O接口,使用时器件直接挂到I2C总线上,这一特点给用户在设计应用系统时带来了极大的方便。I2C器件无须片选信号,是否选中是由主器件发出的I2C从地址决定的。

  所有挂到I2C总线的外围器件,各自都有一个唯一确定的地址。任何时刻总线上只有一个主控器件对总线实行控制权,分时实现点对点的数据传送。I2C总线上所有外闱器件都有规范的器件地址,器件地址由7位组成,它和1位方向位(R/W)构成了I2C总线器件的寻址字节SLA,格式如下:


  器件地址(A6,A5,A4,A3)是I2C总线外围接口器件同有的地址编码(4位或5位),器件出厂时已固化好。引脚地址(A2,A1,A0)和器件在电路中的实际接法有关(地址线、电源或地),形成地址数据。数据方向位(R/W)规定了总线上的主节点对从节点的数据传送方向,当(R/W)位置1时接收,当(R/W)为0时发送。图1中的拨码开关设置了从单片机Atmega168的地址,也就是从机地址的低三位(A2,AI,A0),当某个拨码开关的某个开关闭合时,相应的地址位为零,否则相应位为1,因此可以通过拨码开关上开关的状态来设定从单片机Atmega168的地址,比如某个拨码开关与A0、A2位对应的开关闭合,与Al对应的开关断开,那么这个单片机地址的低三位为010。

  4 I2C通信的流程图

  根据I2C总线的传输协议规范和硬件连接,作者给出了如图2和图3基本程序流程图和部分程序。开发语言为c语言,与汇编语言相比,可以提高软件的执行速度。

  4.1 主机发送/从机接收I2C子程序流程图

  图2和图3给出了主机发送,从机接收I2C子程序流程图,通过I2C总线发送/接收数据时,I2C总线的控制寄存器的中断位必须先置位,为了避免因为某种原因不能使控制寄存器的中断位置位而导致程序进入死循环,作者在I2C总线通信程序发送/接收数据前编写了中断循环等待和错误处理程序,大大提高了程序的可靠性,具体程序如下:

  while(!(TWCR & (1<

  if(j>10000) return O:

  应用I2C总线发送数据时,作者采用了状态位查询方法,并且给出了错误标志置位、错误跳出程序,下面的程序是发送从机地址的部分程序:

  switch(TWSR & 0XF8)

  {

  case Oxl8: flag=0; break;

  case 0x20:flag=1; break;

  case 0x38:flag=l; break;

  default:return 0:

  }

  if(flag) continue;

  图2 I2C主机发送程序框图

  程序中的flag=0表示从机地址发送成功,flag=1表示从机地址发送失败,当TWSR寄存器中的状态码为0x18时,表明从机地址已发送,并且接收到ACK,同时错误标志“flag”置0,下一步通过心发送数据,当TWSR寄存器中的状态码为0x20时,表明从机地址已发送,但是接收到NO ACK,同时错误标志”flag”置1,下一步执行“if(flag)continue;”语句,结束本次循环,当TWSR寄存器中的状态码为0x38时,表明从机地址仲裁失败,同时错误标志“flag”置1,下一步执行“if(flag)continue;"语句,结束本次循环。总线将释放,并进入未寻址从机模式,总线空闲后将发送“start”。程序中“if(flag)continue;”语句使得当数据发送失败时,结束本次循环,返回到开始等待发送命令,这样避免了由于偶尔数据发送失败造成整个程序无法运行,甚至整个设备无法运行,因而,用“if(flag)continue;”语句结束错误传输。可提高I2C通信的质量,同时也提高了使用I2C总线通信的设备的效率。


  图3 从机接收流程图

  4.2 编程中的注意事项

  a)在主机或从机初始化时,一定要设定数据传输方向;

  b)由于每次发送/接收数据时TWCR寄存器的中断标志位必须置位,因此程序中要有等待TWCR寄存器中断位置位程序,同时,为了避免由于某种原因导致中断位不能置位造成等待程序进入死循环,在等待中断位置位程序中要有等待超时返回程序。

  c)I2C总线的使用,除了基本的启动、结束、应答、非应答子程序外,还应有应答位检查、发送和接收单字节、发送和接收多字节等子程序。

  5 结论

  作者在程序流程的每个关键部分都设置了错误查询和错误处理,使得I2C程序能够从错误中自动恢复,避免了由于I2C通信导致的错误而使得系统无法正常工作,文中还给出了部分发送子程序和编程注意事项。对于图2和图3的I2C通信流程,作者已在多个科研项目中进行了编程使用。实践证明,按上述流程编写I2C通信程序,主从单片机之间的通信非常可靠。

  本文作者创新点:程序流程的每个关键部分都设置了错误查询和错误处理,使心通信能够从错误中自动恢复,提高了使用I2C通信的可靠性,并且给出了避免死循环的错误处理程序。

关键字:I2C总线  单主多从单片机 引用地址:基于I2C总线的单主多从单片机之间的通信

上一篇:关于ARM7的键盘与VFD显示器接口技术
下一篇:PCI总线I/O时序波形观测及分析

推荐阅读最新更新时间:2024-05-02 21:41

I2C总线协议(AT24c02)程序
主:STC89C54 从: AT24C02 电路图 时序图 下面是代码 #include reg51.h #define uchar unsigned char #define addr_x 0xae // 写 #define addr_d 0xaf // 读 sbit sda = P2^1; //数据管脚 sbit scl = P2^0; //时钟管脚 bit ack; void DelayUs2x(unsigned char t)
[单片机]
<font color='red'>I2C总线</font>协议(AT24c02)程序
基于I2C总线的CMOS图像传感器接口电路设计
    1引言     数码相机等图像消费类电子产品产业正在飞速发展,这使得图像传感器和数码相机专用集成芯片的研制获得巨大的市场支持。目前广泛使用的数码相机图像传感器主要是以下两种:CCD和CMOS。CCD图像传感器具有技术成熟、图像噪声小等优点,但由于制作工艺复杂,与标准工艺不兼容,且需要高电压供电,芯片功耗大,目前仅在高级型数码相机市场上占有一席之地。而CMOS图像传感器采用了CMOS工艺,可以将图像采集单元和信号处理单元集成到同一块芯片上,因而具有集成度高、功耗低、价格便宜的优点,具有很好的发展前景。随着噪声消除技术的改进,目前CMOS图像传感器正由中、低档数码相机向高级型数码相机发展。     现在的CMOS图
[嵌入式]
加密存储芯片AT88SC1616的设计应用
随着嵌入式产品性能的日益提高,嵌入式系统在消费类电子、汽车、工业控制和通信等行业迅速普及;但由于嵌入式系统开发成本高、 研发周期长,使得关键技术的加密和重要数据的保密问题日益突出。如何在这些嵌入式系统中采用低成本、高效率的方法保护自己的科研成果不被非法仿制和剽窃,同时保存一些关键代码或数据已成为困扰许研发工程师的问题之一。解决的办法除了采用法律手段保护知识产权外,另一个更加简单有效的方法就是采用加密存储芯片进行硬件电路的加密和重要数据的认证存储。 AT88SCxx系列加密存储芯片是国际著名芯片厂商Atmel公司生产的具有多用途的加密存储系列芯片。其中AT88SC1616是该系列芯片的典型代表。由于其具有多达2KB的EEPRO
[单片机]
加密存储芯片AT88SC1616的设计应用
STM32 I2C总线 自我总结学习
现在打算彻底搞清楚STM32的I2C总线通信----首先是对AT24C02的读写----手上有PCF8574的IO扩展芯片,也是I2C协议的,希望实现多个控制! STM32的I2C有自带的硬件驱动,也可以使用GPIO模拟-----先总结一下硬件驱动下的问题。 ----------------------------------硬件下-----以AT24C02与PCF8574为例--------------- ------第一部分是简单宏定义------- #define I2C_Speed 300000 //传输速率--挂载原件多时要求降低速率,自己在调试过程中出现过这样问题 #define I2C1_OWN
[单片机]
STM32 <font color='red'>I2C总线</font> 自我总结学习
I2C总线接口扩展技术
  1 引言   i2c总线(inter ic bus,又常写作iic总线或i2c总线)是philips公司推出的新一代串行通信标准总线。它与spi、microwire/plus串行接口不同,仅仅依靠两根连线实现了完善的全双工同步数据传送:一根为串行数据线(sda),一根为串行时钟线(scl)。由于i2c总线具有接口电路简单,可进行系统的模块化、标准化设计,灵活性强,可维护性好等特性,目前已成为一种重要的串行通信总线。除了philips公司,像 motorola公司,韩国三星,日本三菱,美国 a/d等许多大公司都陆续推出了带有i2c总线标准接口的产品,涉及微处理器(mcu),通用的外围设备(eeprom,i/o口,a/d,d/a ,
[嵌入式]
基于FPGA视频采集中的I2C总线设计与实现
    随着科学技术的发展和现代战争条件的变化,传统图像信号提供的单一服务已远远不能满足现代战争的需要。图像信号由于包含有极其丰富的信息,具有通信效率高、便于记录、形象逼真、临场感强等特点,所传送的信息量远远超过其他通信手段,所以得到越来越多的重视。在JPEG2000系统下,视频采集系统是视频采集功能的FPGA(现场可编程门阵列)前端系统,是视频图像处理、应用的前项通道。作为视频采集系统的重要组成部分I2C(Inter Integrated Circuit)总线,早在20世纪80年代由荷兰Philips公司研制开发成功。它是一种简单、双向二线制同步串行总线硬件接口。   l I2C总线的特点和协议   I2C总线协议作为一个串行
[嵌入式]
I2C总线控制的TV显示处理器TDA9332H及其应用
摘要:TDA9332H是飞利浦公司生产的适合高档彩电的显示处理器,可用于单扫描(50或60Hz)和双扫描(100或120Hz)的电视信号处理。文章介绍了TDA9332H的结构原理和性能特点,同时给出了TDA9332H在高档彩电中的应用方法。 关键词:显示处理器;高档彩电;YUV/RGB;TDA9332H 1 TDA9332H的主要特点 TDA9332H是飞利浦公司为高档彩电设计的显示处理器。它采用44脚QFP封装形式,图1所示是其引脚排列图。此外,该芯片还有以下特点: ●具有YUV输入端和带快速消隐的RGB信号输入端,它的OSD/Text输入端与其它视频信号输入端分开,而且既有快速消隐功能又可混合插入;同时内设RGB控制
[手机便携]
51proteus仿真:I2c总线和EEPROM2404的读写
仿真电路图: 仿真程序: #include reg52.h #include INTRINS.H #define uchar unsigned char #define uint unsigned int sbit SCL=P1^0; sbit SDA=P1^1; void delay(void) { _nop_(); _nop_(); _nop_(); _nop_(); } void InitI2C(void) { SDA = 1; SCL = 1; } void I2CStart(void) { SDA=1; delay(); SCL=1; delay(); SDA=0; delay(); SCL=0; }
[单片机]
51proteus仿真:<font color='red'>I2c总线</font>和EEPROM2404的读写
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved