历史上的今天
返回首页

历史上的今天

今天是:2025年05月07日(星期三)

正在发生

2021年05月07日 | MSP430多处理器之间的通信方式及协议

2021-05-07 来源:eefocus

在单片机系统中,多处理器是指多个相同类型或者不同类型的单片机协作处理同一个系统的不同工作。它们之间必须具备一定的数据交换和协作处理能力,共同完成一个系统化的工作。不同处理器之间可以采用数据交换方式、并行总线方式、串行总线方式进行通信。其中,数据交换方式又可以称为共享内存交换方式;串行总线方式又可以分为单总线方式、集成电路之间的通信方式和UART方式。


1 MSP430多处理器

MSP430是一款超低功耗的混合信号控制器,具有1 6位RISC结构,有着丰富的片内外设,主要包括有看门狗、定时器、比较器、硬件乘法器、液晶驱动器、ADC、I/0端口、串口(USART)等等,还集成有64 KB的Flas’E-ROM和2 KB的RAM。其功能强大,应用场合广泛。但是在大型复杂的场合或者实时性要求较高的场合,使用一个处理器处理所有的业务,总是显得有些不足。引入多个MsP430处理器协作工作的模式,可以提高系统的实时性、可靠性和适用性。


在多数场合,MSP430无须为每个处理器扩展FlashROM,也无须扩展RAM,采用共享内存的数据交换方式组成多处理器系统并非最佳选择。此外,MSP430包括有两个串口(USART),在MSP430的应用中,可以把两组串行端口中的一个供外部通信使用,另一个串行端口供内部通信使用。采用串行总线中的串行通信方式组成多处理器系统是比较理想的选择。


2 技术要点

2.1 MSP430多处理器组成

MSP430具有两个串行端口(USART),可以使用其中的一个作为多处理器之间的通信端口。由于串行通信的架构限制,MSP430采用UART串行通信模式组成的多处理器系统,必须建立一个主处理器和若干从处理器。主处理器的TXD端与所有从处理器的RXD端相连,所有从处理器的TXD端与主处理器的RXD端相连。MSP43O多处理器拓扑结构如图1所示。




在这个结构中,主处理器通过TXD端发送出指令报文,传输到从处理器的RXD接收端;从处理器对指令报文进行解包并且对这个指令报文进行响应。从处理器的响应报文通过TXD发送到主处理器的RXD接收端,主处理器获取响应报文确认指令是否被正确执行。从这个结构上看,主处理器可以与任何从处理器进行通信,任何从处理器也可以和主处理器进行通信,但是从处理器与从处理器之间却不可以进行直接的通信。

2.2 多处理器系统串行通信协议

在多处理器系统的串行通信方式中,可以有若干种通信协议进行选择,如ModBus、Brooks、工业总线协议等等。在此,可以选择业界通用的MocBus通信协议作为处理器与处理器之间的通信协议。

2.3 ModBus通信协议

Modbus协议支持传统的RS232、RS422、RS485和以太网设备。ModBus协议包括ASCII、RTU、TCP等报文格式,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。ModBtls的ASCII、RTU协议规定了消息和数据的结构、命令和就答的方式,数据通信采用Master/Slave方式。Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Mastez端,以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。

2.4 ModBus在多处理器系统中的报文格式

由于是一个主服务器对应多个从处理器的系统,处理器与处理器之间的报文传输必须明确标注目标地址和源地址,以免不相干的处理器之间进行误导操作。除此以外,为了提高主处理器的处理能力,同时避免不同处理器存在报文相应速度差,以及不同指令任务之间存在处理量差异的问题,必须采用异步通信模式进行通信。要满足异步通信模式,必须在报文中对每次的通信操作加注请求报文的16位标示(可以称之为句柄),同时对这些句柄进行记录。

2.4.1 数据读取请求报文格式




源地址:主处理器地址。

目标地址:指令目的地地址(从处理器)。

句柄:指令请求标示号。

功能代码:操作指令代码。

起始地址:读取从处理器数据寄存器的起始地址。

字节数:操作所涉及的寄存器字。

校验码:CRC校验码或者LRC校验码。

2.4.2 数据读取应答报文格式




源地址:从处理器地址。

目标地址:主处理器地址。

句柄:指令请求标示号。

功能代码:操作指令代码。

数据字节数:操作所涉及的寄存器字节数。

数据1至数据n:数据。

