如何用比较简单的方法实现曼彻斯特编解码?
用定时器+IO捕捉效率低,处理复杂,想利用UART,两倍波特率,调整数据内容来实现,传输的效率低,但是处理起来简单了,不知可行否?各位XD给点意见,多谢!用于无线方式
RE:
可以用带捕获功能的单片机,现在很多MCU都有这个功能,如单片机任务不多,可以直接用普通的I/O口re
用定时器+IO捕捉效率低,处理复杂...????<br /><br />不要这么武断好不好?用UART不可能的
随便用什么方法都会“处理复杂”的,<br />但“用定时器+IO捕捉”不见得就“效率低”<br /><br /><br />建议你去我得Blog看看SAA3010的解码程序有编码程序吗?
编码很容易的啊,这也要程序?
不能用UART,除非编码是通过串口发送的
否则没有符合串口规约的起停位,串口如何工作?一点想法
使用无线方式传输,接收部分总是有杂波,所以才想用编码的方式来过滤,收发都是自己的设备,协议可自定,所以自由度大一些.数据肯定要进行必要的修改使之既符合曼码的编码格式,又符合UART的接收格式,当然这样做传输效率会有所降低,但便于软件实现上,也减少了处理硬件上的开销.<br /><br />当然这只是应用中的一种特例,有相当的局限性,不具备广泛性.简单实验成功
曼码的10(1),01(0)解起来还真有点麻烦,关键是每位数据发送前没有同步头了呀<br />我也是按楼主的思路做的,利用波特率的概念来解码,在我的FPPA TM上解起来相当稳定的,可是同样的方法用在51上就没有那么稳定了,因为在FPPA TM上可以专门安排一路PC来接收IR信号,不会被任何事件打断.我的IR信号是1.68ms每位,已经精确到了80us,用中断太浪费资源,用延时又可能被打断.希望大家可以提供更好的方法来解决曼码的无线传输呀!我的解码方法,不知适合你?
先捡出同步头,再把把数据(010101.....)检测记录在RAM中(类似数字存储示波器),等接收一侦后再解码。在检测电平时检测三次,三取其二。这样就OK!
我认为这个解码和普通解码一样.<br />最好采用延时等待,用定时器进行时间校准.读中点电平,然后开始等待H或L,一旦等到电平跳变即开始定时(及在timer中加一句减法就可).消除误差积累.<br />多次验证,OK!没办法也.俺笨也.
10(1)高低电平俺不会发送,01(0)低高电平俺也不知道是什么东西.嘿. 怎么获得同步头呢,哪位大侠给个方法 西小屯 发表于 2014-4-8 14:06 static/image/common/back.gif怎么获得同步头呢,哪位大侠给个方法
协议定的.一般可以用连续的几个1啊,或者特征字符都行的 huangxz 发表于 2014-4-8 17:43 static/image/common/back.gif
协议定的.一般可以用连续的几个1啊,或者特征字符都行的
谢谢,现在做读卡器读5577卡,卡片发出曼彻斯特码(协议已定死),自己不能定义,看来按照手册上协议来了,再次感谢 西小屯 发表于 2014-4-9 11:40 static/image/common/back.gif
谢谢,现在做读卡器读5577卡,卡片发出曼彻斯特码(协议已定死),自己不能定义,看来按照手册上协议来了 ...
那你的协议上面肯定有同步方法啊,这还更省心了啊 放段你的代码出来,瞧一瞧,嘻嘻... huangxz 发表于 2014-4-9 12:02 static/image/common/back.gif
那你的协议上面肯定有同步方法啊,这还更省心了啊
是,数据前有4个位时间固定的 分别为:1,只调制无升降沿,1,只调制无升降沿 liyong110 发表于 2007-1-10 00:13
我认为这个解码和普通解码一样.最好采用延时等待,用定时器进行时间校准.读中点电平,然后开始等待H或L,一旦 ...
等待电平跳变效率低
页:
[1]
2