历史上的今天
返回首页

历史上的今天

今天是:2025年01月28日(星期二)

2020年01月28日 | 通过单片机的无线通信软件实现编解码的解决方案介绍

2020-01-28 来源:elecfans

随着无线通信芯片技术的发展,越来越多的便携式或电池供电的无线传输设备进入人们日常生活中。例如,遥控车门开关(RKE)系统、汽车轮胎压力监视系统(TPMS)、无线内窥镜系统、蓝牙技术等。利用单片机和无线数传模块来完成无线数据通信在石油、电力、水文、冶金等行业的无线控制、数据采集、报警诸多领域中有着广泛的应用前景。通常采用的办法是用单片机的串行I/ O 口来完成数据通信,但是该方法有许多不足之处:第一、在利用单片机的串口进行发送和接收数据时,对传输的数据只能进行奇偶校验,然而在无线通信场合,被传输的数据极易受到电磁、静电等的干扰,奇偶校验一般不能检测出这类干扰所引起的突发性错误,所以该方法无法满足差错检测要求较高的场合;第二、由于单片机一般采用异步通信方式,接受器通常不能很快的接收到有效数据,因而该方法也不能满足要求多路进行快速切换的场合;第三、单片机的串口通信在传输速率和每帧的有效数据位数等方面都受到了严格的限制,缺乏灵活性。本文针对低速无线通信的场合,提出了一种通过单片机用软件实现编解码的方案,该方案可以有效克服上述单片机串口通信的不足之处, 在无线通信中得到了令人满意的效果。


1 编码原理及程序流程

1.1 编码原理

假设传输的数据精度为12位,以A8BH为例,其帧格式如图1 所示,高位在先,低位在后。

通过单片机的无线通信软件实现编解码的解决方案介绍

数据的编码采用了曼彻斯特编码格式,每帧数据由同步头、有效数据位和校验位三部分组成。其中数据位“1”由高到低的跳变表示,数据位“0”由低到高的跳变表示,而且数据位“1”和“0”高低电平周期各为0.5 T(设T为一个数据位宽度)。根据曼彻斯特码的特点,每个数据位都由高低电平组成,因而在连续传输的有效数据位中不会存在超过一个数据位宽度的高电平或低电平,因此在每个数据的前面设一个同步头,高低电平各为1.5 T 。这样在进行接收数据时,只要采样得到的电平满足1.5T ,则认为该电平是同步头,开始接收数据。因为寻找同步头的时间最长不会超过一个数据的长度,所以此编码方式非常适合于要求多路进行快速切换的场合。为了简化电路和节省功耗,本文采用了单极性曼彻斯特码。


实现曼彻斯特软件编码比较简单,根据曼码和二进制数据的对应关系,一位二进制数据在编码后将占据两位空间。例如1在编码后变为1、0;0在编码后变为0、1。其中,曼码数据低位在前,高位在后;被编码的数据字节的高4位编码后存放在一个字节中,低4位编码后存放在相邻的下一个字节中。


本文采用了循环冗余校验,即后四位为循环冗余校验码。循环冗余校验码简称为CRC( CyclicRedundancy Code) 。循环冗余校验的指导思想是发送端将被传输的数据流多项式除以生成多项式得到冗余位,接收端将被传输的数据(包括冗余位) 除以事先确定的生成多项式,如果余数为零,则认为没有错误发生,不为零则表示有错。由于使用这种方法获得冗余位具有很强的信息覆盖能力,它善于发现各种类型的错误,特别是一些突发性错误,所以它是一种效率极高的差错校验法 。


根据CRC 码的编码思想,对(16,12)码,由x16 + 1确定生成多项式为G(x) = x4 + 1 ,该多项式也可表示成(10001) 。对被传输的12位数据和生成多项式采用模2 运算便可以得到每个数据的四位循环冗余位。


1.2 编码子程序流程图及说明

曼彻斯特编码子程序包括计算冗余位和曼彻斯特编码发送两部分,首先调用CRC 求余子程序(流程图略) ,将得到的冗余校验位作为待发送16 位数据的低四位,然后对该16 位,并通过无线数传模块调制成模拟信号发射出去(单片机的TXD 端与无线数传模块发的DATA IN 端相连) 。同步头及数据位发送是通过对单片机的TXD 端( P3. 1) 置“1”和清“0”并进行软件延时来实现。TIME1 和TIME2 为软件延时,以满足同步头高低电平宽度的要求。值得注意的是,在编写编码子程序时,应确保P3. 1 置“1”和清“0”时间间隔满足数据位或同步头宽度的要求。