校验码:CRC校验码或者LRC校验码。


其中,应答报文中的目标地址等价于请求报文中的源地址,应答报文中的源地址等价于请求报文中的目标地址。


2.5 校验码

在ModBus中,通用的校验方式是ASCII协议方式采用LRC校验方式,RTU协议方式采用CRC校验方式。

2.5.1 LRC校验

LRC校验比较简单。它在ASCII协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容。它仅仅是把每一个需要传输的数据按字节叠加后取反加1即可。下面是它的C代码:


BYTE GetCheckCode(const char*pSendBuf,Int nEnd)

{ //获得校验码

BYTE byLrc=O。

char pBuf[4];

int nData=0

for(i=1;i{//每两个需要发送的ASCII码转化为一个十六进制数

pBuf[O]=pSendBuf[i];

pBu=pSendBuf;

pBuf[2]=、O’;

sscanf(pBuf,”%x”,& nData);

bvLrc+=nData;

byhc=~byLrc;

byLrc++;

return byLrc;

}

2.5.2 CRC校验

CRC是先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节和当前寄存器中的值进行处理。仅每个字符中的8位数据对CRC有效,起始位和停止位以及奇偶校验位均无效。


CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测。如果LSB为1,寄存器单独和预置的值“或”一下;如果LSB为O,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相“或”。最终寄存器中的值,是消息中所有字节都执行之后的CRC值。


CRC添加到消息中时,低字节先加入,然后高字节加入。下面是它的C代码:

WORD GetCheckCode(const char*pSendBuf,int nEnd)

{ //获得校验码

WORD wCrc=WORD(0xFFFF);

for(int i=O;iwCrc^=WoRD(BYTE(pSendBuf[i]);

for(Intj=O;j<8;J++){

if(wCrc&1){

wCrc>>=l;

wCrc^一OxA00l:

}

else{

wCrc>>=1;

retIlrIl wCrc:



3 报文示范

ModBus包含ASCII和RTU两种报文格式。RTU报文较短,但是没有边界定义;ASCII报文较长,但是边界明了。在多处理器通信之中,由于通信距离很短,干扰较小,因此可以选择较高的通信速率。通信速率提高了,报文长度较长对通信的影响不大,因此可以选择ASCII报文格式进行通信。


ModBus的ASCII读取请求报文格式如下:




ModBus 的 ASCII读取请求报文格式如下:




假设主机地址01,要对从机地址02进行读取247和248地址的两个寄存器值的通信,并且本次通信为第1次通信,设定流水号为000l。


结 语

多处理器协作工作模式和通信协议,已经成功应于CNG加气机,使系统信息交换更加迅速、可靠,整个系统的性能得到了提高。


推荐阅读

史海拾趣

GAIA Converter Inc公司的发展小趣事

在环保意识日益增强的今天,锋鸣电子(深圳分公司)积极响应国家号召,致力于绿色电子产品的研发与生产。公司投入大量资金引进环保设备和生产工艺,确保产品从原材料采购到生产制造的全过程都符合环保标准。同时,锋鸣电子还积极推广节能减排理念,为客户提供绿色、低碳的电子产品解决方案。凭借在绿色环保方面的突出表现,锋鸣电子赢得了业界的广泛赞誉。

Cyrix Corp公司的发展小趣事

1999年,Cyrix再次被威盛电子(VIA)收购。这次收购后,Cyrix所生产的CPU产品上开始出现了两个商标:VIA和Cyrix。这种双标现象反映了Cyrix在被收购后的地位变化。随着时间的推移,Cyrix的商标逐渐淡出市场,最终被彻底放弃。

AntennaHome公司的发展小趣事

AntennaHome公司深知技术创新是企业持续发展的根本动力。因此,公司始终坚持将研发作为企业的核心战略。公司不断加大对研发的投入力度,引进先进的研发设备和人才,同时积极与高校和研究机构开展合作。这些举措使得公司在天线技术领域始终保持领先地位,为公司的长远发展提供了有力保障。

这五个故事展示了AntennaHome公司在电子行业中的发展历程,从创业初期的技术创新到与国际大厂的合作,再到应对行业变革的挑战、参与国际展会以及持续投入研发,每一步都体现了公司的努力和坚持。

永源微电子(APM)公司的发展小趣事

在创立初期,永源微电子便注重技术研发与创新。公司投入大量资源,在BCD工艺、VD-Planarprocess、VD-Trenchprocess、SJ-Mos、SGT-Mos、Rad-Hard-Mos等领域取得了长足进展,并成功实现了量产。随着技术的突破,永源微电子的产品线也逐渐从MOSFET拓展到桥驱Driver等更广泛的领域。这些技术成果不仅提升了公司的核心竞争力,也为公司赢得了更多客户的认可。

Delock公司的发展小趣事

Delock公司的成功离不开其独特的企业文化和优秀的团队建设。公司注重培养员工的创新精神和实践能力,为员工提供广阔的发展空间和良好的职业前景。同时,公司还积极营造一种团结协作、互相尊重的工作氛围,让员工在工作中感受到归属感和成就感。这种积极向上的企业文化不仅吸引了大量优秀人才的加入,也为公司的长期发展提供了坚实的保障。

请注意,以上故事是基于一般电子行业的发展规律和假设性的“Delock公司”进行的虚构描述,并非真实案例。

CITIZEN公司的发展小趣事

近年来,西铁城公司在市场推广方面也进行了一些大胆的尝试。其中,与著名花样滑冰选手羽生结弦的跨界合作尤为引人注目。双方共同推出了限量版签名腕表“四周半”,这一产品以羽生结弦的经典动作为灵感,融合了西铁城独特的光动能技术,展现了技术与艺术的完美结合。这一合作不仅提升了西铁城品牌的市场影响力,也展示了公司在产品创新和市场推广方面的新思路和新策略。

这些故事只是西铁城公司发展过程中的一部分,但它们都充分展示了公司在电子行业中的创新实力和市场竞争力。从最初的维修和销售到如今的全球知名品牌,西铁城的发展历程充满了挑战和机遇,也为我们提供了一个观察电子行业发展和变革的窗口。

问答坊 | AI 解惑

IGBT 过压或过流后的状态?

IGBT过压击穿或过流后,IGBT处于开路还是短路?…

查看全部问答>

4号结婚,在此祝所有eeworldER永远幸福!

10月四号就要步入婚礼的殿堂了,回想几年前在eeworld上乱撞时众位前辈给我的解答还是万分感激,发几张婚纱照,也祝所有的eeworldER永远幸福! D:\\picture\\DSCF3541.JPG…

查看全部问答>

请问一下高手:evc的程序在PDA出现这个对话框怎么回事?谢谢

D:\\ 对话框里面写着: CE Platform POCKET PC 2003 don\'t match remote OS version 502.continue?…

查看全部问答>

USB设备开发中,既然遵循协议2.0的usb接口部件数据传输速率比较高,那么51单片机作为其微控制器,单片机本身的速度会不会成为整个usb速度或性能的瓶颈??

菜鸟初学usb开发,看过一些例子,发现基本都是以51作为usb芯片的微控制器,51的工作频率最高好像才33Mz,而usb高速传输理论速率可达480Mb/s,搞不太清它们会怎么相互影响。想充分发挥usb接口部件的高速性能,那微控制器的处理速度会带来什么样的影 ...…

查看全部问答>

什么叫X86开放式构架?

什么叫X86开放式构架? X86指什么?除了X86还有X什么吗? 做软件开发需要考虑X86吗?…

查看全部问答>

用.net SDK1.1开发的应用程序能有办法在WinCE.NET中使用吗?

如题:用.net SDK1.1开发的应用程序能有办法在WinCE.NET中使用吗? 即我的应用程序是用Visual Studio .NET 2003开发的,现在想做成嵌入式应用,这个程序能在WinCE.NET中使用吗?还是我必须另外写程序 希望高手指点!…

查看全部问答>

wince6.0中,IE6.0无法自动弹出软键盘

在wince6.0中,IE6.0和在wince6.0中的一样,当鼠标点在地址栏内,无法自动弹出软件盘。各位大侠有没有比较好的办法解决呢? 谢谢了! 另外,请问有谁做过将intel的PSM从5.0移植到6.0上呢?我现在一直过去了,但是PSM似乎都没有工作,看不到flash ...…

查看全部问答>

大家快帮忙看看我的程序,迷茫中....

是个读一个.txt文件内容的问题,其中strtxt是文件名字(***.txt)的变量。 代码如下: void ReadTxt::OnOK() {         // TODO: Add extra validation here         //---------------createfile打 ...…

查看全部问答>