《基于单片机MSP430和NRF905的无线通信模块.pdf》由会员分享,可在线阅读,更多相关《基于单片机MSP430和NRF905的无线通信模块.pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、机 电工程2 0 0 6年 第 2 3卷 第 2期 M e c h a n i c a l E l e c t ri c a l E n g i n e e r i n g Ma g a z i n e V o 12 3 No 2 2 0 0 6 3 9 基于单片机 M S P 4 3 0和 n R F 9 0 5的无线通信模块 摘要:介 绍 了一种 基 于 n RF 9 0 5驱 动及 接 口实现。关键词:单片机;通信 中图分类号:T N 9 2 3 高章飞,朱善安(浙 江大学 电气工程学 院,浙江 杭州 3 1 0 0 2 7)M S 3 0和 n R F 9 0 5的 无 线 通 信模
2、块,以 及 相 关 的 M S P 4 3 0 S P I 驱 动、文 献标识码:A 文章编号:1 0 0 1 4 5 5 1(2 0 0 6)0 2 0 0 3 9 0 5 A W i r e l e s s Tr a ns c e i v e r Ba s e d o n M SP4 3 0 an d n RF9 0 5 GAO Zh a n g f e i ZHU S ha n a n (C o l l e g e o f E l e c t r i c a l E n g i n e e r i n g,g h e j i a n g U n i v e r s i t y,H a n
3、 g z h o u 3 1 0 0 2 7 C h i n a)Abs t r a c t:Th i s a r t i c l e p r e s e nt s a wi r e l e s s t r a n s c e i v e r b a s e d o n MS P 43 0 a n d nRF g 05f i r s t t he r e a l i z a t i 0 n 0 f t h e h a r d wa r e i s p ut f o r wa r d,t h e n t h e d r i v e r f o r S PI o f MSP 43 0 i s i
4、n t r o du c e d,f i n a l l y t he d r i v e r f o r n RF9 0 5 i s gi v e n Ke y wor d s:s i g nl e c h i p mi c r o c o mpu t e r;c o mmun i c a t i o n 系统采用通用的低功耗单片机 M S P 4 3 0作为主 芯片,n R F 9 0 5作为发射模块,利用 S P I 12实现双 向 通信,S P 1 支持高速数据传输,从而满足 了射频带宽 的要求。n R F 9 0 5提供 了强大的跳 频机制 以及大量 的频 道支持,可以用在许多特殊的
5、场合,而且即使利用无 增益的 P C B天线,其传输距离也可达 2 0 0 m。如果需 要传输更远距离,也可以改成带增益 的天线,传输距 4 8 5 总线 舞 圈一 l 电 话、网 络 等 传 输 模 式l ”l一 离即可扩大到 1 k m以上,可满足不 同客户的需求。1 系统硬件实现 无线通信模块 的实现框 图如 图 1所示。除 了 M S P 4 3 0和 n R F 9 0 5外,系统还 留有 MA X 2 3 2接12可 以实现与 P c机的通信,MA X 4 8 5接 口满足一些通用 仪器仪表的要求,并提供 了按键和液晶等人机交互 界 面。C C 图 1 系统 的硬件结构 n R F
6、 9 0 5与 MS P 4 3 0接 口如图 2所示,其 中 MO S I、MI S O、S C K分 别与主机 S P I口对应,C S N、T R X CE、PW RUP、TXE N接通用 I O口,而 C D、A M、D R 接中断 口,M S P 4 3 0的 P 2口都是复用的中断 口,这 样收到数据可以以中断方式及时通知 MS P 4 3 0。2 驱动实现 2 3 2 总线 区三卜回 2 1 MS P 4 3 0的 S P I 驱动 M S P 4 3 0用标准 S P I口和 n R F 9 0 5进行通信,标 准接 12包括两根数据线:MO S I(主发从收)和 MI S O
7、 收稿 日期:2 0 0 5一 O 41 5 修订 日期 2 0 0 5一O 6 2 7 作者简介:高章 E(1 9 8 2一),男,安徽芜湖人,硕士研究生,研究方向:嵌入式 系统。维普资讯 http:/ Me c h a n i c a l E l e c t r i c a l E n g i n e e r i n g M a g a z i n e Vo 1 2 3 N o 2 2 0 0 6 机 电工程2 0 0 6年 第 2 3卷 第 2期 M0S 1 0 MI SOO UCLK0 P 3 0 P 2 3 P 2 4 P2 2 MO S I(1 0)C D(6)MI S o(1 1
8、)AM(7)S C K(1 2)D R(8)C S N(1 3)TRXC E O)VCC P WR UP(2)GND T X E N(3 2)图 2 接口连接 P 2 5 P 2 6 P2 7 VCC OND(从发主收),还有时钟线 C L K,主机用 C L K与从机 时钟 同步。S P I 可以理解成双工方式,因 为在 发送数据 的 同时也可 以接受数据。S P 1 分成主模 式和从 模式,从模式完全被动,数据 的发送完全 由主机掌握。实 际上参与工作的都有 4个寄存器,主机将数据写入 发送缓存 U T X B U F,数据并行存人发送移位寄存器,数据一旦写入 U T X B U F,立即
9、从 MO S I 线移位 到从 机的接受移位缓存,而从 机移位缓存中 的数据 又将 其发送移位寄存器中的数据通过 MI S O移位到主机 的接受移位寄存器,再并行读入接受缓存中。所 以,利用 S P I 既可以读数据,也可以写数据。读写完毕后 可以选用 中断通知 MS P 4 3 0,也 可以采用轮询方 式。为了降低系统复杂性,同时考虑到 n R F 9 0 5最多一次 只操作 3 2 B,所需时间不长,所以采用轮询方式。M a s t e r Sl a v e 图 3 4 3 0 S P I 示意 图 部分代码如下:实现 S P I 读写功能,写入 d a t a的同时也会 n R F 9
10、0 5 指定地址中的值 C h a r S p i R e a d Wr i t e(c h a r d a t a)禁止 S P I 中断 I E1=一UTXI EO:I E1&=一URXI E0:TRXBUF0=da t a:等待数据发送完和接受完 Wh i l e(I F G 1&U T X I F G 0)=0)I I(I F G1&URXI F G 0);=0);返回读人的值,不需要可以舍弃 Re t u r n RXBUF 0;2 2 n RF 9 0 5的驱 动 n R F 9 0 5共有 3 2个引脚,其中有 1 0个 引脚尤其 需要 注意,如与 主 MC U通信 的 S P
11、I接 口的 4个 引 脚:数据线 MO S I、MI S O;时钟线 S C K;使能线 C S N。其中 C S N可以接到一个 I O口,来模拟时序,而其它 3个脚则接 到主 MC U的 S P I接 口;主 M C U的控制 线有 3个引脚:(1)控制低功耗 的 P WR U P;(2)控 制正常工作 的 T X E N;(3)选择发送还是接受方式 的 T R X C E。这几个引脚都接到主 MC U的通用 1 0 12 I;n R F 9 0 5的反馈线有 3根,检 测到频道正被使用 的 C D(c a r r i e r d e t e c t e d),通 知接受 地址正确 的 A
12、 M (a d d r e s s ma t c h e d),告诉 M C U数据接受正确 的 D R (d a t a r e c e i v e d),这几个引脚需要接到主 MC U的中 断引脚上,当接收数 据正 确 时 以中断 方式通 知 主 MCU。2 2 1 寄存器操作 2 2 1 1 寄存器介绍 n R F 9 0 5提供了数据线和控制线,却没有提供地 址线。为能对其 内部地址进行操作,n R F 9 0 5提供了 特殊 的命令字来直接选定 内部 的寄存器,这样就屏 蔽了复杂 的地址运算,使 n R F 9 0 5的使用更加简单。主要的寄存器有 4个,分别如下:(1)配置寄存 器
13、。包括频 道、频段、功率、C R C 校验等设置,其中还包括了 自己节点的地址配置,即 RXA D D R E S S,相当于给节点 配置了一 个 I D,在 网 络中可以通过对接受数据的 目标 I D和 自己 I D比较 来判断该数据是 否属 于 自己。如果是,则 A M返 回 高电平通知 MC U;如果不是,则 n R F 9 0 5直接舍弃该 数据。如果不对 R X A D D R E S S设置,则会默认为广 播地址,这样会接受所有广播信息。(2)发送地址寄存器。即 T X A D D R E S S,通过 对该寄存器操作 可以确定要发送 的数据要发送到的 节点。当发送数据时,该信息会
14、 自动加 在包 头。如 果没有设置,则会缺省为广播地址,那么发 出的信息 就是广播消息了。数据帧格式:ADDR+PAYL OAD 其中,A D D R就是欲建立连接 的地址,就是写在 T X A D D R E S S中的信息,所 以每次发送数据前都要对该 维普资讯 http:/ 机电工程2 0 0 6年 第 2 3卷 第 2期 Me c h a n i c a lE l e c t r i c a l E n g i n e e r i n g Ma g a z i n e V o 1 2 3 N o 2 2 0 0 6 4 1 寄存器进行设置,否则发送的就是广播消息。发送包格式:Pr e
15、a mb l e+ADDR+P AYLOAD+CRC 其 中,P r e a mb l e自动加入的,n R F 9 0 5也会 自动处理,而 C R C也 由芯片硬件电路 自行计算并附在包尾,用 户可以对配置寄存器进行操作来选择是 否要 C R C 校验,以及选择 8位还是 1 6位。(3)发送数据寄存器,即 T X P A Y L O A D。该寄 存器一共有 3 2 B,故 n R F 9 0 5一次 只能发送 3 2 B,每 次用户将欲发送的数据写入该 寄存器,再 由控制引 脚进行发送操作。(4)接受数据寄存器,即 R X P A Y L O A D。该寄 存器也有 3 2 B,即一次
16、只能接受 3 2 B,当接受数据正 确时,D R会通知 MC U读取寄存器中的数据。2 2 1 2 操作寄存器 n R F 9 0 5留有 4个数 据线接 口,包 括 3个标 准 S P I口和一个使能端 C S N:其下降沿使能寄存器,如 果希望对某个寄存器进行操作 的时候,首先需要将 C S N引脚置低,而操作完后则要将 C S N恢复成高电 平,便于下次操作。9 0 5提供 了特殊 的命令字支持 对寄存 器 的操作,如,写 配置 寄存 器 的命 令字 为(WC)0 0 0 0 X X X X,读配置寄存器 的命令字 为(R C)0 0 0 1 X X X X,其中 X X X X为起始
17、地址。当需 要操作 某个寄存器时,先写入该寄存器的命令字,这样就相 当于选 中了该寄存器的基地址,然后依次从基地址 读写就可以了。但要注意每个寄存器都有相应的大 小,不能越界,否则会对 其它寄存器造成 影响而 出 错。实现配置寄存器中发送和接受字节数的函数:配置寄存器起始地址#d e fin e W C O x O 0 n T x 是要发送 的字节数 n R x是要接受的字节数 I n i t L e n g t h(c h a r n R x,c h a r n T x)使能配置寄存器 CS N;LOW:写 入 命 令 字,选 择 接 受 字 节 数 寄 存 器 S p i R e a d
18、Wr i t e(WC 1 0 x 0 3);写入这次操作可以接受的字节数 S p i R e a d Wr i t e(n R x);下一个寄存器即是发送字节数寄存器 写入这次操作可以发送的字节数 S p i R e a d Wr i t e(n T x);配置完毕,恢复使能位,为下次操作做准备 CS N=HI GH;2 2 2设 置频 道和 频段 n R F 9 0 5最吸引人 的一个特点就是提供跳频支 持,以及拥有 大量 的频 道可使 用。n R F 9 0 5可 以在 4 3 3 8 6 8 9 1 5频段进行通信,其实 8 6 8和 9 1 5属于同 一频段,即主要分两大频段,而每一
19、频段又有 2。个 频道可 以使用,但实际上针对不同的天线,只有一个 频段可以让芯片发挥最好 的功能,所 以一种天线有 2 频道使用。当在某个频道上遇到干扰时,可 以跳 频来继续通信,确保数据完整性。配置 寄存器提供 了 C H N O和 HF R E Q P L L来设置频道,公式为:=(4 2 2 4+(C H N O 1 0)X(1+HF R E Q P L L)MHz 式 中,H F R E Q P L L为 1位寄存 器;0为 4 3 3频段;1 则是 8 6 8 9 1 5频段;而 C H N O为 9位寄存器,来 选 择具体的频道。同时还有一个 2位寄存器 P A P WR可 以设
20、置 发送 功率,缺 省 为 0,对 应 一1 0 d B m,1对应 一2 d B m,2对 应+6 d B m,最大 3对 应+1 0 d B m。n R F 9 0 5提供了一个专 门的命令字来支持快速 跳频,其代码实现如下:快速配置频道,功率命令字#d e fin e CC 0 x 8 0 p o w e r 输 出功率 2位 h f r e q主频段选择:0为 4 3 3频段,1为 8 6 6 9 1 5频 段 c h a n n e l 频道选择:9位 V o i d S w i t c h C h a n n e l(c h a r p o w e r,c h a r h f r
21、e q,s h o r t c h a n n e 1)CSN=LO;P O WE R在第二位,H F R E Q P L L在第一位 S p i R e a d Wr i t e(C C I(p o w e r 2)I(h f r e q 1);S p i R e a d Wr i t e(c h a n n e 1);CSN=HI GH 维普资讯 http:/ 机电工程2 0 0 6年 第 2 3卷 第 2 期 2 2 3发 送数据 流 程 设置好配置寄存器后,就可以发送数据了,先给 出具体的时序图,如 图4所示。再解释具体流程。M 0 3 2)t x n u m=3 2;I n i t
22、L e n g t h(r x n u m,t x m u n);TXEN=HI GH:写入发送地址及数据 CS N=LOW;图 5发 送 数 据 流 程 图 S p i R e a d Wr i t e(WT P);F o r(i=0;i 3 2)r x n m=3 2;I n i t L e n g t h(r x n u m,t x m u n);TXEN=LOW;TRXCE=HI GH;Wh i l e(D R=L O W);TRX CE=L OW:读取数据 CS N=L OW;S p i R e a d Wr i t e(R R P);Wh i l e(D R=HI G H)B u
23、f(i+)=S p i R e a d Wr i t e(p u f i );i f(i=r x n u m)b r e a k;CS N=HI GH:如果需要将驱动移植 到其它平 台如 A R M上,只要将接 口的重新定义、S p i R e a d Wr i t e()函数做相 应调整,移植起来非常简单。3 结论 该无线通信模块,一方面 留有与 P c机通信 的 2 3 2接口,可以用来检 验 MA C协议 的有 效性;另一 方面 留有与采集仪器仪表数据的 4 8 5接 口,可以用 于无线抄表系统。利用此通信模块,同时物理层采用 8 0 2 1 l MA C 算法,网络层采用鱼眼路 由算法,可以很好 的组建一 个小型的 A d Ho c网络,该网络中各节点定时发送广 播,更新 自己路 由信息表,另一方面新节点加入时也 发送广播通知,从而实现了无中心,自组织和动态建 网等特性。参考文献:1 S i n g l e c h i p 4 3 3 8 6 8 9 1 5 MH z T r a n s c e i v e r n R F 9 0 5 d a t a s h e e t,2 00 4 7 2 胡大可 F L A S H 型超 低功耗 l 6位单 片机 M 北 京:北京航 空航 天大学 出版社,2 0 0 2 维普资讯 http:/
限制150内