2 解码原理及程序流程

2.1 解码原理

曼彻斯特解码是编码的逆过程,也就是从曼码数据中提取时钟,并利用这个时钟还原二进制数据的过程。根据曼彻斯特解码过程中完成任务的不同,可以把曼彻斯特解码过程分为起始符识别及获取同步时钟、识别同步头、提取数据信息3个阶段。


(1) 同步头的判定

本系统通过信号高低电平所占的位宽来判断数据。当电平持续时间小于3/4的同步时钟周期时,电平时间为半个位宽,反之电平时间为1个位宽。因为在起始符识别时只用了2个字节0xFF中的一个,所以在开始识别同步头时识别出的第1个数据位肯定是‘1’,由此决定了在码元识别时必须遵循以下2点。


首先对单片机的RXD 端( P3. 0) 进行连续采样,从P3. 0 引脚变低时开始计时,若低电平的时间达到1. 3 T ,则认为该电平为同步头。因为用无线数传模块得到的信号波形一般为梯形,所以接收到的实际高低电平宽度可能变小,因此若接收到低电平宽度达到1. 3 T ,则可近似认为该电平为某数据的同步头。


(2) 数据位的判定

对每个数据位的判定采用“测三取二”的方法,既将每个数据位的前半部分成16 个状态,在第7 、8 、9 状态检测P3. 0 引脚上的电平,取其大于等于2的相同值作为测得值,如表1 所示(表中“ x ”表示“0”或“1”) 。此检测方法是在高电平或低电平的中间位置进行采样,既提高了采样准确度又有一定的滤波功能。

通过单片机的无线通信软件实现编解码的解决方案介绍

通过单片机的无线通信软件实现编解码的解决方案介绍

(3) 循环冗余校验

对解码得到的16 位数据进行循环冗余校验,若余数为零,则认为传输正确,否则进行出错处理。


2.2 解码子程序流程图及说明

解码子程序包括曼彻斯特解码和差错校验两部分,其流程图如图3 所示。首先进行同步头的判定,从RXD 端( P3. 0) 为低电平时开始计时(单片机的RXD 端与无线数传模块收的DATA OU T 端相连) ,并对P3. 0 引脚进行连续采样,采样时间间隔可自行设定,若P3. 0 引脚的低电平时间达到1. 3 T ,则认为该低电平为某数据的同步头,然后对同步头后面的数据位的前半位采用“测三取二”的方法进行数据位的判定,最后对采样得到的16 位数据进行循环冗余校验,若余数为0 ,则置错误标志,若不为0 ,则去掉冗余位, 得到12 位有效数据。TIME1~TIME3 是凑采样的时间间隔。

通过单片机的无线通信软件实现编解码的解决方案介绍

3 结论

本文以一个实际工程的一部分为例,阐述了用AVR单片机软件编程实现曼彻斯特编解码方法。经过了实际验证,数据传输可靠性很高,系统运行稳定,样机已经成型,即将投入生产。与其它的数据传输方法和曼彻斯特编解码方式相比,本方法十分灵活方便,它可以白适应射频发射机电池电压变化引起的数据传输波特率的变化。可处理的码速率也很高,极限码速率与所采用的单片机的速度和振荡器的频率以及采用的编程语言都有关系。本设计中采用C编程,振荡器频率为16MHz,数据传输率可达10kbps,用汇编语言编程数据传输率会更高。

推荐阅读

史海拾趣

Deltron公司的发展小趣事

Deltron公司成立于XXXX年,初期以生产基础电子元器件为主。创始人XXX凭借其对电子技术的深刻理解和对市场趋势的敏锐洞察,带领团队进行了一系列技术创新。通过引进先进的生产设备和研发技术,Deltron成功开发出了一系列具有竞争力的产品,逐渐在电子行业中崭露头角。

HP(Keysight)公司的发展小趣事

在竞争激烈的电子市场中,品质是Deltron公司的生命线。公司始终坚持以客户为中心,注重产品质量和服务的提升。通过严格的质量控制体系和完善的售后服务,Deltron赢得了客户的信任和好评。同时,公司还积极参与行业标准的制定和修订工作,推动行业向更高水平发展。

