两种MCU间的串行通信协议设计
引言
Cortex-M3是ARM公司推出的32位处理器,使用了最新一代的ARMv7架构,具有高性能、低功耗和低成本的优点。对那些对功耗与成本敏感、但又要求较高性能的嵌入式应用来说,Correx-M3无疑是最佳解决方案;而对成本要求苛刻、运算能力要求不高的设备来说,嵌入成熟稳定的8051处理器,已经成为了业内的流行做法。目前,越来越多的嵌入式系统同时使用了上述两种MCU,因此如何使Cortex-M3与8051之间可以高效地进行信息交互,是实现设计目标的关键。
1 方案设计
要进行信息交互,离不开物理接口。在嵌入式应用中,目前常用的接口有UART、SPI和I2C等串行接口。UART接口只需两根数据线就可以工作,时序控制简单,大部分设备都整合了这种接口。而且,经过电平转换后UART的TTL电平可以转换成RS232电平,RS232接口是计算机标准配置的通信接口,可以通过超级终端查看串口的数据,便于使用PC机对线路进行检测分析。因此,本设计采用UART接口作为Cortex-M3与C51之间的通信接口。
考虑到各种需求,本文设计了一种基于UART接口的,用于Cortex-M3和C51之间的通信协议,使Cortex-M3与C51之间可以高效地进行信息交互。当两个MCU之间需要进行通信的时候,发送方把原始数据下放给通信协议,通信协议按照特定格式把数据打包,通过UART接口发送给对方。接收方收到数据时,MCU运行相应的通信协议,把数据解包,就可以得到发送方的原始数据,将其交付给上层程序。体系结构如图1所示。
如果使用其他串行接口,原理大体相同,只需对硬件作相应改动,即对接口控制模块稍作修改即可投入使用。
下面以实际工程中某种多媒体系统为例详细说明。该系统采用了以Cortex-M3为内核的STM32处理器和嵌入了C51核的MST776视频处理芯片,使用UART接口进行通信。
2 具体实现
2.1 硬件设置
具体的器件不同,UART的工作方式也有所区别,主要表现在波特率、停止位、数据字长度等参数上。当两个器件用UART连接时,所有参数必须完全一致,否则通信很容易出错。在此,要特别注意波特率的设置:当线路质量好的时候,波特率可以设置得高点,以获得较高的传输速率;线路质量差的时候,就要减小波特率,以降低误码率。
本设计中,STM32与MST776都整合了UART接口,只需配置少量电阻;同时,线缆长度不超过20 cm,使用环境的电磁干扰小,波特率可以设置为38 400bps,甚至更高。另外,考虑到C51的处理速度较低,因此波特率不应设置得太高,避免造成C51侧数据溢出,进而造成死机。
本设计只需使用两根数据线来实现两个MCU之间的互连,把STM32上选定的UART接口的TX与对端的UART接口的RX相连,把RX与对端的UART接口的TX相连。
评论