雷火竞技

鑫尚宁科技一站式单片机芯片及应用方案定制服务商

0755-29491013 / 158-8970-5696
鑫尚宁-记录鑫尚宁实时动态
您当前的位置: 雷火竞技 > 资讯频道 > 新闻资讯 > 技术百科 > 单片机常用通信方式有哪些?常用数据包结构是什么?

单片机常用通信方式有哪些?常用数据包结构是什么?

2022-01-04

一、简述常用单片机之间的通信方式。

1.使用硬件UART进行异步串行通信。这是一种占用口线少、有效可靠的通信方式;遗憾的是,许多小型单片机没有硬件UART,有些只有一个UART。如果系统必须与上位机通信,硬件资源是不够的。这种方法一般用于单片机有硬件UART,不需要与外界串行或使用双UART单片机。

2.采用片内SPI接口或I2C总线模块串行通信。SPI/I2C接口具有硬件简单、软件编程简单的特点,但目前大多数单片机没有硬件SPI/I2C模块。

3.使用软件模拟SPI/I2C模式通信。这种方法很难模拟从机模式。通信双方都应该对每个人做出反应。通信速率与软件资源成本之间存在很大矛盾。如果处理不当,系统的整体性能将急剧下降。这种方法只能用于通信量很小的场合。


通信模式


4.口对口并行通信,直接连接单片机口线,加1~2个握手信号线。这种方法的特点是通信速度快,一次可以传输4或8甚至更多,但需要占用大量的口线,数据传输是准同步的。单片机向另一个单片机传输一个字节后,下一个数据必须等到另一个单片机接收响应信号。一般用于一些硬件口线丰富的场合。


通信模式01


5.使用双口RAM作为缓冲器通信。这种方法最大的特点是通信速度快,两边都可以直接用读写内存的指令操作;但是这种方法需要大量的口线,双口RAM的价格很高,一般只用于一些对速度有特殊要求的场合。

移位寄存器也可以用作数据缓冲器,但目前最大容量只有128位。因为它是一个先进先出的结构,无论传输多少数据,接收器都必须移动整个寄存器。灵活性差、容量大的移位寄存器也很少见,难以购买。

二、通信协议。

一个可靠的通信系统,除了良好的硬件电路外,通信协议也非常重要。在单片机系统RAM资源和执行速度非常有限的情况下,简单有效的协议非常重要。以下是一个适合单片机通信的协议,以包的形式传输数据。数据包结构:

①包头-指示数据包的开始,有利于包的完整性检测,有时可以省略; 

 ②地址-数据包要传输的目标地址,如果只能省略双机通信或硬件区分地址;

③包长-指示整个数据包长度; 

 ④命令-指示本数据包的功能;

 ⑤参数-需要传输的数据和参数;

⑥验证-验证数据包的正确性,可与验证、异或验证、CRC验证等组合;

 ⑦包尾-指示数据包的结尾,有利于包的完整性检测,有时可以省略。 

三、通信流程。

首先,在FRAM中划分每个区域、每个单片机的参数区域、数据接收区域等。然后,单片机可以将数据包发送到另一个单片机,并通过向握手线B发送脉冲通知对方取走数据;接收器读取并处理数据后,将回传数据或通信失败标志写入FRAM发送器的数据接收区域,然后向握手线B发送脉冲响应发送器。如需单片机2发送,只需交换操作流程即可。

四、单片机通信总结。

通过实践,上述方法是可行的。它具有发下优势:

①简单。占用单片机口线少(SCL、SDA、握手线A、握手线B)。

②通用。软件模拟I2C主机,可以在任何类型的单片机之间通信。 

③效率高。由于数据缓冲,可以在不同时钟频率和速度的单片机之间进行通信;读写数据时,I2C总线的最高速度可以实现一次传输大量数据;当一台单片机向FRAM传输数据时,另一台单片机可以进行其他程序操作,提高软件的工作效率,而无需逐一响应或等待。

④灵活性。通信硬件接口等于每台单片机。通过软件配置,每台单片机不仅可以根据需要主动发送通信,还可以只响应其他单片机的呼叫。

⑤易于扩展。通过增加地址识别线,修改通信协议,可以实现多机通信。

以下是需要注意的地方:

①为了提高通信效率,握手线B最好使用中断端口,负脉冲宽度必须满足低速单片机中断信号的要求。如果没有中断,应增加一条口线,通知对方改变端口状态,等待查询,而不是负脉冲。

②向对方发送负脉冲时,应屏蔽自己的中断。

③由于参数和通信缓冲区同时设置在同一FRAM中,因此有必要避免误操作参数部分。更好的解决方案是将参数存储在地址的后半部分(A2=1)。在通信操作过程中,提高FRAM的WP引脚(保护后半部分的单元),有效防止测试时参数误操作。

④由于I2C总线在一段时间内只有一个主机和一个从机器,当一台单片机正在编写通信数据时,另一台单片机无法操作FRAM。如果您需要实时、频繁地阅读FRAM中的参数,请提前将参数读入RAM单元或添加特殊存储参数的芯片。查看一般单片机芯片技术参数

【本文标签】 单片机通信方式 单片机通信协议

【责任编辑】版权所有

咨询热线

0755-29491013

关注雷火竞技

  • 微信客服一微信客服一
  • 微信客服二微信客服二
备案号:   技术支持:   百度统计  CNZZ