EDN首页   博客首页

日志档案

发表于 2008-9-8 12:57:18

1

标签: CRC  STC12C2052  SM36C  

无线通讯STC12C2052+SM36C

接口

1         接口设计

1.1通信协议接口:

1.1.1波特率:9600bps,数据位8,停止位1,无校验;

1.1.2数据帧:11字节,其中帧头1字节(3EH),地址码5字节(XX xx xx xx xxXX可以设计为地区码),控制码1字节,指令1字节,CRC校验2字节,结束码1字节(0DH);

         帧结构如下:

帧头

地址码

控制码

指令

CRC校验

结束码

3E

00-FF

00-FF

00-FF

00-FF

00-FF

55

00-FF

00-FF

00-FF

0D

 

帧头作为一个数据包的开始,不是以此字符开始的包无效,直接丢弃;

地址码占了5字节,共40位,理论上可以容纳240次方约1亿亿个被控终端;

控制码这里沿用之前的55,表示此数据包是控制包,调试中还使用66,表示回传;

指令码结合控制码,表示控制的具体内容,如闭合命令,开启命令,命令可以自定义,这里设计0X00表示开启,0XFF表示闭合;

 

这里CRC校验使用CRC-CCITT:(由欧洲CCITT 推荐)

G(X ) = X16 + X12 + X 5 +1  对应16进制多项式0x11021发送端对地址码、控制码、指令码共7字节进行CRC求余项式,并将其填入CRC校验字节,打包发送;在接收端对除帧头和结束码在内的其余字节进行校验,若数据包正确,CRC校验值应为0

考虑到MCU计算能力和资源的局限性,采用半字节校验法,使用查表法进行CRC校验,每个字节算两次(半字节算一次),可以在速度和内存空间取得均衡

多项式0x11021实现算得CRC余式项(半字节416种情况)如下:

 

unsigned int code crc_ta[16]={ /* CRC 余式表 */

0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,

0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef,

};

 

1.1.3接收数据帧正确性判断:帧头正确、结束码正确、5字节地址码全部正确并且CRC校验正确为正确数据包,其它为错误包,MCU主动丢弃;

1.1.4收发中心频率915MHz

rar程序

rar电路

 

系统分类: 工业控制   |   用户分类: 单片机相关   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(309)    回复(1)  

投一票您将和博主都有获奖机会!