无线遥控的曼彻斯特编码的接收<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
市场上多用2262或1527做发射,它们的发射格式如下:
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
图1
通常它们都是传送的24位数据,包括按键代码。在2262中只有12个输入端,它们是8个地址码加4个按键码,但由于地址码是3态输入的,每一位要用2个脉冲来表示,所以实际上它与1527的24位数据是一样的接收。
由于在普通接收模块的传输速率不能做得很高,所以数据编码中脉冲宽度大都在300-500us左右,即上图中的a的宽度。它们要发射1串完整的数据就要<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />128a(38.4ms-64ms)的时间。这还只是发送24位数据,如果用这种方式来发送64位乃至更多位数据时就得需要更多的时间。
所以在MICROCHIP(美国微芯)的滚动码系列芯片中较为普遍的采用了另外的一种格式:
图2
这种方式较图1的发射效率又要高一点。每位数据都要紧骤1a。它发射1串完整的滚动码数据需要225a。a的宽度是100-400us,所以整串数据的时间是27-108ms。事实上发射时间越短对接收模块的指标要求越高。这也是采用滚动码发射时接收一般都用超外差接收,而不能用廉价的超再生接收的原因,因为这样的话容易丢码!
在低传输速率的无线数据传送中较少有用曼彻斯特编码方式的,个中原因笔者不敢妄测。由于笔者在新的加解密算法中要传送72位数据,在接收上仍然使用了较廉价的超再生接收电路,为了尽可能的减少丢码等接收不全的现像,发送方面采用了较宽的脉冲宽度(300us),编码方式采用的曼彻斯特编码方式。在网上没有找到相关的接收资料,于是对曼彻斯特编码的接收作了仔细分析,遂采用以下方法:
1 同步头的改变 由于数据的前半部份有可能是数字低电平,于是在同步头的后面加了一个脉冲。
图3
2 启用MCU的端口电平变化中断 在每一个电平发生变化后产生中断以实时对接收数据进行处理。
具体程序如下:
以上程序经过测试,是完全可以对曼彻斯特编码作完整接收的。
有必要对以上程序作个说明:
1 以上程序的仿真是用的MPLAB IDE7.40
2 中断初值为0,即最长时间中断。
3 时钟为4M
4 仿真波形定义的脉冲宽度为300us。
用户208051 2012-11-21 10:58
用户703457 2008-1-31 09:50
好东西!!!!!!!!!!!!!!!!!!!!!