Elektron公司的发展小趣事

随着业务的不断拓展和市场的不断扩大,Elektron公司逐渐将目光投向了全球市场。公司在全球范围内设立了多个代表处和分支机构,与当地的合作伙伴建立了紧密的合作关系。通过全球化战略的实施,Elektron成功进入了焊接设备、等离子切割设备和电池服务设备的高端市场,并成为了世界市场的领导者之一。

Ericsson公司的发展小趣事

Ericsson公司在早期就非常注重市场拓展和全球布局。通过与各国电信运营商建立合作关系,Ericsson成功将其产品和服务推广到了全球各地。特别是在中国市场,Ericsson早在19世纪90年代就与中国签订了供货合同,成为中国通信网络建设的重要参与者。如今,Ericsson已经在中国扎根130余年,成为了唯一一家从1G到5G全程参与中国通信网络建设的企业。

Agilent Technologies公司的发展小趣事

Ericsson非常重视人才培养和团队建设。公司设立了专门的培训机构为员工提供全面的培训和发展机会帮助他们不断更新知识和技能以适应快速变化的市场环境。此外Ericsson还注重营造积极向上的企业文化鼓励员工创新创造和发挥潜力为公司的发展贡献自己的力量。这种注重人才培养和团队建设的策略也为Ericsson的长期发展提供了有力保障。

Baneasa SA公司的发展小趣事

随着产品的逐渐成熟,Baneasa SA开始积极寻求市场拓展的机会。公司通过与各大电子设备制造商建立合作伙伴关系,成功将其产品应用于手机、电脑、家电等多个领域。这些合作伙伴关系的建立不仅为Baneasa SA带来了稳定的订单量,还进一步提升了公司的品牌知名度和市场份额。

问答坊 | AI 解惑

利用单片机的PWM产生方波信号!

我选用的单片机是增强型的C51系列80C552单片机,想利用它自带的PWM产生方波信号脉冲,应该涉及到哪些电路,最好能有连接图!方波信号的频率为20~90HZ左右.谢谢!…

查看全部问答>

单片机应用

单片机基应用和高级应用,包含原理图和源程序(proteus 仿真)…

查看全部问答>

VxWorks下编译ACE+TAO

本人正在VxWorks下编译ACE+TAO,出现编译错误,搜索以前的帖子编译需要make3_80.gvk_patches和make3_80.tor2_2.new_dependency_rules两个补丁的。 谁给发一份:yjbdgood@126.com 我没装补丁编译出现以下错误: $  make static_libs=1 re ...…

查看全部问答>

关于ADS Scatter 文件

load1 0x00000000 {   run1 0x00000000   {       ********   } } load2 0x00000800 {   run2 0x30000000   {       ********  &nbs ...…

查看全部问答>

关于开发板rootfs中NFS的问题

我用在开发板上用mount -t nfs -o nolock 196.168.0.110:/home/name/rootfs 按了回车一定反应都没有就跑到下一行,然后空白也没有出错信息,只有按ctrl+c终止 。PC上配置应该没有问题!自己可以mount(nfs)自己,开发板上也能ping通。 在内核设置 ...…

查看全部问答>

大家好哦,我想学习单片机!想报班效果怎么样啊??

各位高手有什么好书,或好的资料啊。我想报培训班大家给点建议啊!! 大家看这家培训机构怎么样啊》名字叫:硬件工程师高级职业教育项目组(http://test.pche.com.cn/pche/seign/default.asp)。…

查看全部问答>

单片机--点阵

  对于点阵来说,大家都不是很关注,在这里我也说说我对点阵的看法!  点阵分为行和列,在上面的8根引脚是行,而下面8根是列,所以只要在行列上有电势差就会使得点阵上所对应的点亮。但是还要看其中的二极管是怎么放的。在ISIS中的点阵是 ...…

查看全部问答>

ST的ARM7好像不支持SDRAM吧?

                                  …

查看全部问答>

USB相关质询

问题:我现在需要把9B96开发板通过usb接入电脑后,在电脑里面表现为一个大容量存储器(虽然只有几百K容量),我需要准备哪些相关的知识,从哪些方面着手?现在是一头雾水。我知道,开发包里面有一个usb_bulk的demo程序。 [ 本帖最后由 weirgu 于 2011 ...…

查看全部问答>