单片无线收发一体芯片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啊,呵呵
,我没用过,同一厂家,原理应该类似
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)