![](http://img4.cpooo.com/files/201905/30/p/99/1207632_1559181309.jpg)
F3YP14-0N
横河YOKOGAWAF3YP14-0N横河YOKOGAWAF3YP14-0N横河YOKOGAWAF3YP14-0N-------------------------------------------------------------------------------------------------------------------一个可靠通信体系,除了好的硬件电路外,通信协议也至关重要。在单片机系统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的通知,可以做重发或故障处理。4总结通过实践可知,以上方法是可行的。与其它方法相比具有发下优点:①简单。占用单片机口线少(SCL、SDA、握手线A、握手线B)。②通用。软件模拟I2C主机方式,可以在任何种类的单片机之间通信。③***。由于采用数据缓冲,可以在不同时钟频率、不同速度的单片机之间通信;读写数据时,可以I2C总线的***高速度进行,可以实现1次传送大量数据;在一个单片机向FRAM传送数据时,另一个单片机无须一一作出响应或等待,可以进行其它程序操作,提高软件工作效率。④灵活。通信硬件接口对于各个单片机是对等的,通过软件配置,每个单片机既可以根据需要主动发送通信,也可以只响应其它单片机的呼叫。⑤容易扩展。通过增加地址识别线,修改通信协议,即可做到多机通信。以下是需要注意的地址:①为了提高通信效率,握手线B***好使用中断端口,负脉冲宽度一定要满足速度较低单片机中断信号要求。如果没有中断的话应增加1条口线,用改变端口状态的方法通知对方,等待对方查询,而不是负脉冲。②向对方发送负脉冲时,应屏蔽自己的中断。③由于参数与通信缓冲区同时设在同一片FRAM内,要避免对参数部分的误操作。一个较好的解决办法是把参数存放在地址的后半部分(A2=1),在进行通信操作时,把FRAM的WP引脚拉高(地址在后半部分的单元写保护),这样可以有效地防止测验时对参数区误操作。④由于I2C总线在一个时间段内只有1个主机和1个从机,所以当1个单片机正在写通信数据时,另一个单片机是不能对FRAM进行操作的。如果需要实时、频繁地读取FRCPUXVME-688XycomXVME-230XycomXVME-686XycomXVME-957XYCOMXVME-530XYCOMXVME-428/2XYCOMVMEbusXVME-674XycomXVME-956XycomXVME-955XycomICMXVME-230XycomXVME-505/1XycomAINXVME-560xycomXVME-684XYCOMSRMXVME-010XYCOMXVME-260XycomXVME-500/3XycomXVME-560XYCOMXVME-201XycomXVME-010XycomXVME-240XYCOMXVME-540XYCOMXVME230/260XYCOMDIOXVME-240XYCOMXVME-202XYCOMXVME-566XycomXVME-590/3XVME-220XVME-505/1XycomXVME-675CPUXVME-674XVME-203/293XYCOMXVME240XYCOMXVME-244XVME-201XVME-530XYCOMXVME-220XVME-203XVME-224XVME-200XycomXVME-230/70230-001XVME-401XYCOMXVME-505XVME505/2XVME-675XVME-566XVME-977XYCOMXVME-203XycomXVME-660XVME-240XYCOMXVME-951XycomXVME-979XYCOMXVME-655XYCOMXVME-674XVME-100XYCOMXVME-100XYCOMXVME-630XYCOMXVME-590/1XYCOMXVME-404XYCOMXVME-661XYCOMXVME-500/903XVME-540XYCOMXVME-200XYCOMXVME-595XYCOMXVME-428/1XVME-080XYCOMXVME-081XVME-500/2XVME-164/1XYCOMXVME203XycomXVME-977XYCOMXVME-590/1XYCOMXVME660XycomXVME-678/70678-011XycomXVME-290XVME-564XVME-957XycomXVME-688XYCOMXVME290XycomXVME-293)