- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机无线通信模块开发与应用(五)好久没发贴了,这场病病得不轻啊,不过病早好了,这次延误是因为在北京接了个项目,而且正好是关于这套系统的应用,所以干脆就拖了一段时间.
说正题了.前面那么多贴子只是一些外围的制作和设计,但没有外围的建设怎么能做出好东西呢?呵呵,这次给大家发点正经东西,相信这就是大伙儿最关心的部分---通信协议,其实也不能称其为协议,只能叫做射频编码,为了便于理解起见才叫它通信协议的,大家心里清楚这点就行了,免得说我混淆视听.通信协议分成硬件层和软件层,硬件层,即数据的电信号表示方法,而软件层,指的是数据包的处理.由于软件层定义很广,且跟应用场合相关,不同的应用可能使用完全不同的协议,所以这里就只说说如何传输数据包吧.相信大家都有这能力进行下一步的扩展.我也会在今后的贴子里给出一些应用的实例,以供参考.
我看到论坛上有些朋友之前也做过无线模块的应用,却不成功,例如明浩提过他做的232无线模块,干扰很大,通信不能进行.为什么会这样呢?要解释这问题,先要说说无线模块的结构和特性:
发射:无线模块使用一个三级管进行射频发射,从说明书上可看到,当连续发送时间高于5毫秒时,发射效率会降低.
接收:超再生电路.超再生电路有一个特性,即在没有信号时会收到大量的白噪声,接收模块已经对该噪声进行了处理,白噪声被大幅度削弱了,但是,这并不是说噪声就完全消除了,事实上,当信号源停止发射后几毫秒,噪声会再次出现,也就是所谓的零电平干扰,根据说明书的提示,这段时间大约为5毫秒.
别外,说明书上也指出,信号发射的宽度不应小于0.08毫秒,占空比也不能太大,否则很容易受到干扰.
从上面的资料,我们可以很轻易地分析出干扰来源.
根据资料,我们可以得出一个大概的设计原则:
1.占空比有限制,我们人为限制到1:4之内.
2.发射时间小于3毫秒.
3.两次发射的间隔小于3毫秒.
4.正式发射信号前要使用前导信号,以消除零电平干扰.
根据上面几点,我参考红外信号算法,写出了发送一字节的算法:
1.高低信号电平交替使用,与实际被发送数据的电平值无关,而发送宽度及两次发送的间隔宽度,与被发送数据的电平值相关,对应关系在后面作出描述.
2.以宽度为0.6毫秒的宽度表示位低电平.
3.以宽度为1.2毫秒的宽度表示位高电平.
4.以宽度为1.8毫秒的宽度表示数据正文的发送与结束.
以下给出流程:
1.从零电平开始,交替发送/停止宽度为0.6毫秒的信号,数量为单数个,最少要有2个,发送完后信号电平自然回到高电平,这里,我称该组信号为前导信号,用来清除零电平干扰.前导信号的第一个信号很可能会丢失,但其设计目的本来就是用来丢失的,所以无须关心接收方实际收到的数量,该信号在接收方接收时只要收到一个即可.
2.发送一个宽脉冲,作为数据引导,指示下一个信号将是数据正文.由于有前导信号保护,该信号不会丢失.
3.发送数据正文的各个位,低位在前,从bit0开始,位的值为0时发送0.6毫秒信号,值为1时发送1.2毫秒脉冲.这里要再次说明,所谓发送信号,并不等于发送射频信号,关闭射频同样是发送信号.
4.发送一个宽脉冲,作为结束信号,表示数据发送完毕,脉冲结束后射频信号正好自然转为停止发送,即零电平.
上面的文字说明有点复杂,下面给出图示,图示中的字节数据值为十六进制数A6,图中高电平时为发送射频信号:
???????????????????????? 1 0??1 0 0 1?? 1 0
_________|-|_|-|_|-|___|--|_|--|_|-|__|--|_|---|_________
?? A???????? B?????? C?? D?????????????????? E????F
A: 无关信号,可能为任何电平值.此时数据还未开始发送,不关心其电平为何值.
B: 前导信号,交替发送/静默0.6毫秒.
C: 引导信号,静默1.8毫秒.
D: 一字节数据正文,用发送/静默0.6毫秒表示0,发送/静默0.6毫秒1.2毫秒表示1.
E: 结束信号,发送射频1.8毫秒.
F: 无关信号,可能为任何电平值.此时数据已经发送完毕,不关心其电平为何值.
看图是不是清楚多了?如果还不懂,那我也没办法了.
接下来是一个写好的例子,发送和接收例程都有,一次发送或接收24个字节定长数据包.程序使用了并行工作机制,发送和接收可同时进行,但由于发送与接收共用同一个内存块作缓冲区,所以应用时不能时调用,有兴趣的可以自已改改程序,使用独立的缓冲区,这样就可以同时发送和接收了,但我个人认为意义不大,因为收到的数据就是自已发的数据,没什么实际用处.晶振采用22.1184M,串口通信速率115200bps如果使用11.059M,232串口通信速率要改成57600.
MCU端源代码下载:24/s
文档评论(0)