谁给我讲一讲nRF2401和MSP430,谢谢拉

谁给我讲一讲nRF2401和MSP430,谢谢拉,第1张

NRF2401的msp430程序。利用IAR编译的。

单片无线收发一体芯片nRF2401

业界体积最小、功耗最少、外围元件最少的

2.4GHz无线单片收发芯片nRF2401

全球开放的2.4GHz频段,125个频道,满足多频及跳频需要

高速率1Mbps,高于蓝牙,具有高数据吞吐量

极少的外围元件,只需一个晶振和一个电阻

发射功率、工作频率等所有工作参数全部通过软件设置完成

1.9~3.6V低功耗,满足低功耗设计需要

独特设计:芯片内部设置了专门的稳压电路,使用各种电源包括DC/DC开关电源均有很好的通信效果

独特设计:每个芯片可以通过软件设置最多40bit地址,只有收到本机地址时才会输出数据(提供一个中断指示),编程很方便

独特设计:纠检错是无线通信设计的难点,nRF2401内置了CRC纠检错硬件电路和协议,对于软件开发人员太方便了。

独特设计:nRF2401的DuoCeiver技术可以同时接收两个nRF2401的数据。

广泛适用于手持终端PDA、无线耳机、数字视频、无线鼠标、无线键盘以及其他短距离高速无线应用

nRF2401-Quick-DEV快速开发系统,含开发板、源代码、原理图等详细资料

nRF2401-Quick-Kit快速开发套件,含各芯片和主要配套器件,方便开发

可供即插即用的嵌入式2.4Ghz无线模块,提供领先的2.4GHz无线光电鼠标,2.4G无线键盘参考设计

那就A单片机这边当成发送就可了,B单片机那边作接收,B单片机把接收到的数据再作处理。

我看了一下那个文档,里面有程序的,你可以参考一下的!

实验时收发双方都采用相同的电路

发送方程序如下:

org0000H

AJMPSTART

延时1/4s子程序

YANSHI1S:MOVR7,#250

YANSHI1S1:MOVR6,#250

YANSHI1S2:NOP

NOP

DJNZR6,YANSHI1S2

DJNZR7,YANSHI1S1

RET

将58开始的单或多字节(字节数在R3中)写入芯片

XIENB:MOVR0,#58H

CLRP1.7SCN变低

XIE00:ACALLXIE1B

INCR0

DJNZR3,XIE00

SETBP1.7

RET

将R0所指1单元按SPI时序写入模块,调用该子程序前,应将CSN线变低

单次或多次调用完成后将CSN线变高

XIE1B:MOVR2,#8

MOVA,@R0

XIE1B1:RLCA

MOVP1.5,C数据送上MOSI线

SETBP1.4数据移入模块

CLRP1.4

DJNZR2,XIE1B1

RET

读芯片状态字将芯片状态字读到5FH

DUZT:MOVR2,#8

SETBP1.5

CLRP1.7CSN变低,

DUZT1:SETBP1.4时钟上升

MOVC,P1.3读入MISO线上的数据

MOVA,5FH

RLCA数据移入5FH寄存器

MOV5FH,A

CLRP1.4

DJNZR2,DUZT1

SETBP1.7CSN变高,完成一次命令

RET

START:MOVP1,#0AFH模块待机

MOV58H,#20H准备写0寄存器

MOV59H,#0EH上电,发射模式

MOVR3,#02H

ACALLXIENB

MOV58H,#21H01寄存器

MOV59H,#03H0,1通道允许自动应答

MOVR3,#02H

ACALLXIENB

MOV58H,#22H02

MOV59H,#03H

MOVR3,#02H

ACALLXIENB

MOV58H,#23H03寄存器

MOV59H,#03H5字节地址宽带

MOVR3,#02H

ACALLXIENB

MOV58H,#24H04

MOV59H,#14H重发等待500uS,重发4次,1A则重发10次,在206c处

MOVR3,#02H

ACALLXIENB

MOV58H,#25H05寄存器

MOV59H,#07H射频频率(汇编后在2076处)

MOVR3,#02H

ACALLXIENB

MOV58H,#26H06

MOV59H,#27H07为1M传输速率,0dB增益,27则为250k传输速率

MOVR3,#02H

ACALLXIENB

MOV58H,#27H07

MOV59H,#70H清模块内中断

MOVR3,#02H

ACALLXIENB

MOV58H,#2AH0A寄存器(通道0)

MOV59H,#02H配置地址

MOV5AH,#3AH

MOV5BH,#39H

MOV5CH,#38H

MOV5DH,#37H

MOVR3,#06H

ACALLXIENB

MOV58H,#30H10寄存器

MOVR3,#06H发送地址

ACALLXIENB

MOV58H,#2BH0B寄存器(通道1)

MOV59H,#01H本机地址

MOVR3,#06H

ACALLXIENB

MOV58H,#31H11寄存器

MOV59H,#10H0通道有效数据宽带16字节

MOVR3,#02H

ACALLXIENB

MOV58H,#32H12寄存器

MOV59H,#10H1通道有效数据宽度16字节

MOVR3,#02H

ACALLXIENB

XIEFS:MOV58H,#0A0H写发送数据到芯片

MOVR0,#58H

MOVR3,#10H

CLRP1.7

ACALLXIE1B

MOVR0,#70H

XIEXUN:ACALLXIE1B

INCR0

DJNZR3,XIEXUN

SETBP1.7

SETBP1.6启动发射

MOVR7,#5

DJNZR7,$

CLRP1.6

JBP3.2,$

cplp1.0

ACALLDUZT读状态寄存器

