微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > MSP430多处理器之间的通信方式及协议

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

时间:09-16 来源:互联网 点击:
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;i<NEND;I++){
wCrc^=WoRD(BYTE(pSendBuf);
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。


4 结 语

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top