查看: 1054|回复: 0

[经验] 浅析常用单片机通信方式、难点以及解决方案

[复制链接]
  • TA的每日心情
    开心
    2019-11-4 13:48
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2020-1-13 09:46:53 | 显示全部楼层 |阅读模式
    分享到:
    越来越多的功能各异的单片机为我们的设计提供了许多新的方法与思路。对于莫一些场合,比如:复杂的后台运算及通信与高实时性前台控制系统、软件资源消耗大的系统、功能强大的低消耗系统、加密系统等等。如果合理使用多种不同类型的单片机组合设计,可以得到极高灵活性与性能价格比,因此,多种异型单片机系统设计渐渐成为一种新的思路,但单片机之间的通信一直是困扰这种方法拓展的主要问题。
    <span]
    本文将分析比较几种单片机之间的方式、难点,并提出一种解决方案。
    <span]1、几种常用单片机之间的通信方式
    ①采用硬件]
    ②采用片内]
    ③利用软件模拟]
    ④口对口并行通信,利用单片机的口线直接相连,加上]
    ⑤利用双口]
    从上面几种方案来看,各种方法对硬件都有很大的要求与限制,特别是难以在功能简单的单片机上实现,因此寻求一种简单、有效的,能在各种单片机之间通信的方法具有重要的意义。③、④方案中,双方单片机要传递的每一位或每一个字节做出响应,通信数据量较大时会耗费大量的软件资源,这在一些实时性要求高的地方是不允许的。针对这一问题,假设在单片机之间增加]
    2]铁电存储器是美国 Ramtran 公司刚刚推出的一种新型非易失性存储器件,简称 FRAM。与普通 EEPROM、Flash-ROM 相比,它具有不需写入时间、读写次数无限,没有分布结构可以连续写放的优点,因此具有 RAM 与 EEPROM 的双得特性,而且价格相对较低。现在大多数的单片机系统配备串行 EEPROM(如 24CXX、93CXX 等)用来存储参数。如果用 1 片 FRAM 代替原有 EEPROM,使它既能存储参数,又能作串行数据通信的缓冲器。2 个(或多个)单片机与 1 片 FRAM 接成多主 - 从的 I2C 总线方式,增加几条握手线,即可得到简单高效的通信硬件电路。在软件方面,只要解决好 I2C 多主 - 从的控制冲突与通信协议问题,即可实现简单、高效、可靠的通信了。
    ]3、 实例(双单片机结构,多功能低功耗系统)
    (1)硬件
    <span]
    W78LE52]
    (2)I2C]
    由于我们采用的是二主一从的]
    (3)通信协议
    <span]
    一个可靠通信体系,除了好的硬件电路外,通信协议也至关重要。在单片机系统]
    ①包头——指示数据包的开始,有利于包完整性检测,有时可省略;
    <span]
    ②地址——数据包要传送的目标地址,若只有双机通信或硬件区分地址可以省略;
    <span]
    ③包长度——指示整个数据包的长度;
    <span]
    命令——指示本数据包的作用;
    <span]
    ⑤参数——需要传送的数据与参数;
    <span]
    ⑥校验——验证数据包的正确性,可以是和校验、异或校验、CRC]
    ⑦包尾——指示数据包的结尾,有利于包完整性检测,有时可省略。
    <span]
    (4)通信流程
    <span]
    首先,要在]
    如果需要单片机]
    4]通过实践可知,以上方法是可行的。与其它方法相比具有发下优点:
    ]①简单。占用单片机口线少(SCL、SDA、握手线 A、握手线 B)。
    ]②通用。软件模拟 I2C 主机方式,可以在任何种类的单片机之间通信。
    ]③高效。由于采用数据缓冲,可以在不同时钟频率、不同速度的单片机之间通信;读写数据时,可以 I2C 总线的最高速度进行,可以实现 1 次传送大量数据;在一个单片机向 FRAM 传送数据时,另一个单片机无须一一作出响应或等待,可以进行其它程序操作,提高软件工作效率。
    ]④灵活。通信硬件接口对于各个单片机是对等的,通过软件配置,每个单片机既可以根据需要主动发送通信,也可以只响应其它单片机的呼叫。
    ]⑤容易扩展。通过增加地址识别线,修改通信协议,即可做到多机通信。
    ]以下是需要注意的地址:
    ①为了提高通信效率,握手线]
    ②向对方发送负脉冲时,应屏蔽自己的中断。
    <span]
    ③由于参数与通信缓冲区同时设在同一片]
    ④由于 I2C 总线在一个时间段内只有 1 个主机和 1 个从机,所以当 1 个单片机正在写通信数据时,另一个单片机是不能对 FRAM 进行操作的。如果需要实时、频繁地读取 FRAM 中参数的话,请预先将参数读入 RAM 单元使用或另外增加专门存放参数的芯片

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2025-1-13 07:48 , Processed in 0.122859 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.