3.3 发送模块
发送模块包括发送控制模块,发送机模块,发送状态寄存器模块等。
发送机模块是基于普通UART发送原理设计,其发送过程如下:
(1)等待TDRE=‘1’,即等待发送数据寄存器(TDR)为空,随后TDR中载入一个字节数据,并把TDRE清零。
(2)根据波特率设置Sel_baud[1..0]对TDR里的数据进行奇偶校验计算。
(3)把TDR里的数据放入发送移位寄存器TSR的1~8位,TSR第O位放起始位(‘O’),TSR第9位放入奇偶校验位或者停止位(‘1’)。
(4)通过对TSR右移,一位一位地发送出9位数据比特,最后发送停止位(‘1’)。
3.4 CRC模块
CRC模块包括接收CRC控制模块,发送CRC控制模块,CRC产生模块三部分。
生成CRC的过程为:
(1)将一个16位寄存器装入十六进制FFFF(全1),将之称作CRC寄存器。
(2)将报文的第一个8位字节与16位CRC寄存器的低字节异或,结果置于CRC寄存器。
(3)将CRC寄存器右移1位(向LSB方向),MSB充零,提取并检测LSB。
(4)如果LSB为0:重复步骤(3)(另一次移位);如果LSB为1:对CRC寄存器异或多项式值0xA00l(1010000000000001)。
(5)重复步骤(3)和(4),直到完成8次移位。当做完此操作后,将完成对8位字节的完整操作。
(6)对报文中的下一个字节重复步骤(2)~(5),继续此操作直至所有报文被处理完毕。
(7)CRC寄存器中的最终内容为CRC值。
这种方式计算CRC值的时间比其他方式计算CRC(比如查表法等)的时间稍微要长,但是它节省了资源,比如查表法计算CRC需要一个数组来存放所有可能的CRC结果值。图5为对数据串“010300000001”(十绕行电感器六进制)CRC-16运算的仿真时序图,时钟周期为50 MHz,由图可见,整个计算时间在2.5 μs内,估算一个含有240个字符的消息,CRC校验总时间约为2.5μs×(240/6)=100μs,这样长的校验计算时间对于Modbus协议来说是完全可以接受的。
4 基于该接口的MODBUS从站协处理器实现
协处理器框图如图6所示。
从站协处理器控制模块程序控制过程如下:
(1)置CE_Modbus为‘1’,把MAX485芯片信号输出置低,即控制RS 485接口芯片处于接收状态。
(2)等待一段延迟时间(RS 485接口芯片稳定时间),使能Modbus协议接口模块即置CE_Modbus为‘1’,并置接收Modbus协议帧模式。
(3)如果接收到一个完整的帧(消息),则转到步骤(4),如果没接收到一个完整的消息,一直处于等待状态。
(4)先置CE_Modbus为‘O’,再解释接收缓冲寄存器里消息,等待消息处理完毕,如果消息不是发往该从站或者为广播电感磁环消息,则转到步骤(2);否则把信号输出置高,转到步骤(5)。
(5)等待一段延迟时间,使能Modbus协议接口模块即置电感生产CE_Modbus为‘1’,并置发送Modbus协议帧模式。
(6)等待发送完成,转到步骤(1)。
解释模块主要由解释控制模块、分析模块、各功能码解释模块、错误功能码处理模块组成。分析模块首先分析接收消息起始两个字节,即地址码和功能码。如果地址为广播消息地址(地址为0)或者地址码和本从站地址不相等,则不处理本消息,解释控制模块发出解释完毕并置不响应信号为“1”,顶层控制模块继续处于等待接收消息状态。如果功能码为非支持功能码,则选择错误功能代码处理模块;如果为某一支持的功能码,则选择相应的功能模块解释接收消息,按照功能码要求解码(例如读/写某一指定寄存器或者线圈)。处理完之后把相应的异常码响应消息或者正常响应消息写入Modbus协议接口模块里的发送缓冲寄存器里,完毕之后通过Ld_TbNCE信号把发送缓冲寄存器锁存消息的末地址(不带CRC校验位)Trbuf_add[7..O](保证在Ld_TbNCE有效时它为末地址
关于电源产品投标时标书文件的撰写方法1引言当今社会,在企业产品的买卖过程中,由以前的 计划经济 ,过渡到现在的 市场经济 (预计今后还将过渡到比较理想的某种经济),供需关系也将不断完善。在市场经济初期发展的情况下,物资供大于求的局面是发
利用直流误差计算器简化检流放大器的优化概述集成检流放大器经常用来测量电路中的电流,通过放大串联在电流通路的采样电阻压降实现重要的系统功能,例如过流保护、设备监测、可编程电流源、线性电源和开关电源、电池充电器和电量检测等。由于所要求的电流检
直流变换器并联运行时的环流和振荡控制 摘要:开关电源并联系统产生的环流和振荡会对电子元件产生高电压冲击,降低功率因数,并且使并联的各个模块之间产生抑止。因此,对开关电源并联系统的技术研究得到了广泛的关注。分析了直流变换器并联系统产生环流