一种基于铁电存储器的双机串行通信技术
其它操作
0
1
4
向B线发送走个负脉冲,通知单片机2,启动超时定时器
其它操作
0
负脉冲
5
其它操作
响应来自B线的脉冲,读取FRAM内数据接收区的内容(无须获取总线操作)
0
1
6
其它操作
对数据进行处理后,向FRAM内单片机1的数据接收区写入回传数据或通信失败标志
0
1
7
其它操作
向B线发送1个负脉冲,通知单片机1
0
负脉冲
8
清超时定时器,读取数据区内容。如果失败可以做重发或其它处理;如果成功则拉高A线,释放I2C总线,1次通信工程结束
其它操作
1
1
9
如果超时定时器溢出,说明单片机2没有响应单片机1的通知,可以做重发或故障处理
《一种基于铁电存储器的双机串行通信技术(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/148401.html
4 总结
通过实践可知,以上方法是可行的。与其它方法相比具有发下优点:
①简单。占用单片机口线少(SCL、SDA、握手线A、握手线B)。
②通用。软件模拟I2C主机方式,可以在任何种类的单片机之间通信。
③高效。由于采用数据缓冲,可以在不同时钟频率、不同速度的单片机之间通信;读写数据时,可以I2C总线的最高速度进行,可以实现1次传送大量数据;在一个单片机向FRAM传送数据时,另一个单片机无须一一作出响应或等待,可以进行其它程序操作,提高软件工作效率。
④灵活。通信硬件接口对于各个单片机是对等的,通过软件配置,每个单片机既可以根据需要主动发送通信,也可以只响应其它单片机的呼叫。
⑤容易扩展。通过增加地址识别线,修改通信协议,即可做到多机通信。
以下是需要注意的地址:
①为了提高通信效率,握手线B最好使用中断端口,负脉冲宽度一定要满足速度较低单片机中断信号要求。如果没有中断的话应增加1条口线,用改变端口状态的方法通知对方,等待对方查询,而不是负脉冲。
②向对方发送负脉冲时,应屏蔽自己的中断。
③由于参数与通信缓冲区同时设在同一片FRAM内,要避免对参数部分的误操作。一个较好的解决办法是把参数存放在地址的后半部分(A2=1),在进行通信操作时,把FRAM的WP引脚拉高(地址在后半部分的单元写保护),这样可以有效地防止测验时对参数区误操作。
④由于I2C总线在一个时间段内只有1个主机和1个从机,所以当1个单片机正在写通信数据时,另一个单片机是不能对FRAM进行操作的。如果需要实时、频繁地读取FRAM中参数的话,请预先将参数读入RAM单元使用或另外增加专门存放参数的芯片。
《一种基于铁电存储器的双机串行通信技术(第3页)》