基于MSP430和nRF905的多点无线通讯模块

2019-08-02 16:30发布

本文介绍的无线通讯模块,采用通用的低功耗单片机MSP430作为主芯片,nRF905作为无线收发模块,利用SPI口实现双向通讯,SPI支持高速数据传输,从而满足了射频带宽的要求。nRF905提供了强大的跳频机制以及大量的频道支持,可以用在许多特殊的场合,而且即使利用无增益的PCB天线其传输距离也可达200m,如果需要更远距离的传输,也可以改成带增益的天线,传输距离即可扩大到1千米以上,可满足不同客户的需求。1 系统硬件实现
    无线通讯模块的实现框图如图1所示,除了MSP430和nRF905外,系统还留有MAX232接口可以实现与PC的机通讯,MAX485接口满足一些通用仪器仪表的要求,并提供了按键和液晶等人机交互界面。

2 驱动实现
2.1 MSP430的SPI驱动
    MSP430用标准SPI口和nRF905进行通讯,标准接口包括两根数据线:MOSI(主发从收)和MISO(从发主收),还有时钟线CLK,主机用CLK与从机时钟同步。
    如图2所示,SPI可以理解成双工方式,因为在发送数据的同时也可以接受数据。SPI分成主模式和从模式,从模式完全被动,数据的发送和接受都由主机掌握。实际上参与工作的都有四个寄存器,主机将数据写入发送缓存UTXBUF,数据并行存入发送移位寄存器。数据一旦写入UTXBUF,立即从MOSI线移位到从机的接受移位缓存,而从机移位缓存中的数据又将其发送移位寄存器中数据,通过MISO移位到主机的接受移位寄存器,再并行读入接受缓存中。所以利用SPI同时进行读写操作。

图2 430 SPI示意图
2.2 nRF905的驱动
    nRF905共有32个引脚,其中有10个引脚尤其需要我们注意:和主MCU通讯的SPI接口的四个引脚,数据线MOSI、MISO,时钟线SCK、使能线,其中CSN可以接到一个IO口控制芯片工作,而其它三个脚则接到主MCU的SPI接口上;主MCU的控制线有三个引脚,控制低功耗的PWRUP,控制正常工作的TX_EN,选择发送还是接受方式的TRX_CE,这几个引脚都接到主MCU的通用IO口;nRF905的反馈线有三根,检测到频道正被使用的CD(carrier detected),通知接受地址正确的AM(addreSS matched),告诉MCU数据接受正确的DR(data received),这几个引脚需要接到主MCU的中断引脚上,当接收数据正确时以中断方式通知主MCU。
    nRF905与MSP430接口如图3所示,其中MOSI、MISO、SCK分别与主机SPI口对应,CSN、TRX_CE、PWR_UP、TX_EN接通用IO口,而CD、AM、DR接中断口,430的P2口都是复用的中断口,这样收到数据可以用中断及时通知430。

图3 硬件接口

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
51xlf
2019-08-02 22:38
3.2 控制频道
    控制频道用于各节点交换路由信息、握手信息等。由于握手信息和路由信息相对大块的数据信息而言很小,所以各节点占用控制频道的时间相对较少,这在很大程度上避免了控制频道上的数据冲突。但是由于控制频道为所有节点所共用,必须采用冲突避免协议,本文采用了IEE802.11b的CSMA/CA机制,即每次发送数据都要等到频道空闲,再用“二进制指数退避算法 随机延时一段时间,当延时时间到再发送数据,这样就有效地避免了同频道下的数据冲突。同时考虑到隐藏节点、暴露节点等问题,我们采用了RTS/CTS/BROAD机制,如果节点A需要
发送数据到节点B,则先发送RTS并携带自己的数据频道列表信息,节点B收到RTS后,对比自己的频道列表选择一个共用的空闲频道返回RTS,并跳人该频道等待数据的到来。节点A收到CTS后再携带使用频道信息发送BROAD,然后跳入数据频道开始与节点B进行数据通讯。而其他节点收到CTS、BROAD后及时登记频道列表信息,方便下次数据传输时直接查询,该信息会随着系统晶振不断更新,这样各节点所维护的频道都是当前频道使用的状况。
3.3 数据频道
    与共用的控制频道不同,当双方节点都处于数据频道时相当于建立了专用通道,此时不用采取CSMA/CA机制,我们采用确认机制、重发机制和跳频机制来确保数据准确无误的传输。通讯流程基本采用DATA+ACK形式,即发送完DATA等待ACK,接受到DATA则发送ACK确认。如果
ACK不正确或没收到ACK则重发,如果该频道不能使用则进行跳频。跳频需要双方协调进行,具有一定的复杂性,这里具体解释一下跳频机制。
    图9为发送端跳频示意图,当发送端受干扰,即发送端可以发送数据,但接受不到数据,当误码率高达上限时,发送端发送CHG并携带将跳至的频道值hop,然后跳人备用数据频道hop中,再发送CHECK,等待握手信息。而接受端收到CHG后,从中提取出hop信息,再跳至该hop,当接受到CHECK时,再发送验证信息CHECK。自此,收发双方握手完毕,接着在新的频道中继续通讯。

    图10为接受端跳频示意图,当接受端受干扰或者收发双方都收到干扰,这时接受端收不到来自发送方的控制信息CHG,只能完全依靠误码率信息,此时同步尤为重要。由于双方误码率同时增加,当依次达到上限时,可以依次跳人备用频道继续通讯。由于存在重发和延时机制,双方并不需要同时跳入备用频道,系统具有一定的容错性。每个数据频道组有两个备用频道,如果三个频道都不能使用,则此次通讯就失败了。但是通常一定时间内干扰只在某个频段存在,只要将三个数据频道拉开一段频距,即可有效地抵制干扰。
4 总结
    文中无线多点收发模块在MSP430和nRF905的基础上,实现了物理层驱动和基于Ad Hoc网络的MAC层协议,但没有提供网络层路由协议。物理层点对点通讯确保了数据传输的可靠性。MAC协议确保同时传输数据时避免冲突。在测试中,我们网络层采用鱼眼算法,用15个节点动态组网并互传信息,在该体制下信息可以同时发送相互之间没有干扰。该模块可以很好的运用在一些抄表系统、遥控系统、以及机器人控制中。

一周热门 更多>