SD833(3BSC610066R1)
ABBSD833(3BSC610066R1)由于我们采用的是二主一从的I2C总线方式,因此防止2个主机同时去操作从机(防冲突)是一个非常重要的问题。带有硬件I2C模块的器件一般是这样的,器件内部有1个总线仲裁器与总线超时定时器:当总线超时定时器超时后指示总线空闲,这时单片机可以发出获取总线命令,总线仲裁器通过一系列操作后确认获取总线成功或失败;超时定时器清零,以后的每一个SCL状态变化对总线所有主机的超时定时器进行清零,以防止它溢出,指示总线正处于“忙”状态,直到一个主机对总线控制结束不再产生SCL脉冲;超时定时器溢出,总线重新回到“空闲”状态。但是目前大多数单片机没有配备硬件I2C模块,而且当2个主机的工作频率相差较大时,超时定时器定时值只能设为较大的值,这样也会影响总线的使用效率。下面介绍一种用软件模拟I2C总线仲裁的方式(I2C读写操作程序的软件模拟十分多见,这里不再多述):用1条握手线A,流程图如图2所示,当A线高电平时,指示总线空闲;当其中一个主机要获取总线控制权时,先查询总线是否空闲,“忙”则退出,空闲则向A线发送一个测试序列(如:1000101011001011),在每次发送位“1”后读取的A线状态。如果读取状态为“0”,马上退出,说明有其它器件已经抢先获取总线;如果一个序列读取的A线状态都正确,则说明已成功获得总线控制权,这时要拉低A线以指示总线“忙”,直到读写高A线,使总线回到“空闲”状态。不同的主机采用不同的测试序列,或产生随机测试序列,测试序列度可以选得长一些,这样可以增加仲裁的可靠性。流程框图(3)通信协议一个可靠通信体系,除了好的硬件电路外,通信协议也至关重要。在单片机系统RAM资源与执行速度都非常有限的情况下,一个简捷有效的协议是非常重要的。下面具体介绍一种比较适用于单片机通信的协议,数据以包的形式传送。数据包结构:①包头——指示数据包的开始,有利于包完整性检测,有时可省略;②地址——数据包要传送的目标地址,若只有双机通信或硬件区分地址可以省略;③包长度——指示整个数据包的长度;④命令——指示本数据包的作用;⑤参数——需要传送的数据与参数;⑥校验——验证数据包的正确性,可以是和校验、异或校验、CRC校验等或者是它们的组合;⑦包尾——指示数据包的结尾,有利于包完整性检测,有时可省略。(4)通信流程首先,要在FRAM里划分好各个区域,各个单片机的参数区、数据接收区等。然后,单片机可以向另一个单片机发送数据包,发送完毕之后通过向握手线B发送1个脉冲通知对方取走数据;接收方读取数据并进行处理后,向FRAM内发送方的数据接收区写入回传数据或通信失败标志,再向握手线B发送1个脉冲回应发送方。表3是单片机1启动1次与单片机2之间的通信的例子。如果需要单片机2发送的话,只需交换一下操作过程即可。步骤单片机1单片机2A线B线1总线空闲总线空闲112获取总线控制权其它操作013向FRAM内单片机2的数据接收区写入一包通信数据其它操作014向B线发送走个负脉冲,通知单片机2,启动超时定时器其它操作0负脉冲5其它操作响应来自B线的脉冲,读取FRAM内数据接收区的内容(无须获取总线操作)016其它操作对数据进行处理后,向FRAM内单片机1的数据接收区写入回传数据或通信失败标志017其它操作向B线发送1个负脉冲,通知单片机10负脉冲8清超时定时器,读取数据区内容。如果失败可以做重发或其它处理;如果成功则拉高A线,释放I2C总线,1次通信工程结束其它操作119如果超时定时器溢出,说明单片机2没有响应单片机1的通知,可以做重发或故障处理。ABBFREELANCE2000DAI04ABBFreelance2000DAI04ABBFreelance2000DAI03ABBFreelance2000DAO01BaileyCLC03COMMANDDSBC172DSCS131DSAI133DSAI110DSAI130DSAI145DSAI146DSAI155DSAI155ADSAI303DSAI305DSAO110DSAO130DSAO120ADSAO301DS***110DSAX110DSAX110ADSAX452CS513K02CS513K04DI621DO610DO630DSAI130DSAI145DSAI146DSAI155DSAI155ADSAO110DSAO130DSAO120DSAO120ADSAX110DSAX110ADSAX452DSBB120DSBC172DSBC173DSBC173ADSBC174DSCS140DSDI110DSDI110ADSDO115DSDO120DSDO131DSDO110DSDP150DSDX180DSDX180ADSDX452DSP***52DSPU131DSRF185DSRF186DSRF199DSSR170DSSS171DSTA001DSTA001BDSTA002BDSTA131DSTAN013DSTA002PDSTC120DSTC190DST***06DST***52DSTD108DSTD190DSTD197DSTX180DSDX453DSAI130SNSR-104YPQ201AY***7EYPQ202ADCU30/7DS***-111D***B175DSBC172DSCS131086329-004DAI01ABBDAI04ABB◆DAI05ABB◆DAO01ABB◆DCO01ABB◆DCP02ABB◆DCP10ABB◆DDI01ABB◆DDO01ABB◆DDO02ABB◆DDO03ABB◆DFC01ABB◆DFE01ABB◆DFI01ABB◆DFM11ABB◆DFP01ABB◆DLM01ABB◆DPW01ABB◆DPW02ABB◆DPW03ABB◆DRA02ABB◆ABBProcontic光纤耦合器(GJV3074379R2)ABBProcontic文字处理器模块(GJV3074381R101)ABBProcontic空套管空白槽(GJV3074397R1)的,ABBProcontic输入/输出单元(ICDG32L1)ABBProcontic平板的I/O远程单位(ICFC16L1)ABBProcontic远程单位(ICMK14F1)ABBProcontic模拟I/O远程单位(ICSA04B5)ABBProconticI/O单元-为120Vac(ICSC08L1-120)ABBProconticI/O单元-230VAC(ICSC08L1-230)ABBProconticI/O单元-24VDC(ICSC08L124)ABBProcontic远程模拟量输入模块(ICSE08A6)ABBProcontic远程模拟单位-24VDC(ICSE08B5-24.)ABBProcontic高速计数器(ICSF08D1的),ABBProcontic二进制输入单位(ICSI08D1-120)ABBProcontic二进制输入单位(ICSI08D1-230)ABBProcontic二进制输入单位(ICSI08D1-24)ABBProcontic二进制输入单位(ICSI08E1-120)ABBProcontic二进制输入单位(ICSI08E1-230)ABBProcontic二进制输入单位(ICSI08E1-24)ABBProcontic二进制输入模块-120VAC(ICSI08E3)ABBProcontic二进制输入单位-230VAC(ICSI08E4-230)ABBProcontic二进制输入单位(ICSI16D1-120)ABBProcontic二进制输入单位(ICSI16D1-230)ABBProconticI/O远程单位-24VDC(ICSI16D124)ABBProcontic二进制输入单位(ICSI16E1-120)ABBProcontic二进制输入单位(ICSI16E1-24)ABBProcontic远程I/O单位-24VDC(ICSK20F1):ABBProconticI/O远程单位-120VAC(ICSK20F1-120)ABBProconticI/O远程单位(ICSK20F1-230)ABBProcontic模拟I/O远程单位(IC***06A6)ABBProcontic二进制输出单位230VAC(ICSO08R1-230)ABBProcontic输出单位(ICSO08R1-24)ABBProcontic二进制输入模块-24VDC(ICSO08Y1)ABBProcontic二进制输出单位230VAC(ICSO08Y1-230)ABBProcontic二进制输出单元24VDC(ICSO08Y1-24)ABBProconticI/O远程单位-数字输出(ICSO16N1),ABBProcontic电源连接单元(SACEPR120/B)ABBProcontic的模拟输入Expanison模块(XE08B5))
厦门渤格电气技术有限公司
业务 QQ: 1982497648