微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 工业电子 > Modbus RTU协议在MCF51QE128上的实现

Modbus RTU协议在MCF51QE128上的实现

时间:12-07 来源:互联网 点击:
2 配置串口和定时器

void usart_init()

{

SCI1C1=0x13;//9bit character mode,odd parity

SCI1C2=0x2c;

SCI1BDL=0x29;//38400bps

SCI1BDH=0;

}

void timer3_init(void)//8MHz主时钟1333Hz中断判断命令包结束

{

TPM3CNTH=0;

TPM3CNTL=0;

TPM3MODH=0x49;

TPM3MODL=0xbe;

TPM3SC=0x48;

}

3 MCF51QE128解包modbus RTU的程序

void interrupt VectorNumber_ Vsci1rx SCI_RX_ISR(void)//字节接收程序

{

if(SCI1S1_PF==1)communication_error=1;//字节校验错误置通信失败标志位

*(pointer_RX1)=SCI1D;//将数据放入缓冲队列

pointer_RX1++;//队列指针后移

len_RX1++;//收到字节长度加1

timer3_reset();//定时器复位

timer3_init();//定时器重启动

}

void interrupt VectorNumber_Vtpm3ovf Timer3_ISR(void)//判断命令包接收结束

{

timer3_cnt++;//定时器中断次数加1

if(timer3_cnt==2)

{

timer3_reset();//定时器复位

pointer_RX1=Buffer_RX1;//队列指针初始化

full_RX1=1;//收完置标志位

}

}

4 CRC查表产生函数

由于篇幅有限,此处不再详述,表具体内容可参照相关参考文献。

三、总结

笔者的设计基于MCF51QE128控制核心来实现Modbus协议,已经成功进行了实际应用,通信可靠,而且实现起来比较容易。该设计为采用MCF51QE128微控制器进行工业产品设计通信的应用提供了参考方案。

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

网站地图

Top