MOV58H,#27H07

MOV59H,#70H清中断

MOVR3,#02H

ACALLXIENB

MOV58H,#0E1H清模块发送缓冲区

MOVR3,#01H

ACALLXIENB

ACALLYANSHI1S

SJMPXIEFS

end

接收端程序:

org0000H

AJMPSTART

org0003H

AJMPEXINT0

延时1/4s子程序

YANSHI1S:MOVR7,#250

YANSHI1S1:MOVR6,#250

YANSHI1S2:NOP

NOP

DJNZR6,YANSHI1S2

DJNZR7,YANSHI1S1

RET

将58开始的单或多字节(字节数在R3中)写入芯片

XIENB:MOVR0,#58H

CLRP1.7SCN变低

XIE00:ACALLXIE1B

INCR0

DJNZR3,XIE00

SETBP1.7

RET

将R0所指1单元按SPI时序写入模块,调用该子程序前,应将CSN线变低

单次或多次调用完成后将CSN线变高

XIE1B:MOVR2,#8

MOVA,@R0

XIE1B1:RLCA

MOVP1.5,C数据送上MOSI线

SETBP1.4数据移入模块

CLRP1.4

DJNZR2,XIE1B1

RET

按SPI时序读模块一字节入单片机R0所指单元,调用该子程序前,应将CSN线变低

单次或多次调用完成后将CSN线变高

DU1B:MOVR2,#8

DU1B1:SETBP1.4

MOVC,P1.3

RLCA

CLRP1.4

DJNZR2,DU1B1

MOV@R0,A

RET

按SPI时序读模块接收缓冲区数据入单片机R0所指单元,字节数在R3中

DUNB:PUSH00H

MOV58H,#61H写一字节命令

MOVR0,#58H

CLRP1.7

ACALLXIE1B

POP00HR0指向接收缓冲区首地址

DUXUN:ACALLDU1B

INCR0

DJNZR3,DUXUN

SETBP1.7

RET

读芯片状态字将芯片状态字读到5FH

DUZT:MOVR2,#8

SETBP1.5输入芯片1

CLRP1.7CSN变低,

DUZT1:SETBP1.4时钟上升

MOVC,P1.3读入MISO线上的数据

MOVA,5FH

RLCA数据移入5FH寄存器

MOV5FH,A

CLRP1.4

DJNZR2,DUZT1

SETBP1.7CSN变高,完成一次命令

RET

START:MOVP1,#0AFH模块待机

SETB0A8H允许外部中断0

CLR88H电平触发

SETB0B8H高优先级

SETB 0AFHCPU开中断

MOV58H,#20H准备写0寄存器

MOV59H,#0FH上电,接收模式(发射时,设置为0EH)

MOVR3,#02H

ACALLXIENB

MOV58H,#21H01寄存器

MOV59H,#03H0,1通道允许自动应答

MOVR3,#02H

ACALLXIENB

MOV58H,#22H02

MOV59H,#03H允许0,1通道接收

MOVR3,#02H

ACALLXIENB

MOV58H,#23H03寄存器

MOV59H,#03H5字节地址宽带

MOVR3,#02H

ACALLXIENB

MOV58H,#24H04

MOV59H,#14H重发等待500uS,重发4次

MOVR3,#02H

ACALLXIENB

MOV58H,#25H05寄存器

MOV59H,#07H射频频率

MOVR3,#02H

ACALLXIENB

MOV58H,#26H06

MOV59H,#27H设置为07为1M传输速率,0dB增益(若为27,则是250kpbs,0dB)

MOVR3,#02H

ACALLXIENB

MOV58H,#27H07

MOV59H,#70H清模块内中断

MOVR3,#02H

ACALLXIENB

MOV58H,#2AH0A寄存器(通道0)

MOV59H,#01H配置地址(对方地址)

MOV5AH,#3AH

MOV5BH,#39H

MOV5CH,#38H

MOV5DH,#37H

MOVR3,#06H

ACALLXIENB

MOV58H,#30H10寄存器

MOVR3,#06H发送地址

ACALLXIENB

MOV58H,#2BH0B寄存器(通道1)

MOV59H,#02H本机地址

MOVR3,#06H

ACALLXIENB

MOV58H,#31H11寄存器

MOV59H,#10H0通道有效数据宽带16字节

MOVR3,#02H

ACALLXIENB

MOV58H,#32H12寄存器

MOV59H,#10H1通道有效数据宽度16字节

MOVR3,#02H

ACALLXIENB

SETBP1.6启动接收

HALT:SJMPHALT

EXINT0:PUSHACC

PUSHPSW

ACALLDUZT读状态寄存器

MOV58H,#27H07

MOV59H,#70H清中断

MOVR3,#02H

ACALLXIENB

MOVR0,#60H读接收数据到60H到6FH

MOVR3,#10H

ACALLDUNB

CPLP1.0

FANHUI:POPPSW

POPACC

RETI

end

对,nrf2401和单片机是靠SPI通信的,你只有把数据用SPI的方式,发给NRF2401,它会帮你用无线的形式发出去的,接收也一样,NRF2401会把接收到的数据,存在接收寄存器里,你去读这个寄存器就好了。

当然,nrf2401的设置,要设置好,什么接收和发送地址拉,通道拉,中断方法拉,频率拉,等等。

网上

有很多资料,厂家应该也会提供资料的,多读上面的资料,不难。

如果,你还在理论阶段,我可以给你点nrf24L01的,可能有点不同,但基本应该是类似的。

哦,是nrf401啊,呵呵

,我没用过,同一厂家,原理应该类似


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11593248.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存