如何学习无线通讯
1个回答
展开全部
各类无线通讯方式随之百花齐放,让人目不暇接。 成气候的通讯方式有:Bluetooth、ZigBee、WiFi等,此外还有一些只完成了物理层或链路层的通讯方式,这些通常是由芯片厂家自定义规范,因为是非标准的,一般只能自己产品互联。 那作为学习者该如何入手呢? 从我自己的学习感受以及和一些学生的交流中,我认为学习无线通讯应该从最初级的通讯入手,逐步过渡到那些包含完善、复杂协议的通讯模式。 所谓“初级的通讯”是指直接用UART (串口)相连的点对点通讯。 在这个过程中,首先找一个你所感兴趣的应用,因为通讯只是一种手段,不是目的,它需要依附于某些应用所产生的需求,脱离了需求,也就不需要通讯。就像人有交流的需求,才会催生出电话。人有贸易的需求,才催生了传真,此类事例数不胜数。 那些高级通讯模式所蕴含的那么多复杂的技术、方法,都是在一个个应用中不断产生的,以解决应用中所提出的需求。如果你对具体应用不了解,那谈何去理解那些高深莫测的技术、协议? 最简单的应用是将PC机和一个单片机应用系统相连。这个单片机系统可以是智能小车、测量仪器或者智能传感器等嵌入式应用设备。之所以一端选用PC,是因为PC机可以提供完善的人机界面和调试环境,还可以派生出许多需求。如果两端都用嵌入式设备,你会为无法直观的观察通讯效果而苦恼,或者要耗费精力去让其可见。 类似这种应用以及所产生的需求可以借鉴“圆梦小车StepByStep之二”一文。 这样的点对点通讯没有干扰问题,没有点名问题,更没有信号争抢问题,因为是全双工的,连握手需求都很弱。所以可以很容易实现,从而使你在初始阶段可以将精力集中于通讯所要完成的任务,而非通讯本身如何建立?如何可靠? 在这个阶段,你会随着通讯带来的好处,不断提升需求,不断完善通讯协议,从而感悟通讯所要考虑的因素。 当这个点对点通讯已经熟练掌握了,再将无线通讯引入。 关于无线引入的方式我认为:如果你还想掌握的透彻一些,建议开始用那种比较初级的无线模块(绝不要从器件做起,射频部分的硬件还是有些讲究的,没有必要耗费这个精力)。 所谓模块的初级和高级之差别在于:初级的只完成了无线的物理层,最多是简单的链路层。而高级的通常你只需在应用层编程即可,7层通讯模型中它帮你完成了6 层。 我所接触过的初级无线模块有RFM12B、24L01。 RFM12B是433MHz载频的无线模块,只完成了无线物理层,通讯的链路控制基本靠你控制,只是硬件不需要自己做了。它提供了完善的无线收发电路以及无线通讯必须的频道转换、带宽控制、增益控制、载波检测等功能,你可以逐一体验其中之奥妙。 24L01是2.4GHz载频的无线模块,它比RFM12B智能了许多。你只需将要发送的数据放在缓冲区中,并设置好工作模式,它会帮你发送,甚至还可以帮你实现失败重发。无线收发部分的硬件控制基本不用你管。 建议开始时按以下方式构建学习平台。 下图是开始的有线点对点学习方式:
有线连接的点对点模式 学习无线时转换成:
无线学习入手模式
即用一个单片机管理无线模块,并通过UART和原来的PC机及单片机应用系统相连,相当于将原来的导线剪断,两端各接入一个单片机管理的无线模块,而原来的导线连接变成了无线链路连接。 这样,你可以先将精力集中于如何将无线模块激活,使两个无线模块实现通讯,不用被原来的应用所纠缠。而第一个需求就是将原来的有线连接变成无线连接,从PC机或单片机应用系统角度看,和有线通讯无差别,俗称“透明方式”。 实现了这个功能之后,再根据无线带来的特点丰富原来的通讯功能,最典型的就是,无线已不局限于“点对点”通讯了,可以点对多、多对多等等,如何实现?如何使它们能按你的想法工作?就是对你的挑战!这个过程就是最好的学习过程。 为何要用一个单片机来管理无线模块?而不是直接使用应用系统的MCU来管理无线模块? 首先是从学习的角度考虑,这样编写程序会容易许多。 其次是考虑未来向高级无线模块过渡,因为多数高级模块都是通过UART方式控制的,你可以搜索一下。 如果你能认真地做完这两步,再去选择那些流行的通讯模块时,一定会得心应手。 现在社会愈来愈专业化,不要说我们一般人设计无法从芯片级开始构建无线通讯,即使是设计能力超强的本本生产厂也不这样做,多数本本中所用的WIFI模块都出自专业厂家,这不是水平问题,而是经济性和可靠性使然。 但是,如果你不从底层尝试一下通讯是如何实现的,那你很难把握通讯所要关注的指标,以及如何使通讯更加可靠,甚至会把遥控和通讯混为一谈。 以上是我个人之见,供大家参考。欢迎各抒己见,使那些正在学习的读者少走弯路。南京嵌入之梦工作室
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |