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