MSP430多处理器之间的通信方式及协议

发布者:火箭飞人最新更新时间:2012-04-20 来源: 单片机及嵌入式系统应用 关键字:多处理器  UART  M0dBus  MSP430 手机看文章 扫描二维码
随时随地手机看文章

  在单片机系统中,多处理器是指多个相同类型或者不同类型的单片机协作处理同一个系统的不同工作。它们之间必须具备一定的数据交换和协作处理能力,共同完成一个系统化的工作。不同处理器之间可以采用数据交换方式、并行总线方式、串行总线方式进行通信。其中,数据交换方式又可以称为共享内存交换方式;串行总线方式又可以分为单总线方式、集成电路之间的通信方式和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位标示(可以称之为句柄),同时对这些句柄进行记录。[page]

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值。[page]

  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加气机,使系统信息交换更加迅速、可靠,整个系统的性能得到了提高。

关键字:多处理器  UART  M0dBus  MSP430 引用地址:MSP430多处理器之间的通信方式及协议

上一篇:MSP430和nRF905的无线数传系统设计
下一篇:无线局域定位系统的分析与设计

推荐阅读最新更新时间:2024-03-16 12:58

51单片机(二)—— GPIO&Uart
一、GPIO 1.1 内部上拉电路 51单片机的I/O口都可以同时作为输入和输出之用。除了P0口以外,其他的I/O口都有内部上拉电阻。 3个内部上拉电阻都有不同的功用,要理解这个电路需要一定的模拟电路的知识。 内部上拉电阻示意图 由于相关的硬件配置,在编程时有以下需要注意的地方: 当I/O口被用作输入用途时,读取输入前要保证锁存器状态为1。 当将I/O口由低拉高时,指令执行后需要1~2个机器周期才能使实际的输出变成高电平。 在外围电路上需要注意的地方: P0口做普通I/O使用时,要加上拉电路,因为其没有内部上拉。 为防止电流过大,必要时外加限流电阻。 1.2 编程示例 51单片机的I/O口在使用时,并不需要对其
[单片机]
MSP430F169 Timer_A原理(二)------Timer_A捕获模式
** 捕获模式 ** CAP = 1 时选择捕获模式。捕获模式用于记录时间事件。它可用于速度计算或时间测量。捕获输入 CCIxA 和 CCIxB 连接到外部引脚或内部信号,并通过 CCISx 位进行选择。 CMx 位选择输入信号的捕捉沿为上升沿、下降沿或两者兼有。捕获发生在输入信号的选定边沿。如果发生捕捉: 定时器值被复制到 TACCRx 寄存器中 中断标志 CCIFG 置位 输入信号电平可以随时通过 CCI 位读取。 MSP430x1xx 系列器件可能有不同的信号连接到 CCIxA 和 CCIxB。有关这些信号的连接,请参阅特定于器件的数据表。 捕获信号可能与定时器时钟异步并导致竞争条件。设置 SCS 位将使捕获
[单片机]
<font color='red'>MSP430</font>F169 Timer_A原理(二)------Timer_A捕获模式
MSP430G2553与MSP430F5336系列单片机总结[4]——比较器B的使用
比较器B是什么,顾名思义,它其实就是用来比较模拟电压+输入端和-输入端的电压大小,然后设置输出信号CBOUT的值的,如果 + 端电压高于 - 端电压,则CBOUT置高,否则置低。主要的控制寄存器有CBCTL0,CBCTL1,CBCTL2,CBCTL3,CBINT,CBIV,在MSP430G2553中没有比较器B,但是F5336中有,所以接下来的代码全都是F5336的比较器B使用程序: 1.比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端,内部参考电压发生器利用共享电压源产生2.0V参考电压。最后当CB0输入模拟信号电压高于2.0V时,CBOUT输出高电平,当CB0输入模拟信号电压低于2.0V时,输出低电平
[单片机]
DY-SV17F语音播放模块应用篇二 【UART 串口模式】
UART 串口模式 是采用波特率为 9600 的全双工串口通信。 语音模块做为从机处理,上电默认等待状态,所有播放操作全由主机控制。 从机不会主动发起通信,所有通信都是由主机发起。 串口模式接线图: 使用串口可以存放65535首曲目(需要注意模块只有4m内存),通过通信指令可以实现多种模式播放,具体如下: 控制指令 : 设置指令 : 查询指令 : 指令太多,就不全部介绍了,本文只使用指定播放功能: AA 07 02 这前三位是固定的,不用管; 后三位分别是 曲目高8位 曲目低8位 SM。 其中高8位和低8位刚好组成16进制,如0xFFFF刚好对应65535。
[单片机]
DY-SV17F语音播放模块应用篇二 【<font color='red'>UART</font> 串口模式】
分析一下UART IIC SPI驱动编写步骤
1,首先都是设置引脚的功能,把引脚设置到对应的模式 2,然后设置对应串口控制器的一些参数(也就寄存器的一些参数),完成对串口的基本设置,比如UART的波特率等等的。要配置哪些参数一般在对应外设的初始化结构体里都列了。所以这个步骤就变得很简单,就往对应外设的初始化结构体里面赋值就行了。而且我发现对引脚的设置其实也是对引脚的那个结构体的里面的参数赋值!!!!!都给它弄成结构体了,很方便!!!!!!!!!!所以整个过程就变成了往两个结构体里面填值就可以了,怪不得都不不需要变成用STM32cube选几下就可以了!!!!!!确实本质就是这样子的!!!!!!! 3,然后写发送或者接收。 我觉得主体可以分为以上三个部分。
[单片机]
分析一下<font color='red'>UART</font> IIC SPI驱动编写步骤
MSP430通用IO寄存器
1.PxDIR寄存器用来设置IO口的输出方向 当某一位为1时选择输出 当某一位为0时选择输入 P1DIR = 0X02; //设置P1.1为输出 或者 P1DIR |= BIT1;//设置P1.1为输出 2.PxOUT寄存器用来设置IO口的输出高低电平 当某一位为1时选择输出高电平 当某一位为0时选择输出低电平 P1OUT = 0X02; //设置P1.1为输出高电平 或者 P1OUT |= BIT1;//设置P1.1为输出低电平 3.PxIN寄存器用来设置IO口的输入高低电平 当某一位为1时选择输入高电平 当某一位为0时选择输入低
[单片机]
MSP430初学者教程(最详细)
学习就是迎接挑战、解决困难的过程,没有挑战,就没有人生的乐趣。下面以MSP430系列单片机为例,解释一下学习单片机的过程。 (1)获取资料 购买有关书籍,并到杭州利尔达公司网站和TI网站获取资料,例如,在网上可以找到FET使用指导、MSP430 F1xx系列、F4xx系列的使用说明和具体单片机芯片的数据说明,可以找到仿真器FET的电路图、实验板电路图、芯片封装知识等大量的实际应用参考电路,当然有些资料是英文的,看懂英文资料是个挑战,学会4、6级英语就是为看资料的。英语难学,但是看资料容易,只要下决心,看完一本资料,就可以看懂所有的相关资料。 (2)购买仿真器FET和实验电路板 如果经济条件不错,可以直接购买。 (3)自制仿真器FE
[单片机]
基于MSP430的便携式运动量及生理参数监测仪设计
  随着我国经济和医疗卫生事业的快速发展,人们对自身的健康状况越来越关注,其健康理念已经逐渐从单纯“预防疾病”向“改善和促进健康”转变——即由“早发现、早诊断、早治疗”的二级预防向“利用各种健康促进手段来改善健康状况”的一级预防转变。与此相适应,智能化监护仪器作为健康管理和促进的重要手段已经成为一个新兴的应用领域和重要市场,每个人都可以通过一定的健康促进手段来对个人进行“健康管理”。本文所述的便携式运动量及生理参数监测仪就是一种可用于个人健康管理的智能化仪器,其设计理念和应用背景充分体现了我国新兴的健康管理产业的基本发展趋势。 系统设计   便携式运动量及生理参数监测仪能实时记录和监测人体的运动数据,并定量评估人体运动量和体能
[医疗电子]
基于<font color='red'>MSP430</font>的便携式运动量及生理参数监测仪设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved