兩種MCU間的串行通信協(xié)議設計
引言
Cortex-M3是ARM公司推出的32位處理器,使用了最新一代的ARMv7架構(gòu),具有高性能、低功耗和低成本的優(yōu)點。對那些對功耗與成本敏感、但又要求較高性能的嵌入式應用來說,Correx-M3無疑是最佳解決方案;而對成本要求苛刻、運算能力要求不高的設備來說,嵌入成熟穩(wěn)定的8051處理器,已經(jīng)成為了業(yè)內(nèi)的流行做法。目前,越來越多的嵌入式系統(tǒng)同時使用了上述兩種MCU,因此如何使Cortex-M3與8051之間可以高效地進行信息交互,是實現(xiàn)設計目標的關鍵。
1 方案設計
要進行信息交互,離不開物理接口。在嵌入式應用中,目前常用的接口有UART、SPI和I2C等串行接口。UART接口只需兩根數(shù)據(jù)線就可以工作,時序控制簡單,大部分設備都整合了這種接口。而且,經(jīng)過電平轉(zhuǎn)換后UART的TTL電平可以轉(zhuǎn)換成RS232電平,RS232接口是計算機標準配置的通信接口,可以通過超級終端查看串口的數(shù)據(jù),便于使用PC機對線路進行檢測分析。因此,本設計采用UART接口作為Cortex-M3與C51之間的通信接口。
考慮到各種需求,本文設計了一種基于UART接口的,用于Cortex-M3和C51之間的通信協(xié)議,使Cortex-M3與C51之間可以高效地進行信息交互。當兩個MCU之間需要進行通信的時候,發(fā)送方把原始數(shù)據(jù)下放給通信協(xié)議,通信協(xié)議按照特定格式把數(shù)據(jù)打包,通過UART接口發(fā)送給對方。接收方收到數(shù)據(jù)時,MCU運行相應的通信協(xié)議,把數(shù)據(jù)解包,就可以得到發(fā)送方的原始數(shù)據(jù),將其交付給上層程序。體系結(jié)構(gòu)如圖1所示。
如果使用其他串行接口,原理大體相同,只需對硬件作相應改動,即對接口控制模塊稍作修改即可投入使用。
下面以實際工程中某種多媒體系統(tǒng)為例詳細說明。該系統(tǒng)采用了以Cortex-M3為內(nèi)核的STM32處理器和嵌入了C51核的MST776視頻處理芯片,使用UART接口進行通信。
2 具體實現(xiàn)
2.1 硬件設置
具體的器件不同,UART的工作方式也有所區(qū)別,主要表現(xiàn)在波特率、停止位、數(shù)據(jù)字長度等參數(shù)上。當兩個器件用UART連接時,所有參數(shù)必須完全一致,否則通信很容易出錯。在此,要特別注意波特率的設置:當線路質(zhì)量好的時候,波特率可以設置得高點,以獲得較高的傳輸速率;線路質(zhì)量差的時候,就要減小波特率,以降低誤碼率。
本設計中,STM32與MST776都整合了UART接口,只需配置少量電阻;同時,線纜長度不超過20 cm,使用環(huán)境的電磁干擾小,波特率可以設置為38 400bps,甚至更高。另外,考慮到C51的處理速度較低,因此波特率不應設置得太高,避免造成C51側(cè)數(shù)據(jù)溢出,進而造成死機。
本設計只需使用兩根數(shù)據(jù)線來實現(xiàn)兩個MCU之間的互連,把STM32上選定的UART接口的TX與對端的UART接口的RX相連,把RX與對端的UART接口的TX相連。
評論