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微控制器进行工业产品设计通信的应用提供了参考方案。
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微控制器进行工业产品设计通信的应用提供了参考方案。
电子 Freescale 单片机 MCU 电流 总线 ADC 比较器 PWM 看门狗 振荡器 电压 相关文章:
- 一种新型防伪读码器的设计(01-01)
- 基于ARM与DSP的嵌入式运动控制器设计(04-25)
- 航天器DC/DC变换器的可靠性设计(02-12)
- 我国科学家人脸与笔迹识别领域获突破(04-29)
- 基于ARM核的AT75C220及其在指纹识别系统中的应用(05-24)
- 基于nRF2401智能小区无线抄表系统集中器设计(04-30)
