基于51单片机的无线信号编解码技术研究
2017-04-29于浩
于浩
(辽东学院)
【摘要】针对数据帧格式固定、校验方式单一以及传输速率不便于更改等问题,提出了一种通过 STC89C516RD+单片机实现的软件编解码方法。该方法通过定时器的延时来实现对数字信号的编码;通过外部中断与定时器相结合的方式进行解码,即利用接收到的脉冲信号的上升沿启动定时器工作,下降沿停止定时器工作并触发外部中断,然后读取计数寄存器的值并识别数据。实验证明,该方法的数据帧格式及校验方式灵活多变,而且可以降低无线传输系统的成本,适用于无线控制、数据采集、故障报警等多种无线数据通信场合。
【关键词】编码 解码 定时器 外部中断
一、现有的编解码技术
(一)硬件编解码技术
目前有多种用于编码和解码的专用芯片,PT2262/PT2272是比较常用的一种。在通常的使用中,一般采用8位地址码和4位数据码,这时编码芯片PT2262和解码芯片PT2272的第1~8脚为地址设定脚。有三种状态可供选择:悬空、接正电源和接地,38为6561,所以地址编码不重复度为6 561组,只有发射端PT2262和接收端PT2272的地址编码完全相同时,才能配对使用。当编码启动端TE接低电平时,PT2262就将从数据输入端D0~D3输入的数据经过编码后从DOUT引脚串行输出,数据帧的高8位为地址,低4位为数据,发送时以先高位、后低位的顺序逐次发送。每一帧发送4次,每帧数据中间由同步码隔开。PT2272只有在连续2次检测到相同的地址码和数据码时才会把数据码中的“1”驱动相应的数据输出端为高电平和驱动VT引脚同步为高电平,将VT引脚反向后接入单片机的外部中断输入引脚,通过触发中断来通知单片机接收到数据了。PT2262/PT2272芯片功耗低、外部元器件少、工作电压范围宽。但这两个芯片在应用中必须对地址统一编码,配对使用,而且需要通过改变硬件电路才能重新设置芯片地址;该编码芯片的帧格式是固定的,不能随意改动,而且编码的脉冲宽度需要调节外接振荡电阻大小才能改变。这些都给用户的使用带来了极大的不便。
(二)软件编解码技术
在利用单片机和无线传输模块进行无线数据传输的过程中,使用软件编解码时通常会采用定时采样的方式。总体设计思想如下:发送端通过定时器延时产生不同宽度的脉冲或脉冲组合来实现对数据“0”和“1”的编码。接收端对接收到的脉冲信号进行定时采样,然后通过计算识别出对应的数据信号。通过定时采样的方式进行解码时,对采样频率具有比较严格的要求。根据奈奎斯特理论,只有采样频率高于发射信号最高频率的2倍时,才能把数字信号准确还原。但是中断的响应与返回以及数据的判断都会造成时间延迟,因此,发射信号的频率不能太高,否则容易导致数据丢失。同时定时采样需要多次调用中断服务程序,增加了额外的时间开销。这些都会降低无线数据传输的速率。
二、软件解码原理及程序流程
解码是用特定方法把数码还原成它所代表的内容,或将电脉冲信号转换成它所代表的信息、数据等过程。本文采用定时器与外部中断相结合的方法对接收到的脉冲信号进行解码,并利用接收到的校验和进行校验。 将单片机的模式控制寄存器TMOD的门控位GATE置1,当TR1=1时,外部中断INT1直接控制定时器1的启动、停止,即INT1由0变为1电平时,启动计数;当INT1由1变为0电平时,停止计数。这种情况常用来测量在INT1引脚上出现的正脉冲的宽度。无线接收电路,无线接收模块将接收到的信号进行解调、放大和整形,恢复出基带信号,由引脚2输出到单片机的INT1引脚上。设置外部中断1为下降沿触发方式,定时器/计数器1为16位定时器工作方式。当INT1引脚上出现由高到低的负跳变时触发中断,定时器1停止计数,读取计数寄存器TL1和TH1中的值来判断脉冲宽度,从而解码接收到的数据信号。
由于在发送过程中重装计数初值、接收数据以及中断的响应都需要时间,所以接收到的实际脉冲宽度大于发送的脉冲宽度。因此,如果接收到的高电平脉冲宽度大于300T则表示接收到同步位;若大于200T则表示接收到数据位“0”;否则表示接收到数据位“1”。软件解码流程图,在接收到同步位后,开始接收数据,直到再次接收到同步位的时候暂停接收。利用接收到的数据以及校验和进行校验,如果接收到的数据正确,则停止接收;如果不正确,则将之前接收到的数据全部丢弃,再重新开始接收。
实验证明,通过该方法进行软件编码和解码时,可以根据不同的需要使用软件编程来设置地址,接收端与发送端可以进行多对多的无线数据通信,而不需要配对使用;改变定时器的计数寄存器初值就可以改变编码的脉冲宽度,从而改变传输速率;解码准确快捷,占用CPU资源相对较少,便于操作;校验方式可选,数据帧格式灵活多变。 本实验中采用的是晶振频率为12 MHz的石英晶体,以及具有CISC结构的8位单片机,它的一个机器周期要占用12个振荡周期,执行一条指令最少要一个机器周期,处理速度较慢,在一定程度上影响了无线传输速率。可以通过提高晶振频率或者选择速度较快的单片机作为控制芯片的方式来提高无线数据传输速率。如选择具有流水线结构的C8051F系列单片机,或者是具有预取指令功能的AVR系列单片机,它们可以在一个时钟周期内完成一条指令。也可以采用具有DW8051_core核的单片机,它采用4个时钟周期为1个指令周期的模式,在时钟周期相同的情况下,处理能力是标准8051的3倍。采用这些高速度的单片机可以减少程序执行所產生的延迟时间,从而缩短数据位编码脉冲宽度,提高无线数据传输速率。