找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

NRF24L01如何开通其它通道??

[复制链接]
admin 发表于 2012-9-4 04:24:32 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本人在研究24L01时,只有P0通道能正常收发,P1通道能收发一次,其它通道(P2--P5)无法收发,改了地址和开通道所以通道接收还是不行,哪位知道呀??
uchar code TX_ADDRESS[TX_ADR_WIDTH] = {0x08,0x43,0x01,0x01,0x01}; // 通道0发送地址
uchar code TX_ADDRESS1[TX_ADR_WIDTH] = {0x01,0x43,0x01,0x01,0xb0}; // 通道1发送地址
uchar code TX_ADDRESS2[TX_ADR_WIDTH] = {0x01,0x43,0x01,0x01,0xb1}; // 通道2发送地址
uchar code TX_ADDRESS3[TX_ADR_WIDTH] = {0x01,0x43,0x01,0x01,0xb2}; // 通道3发送地址
uchar code TX_ADDRESS4[TX_ADR_WIDTH] = {0x01,0x43,0x01,0x01,0xb3}; // 通道4发送地址
uchar code TX_ADDRESS5[TX_ADR_WIDTH] = {0x01,0x43,0x01,0x01,0xb4}; // 通道5发送地址
/////这个函数设置nRF24L01为接收模式,等待接收发送设备的数据包////
void RX_Mode(void)
{
CE = 0;
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // 接收设备接收通道0使用和发送设备相同的发送地址
SPI_Write_Buf(WRITE_REG + RX_ADDR_P1, TX_ADDRESS1, TX_ADR_WIDTH); // 接收设备接收通道1使用和发送设备相同的发送地址
SPI_Write_Buf(WRITE_REG + RX_ADDR_P2, TX_ADDRESS2, TX_ADR_WIDTH); // 接收设备接收通道2使用和发送设备相同的发送地址
SPI_Write_Buf(WRITE_REG + RX_ADDR_P3, TX_ADDRESS3, TX_ADR_WIDTH); // 接收设备接收通道3使用和发送设备相同的发送地址
SPI_Write_Buf(WRITE_REG + RX_ADDR_P4, TX_ADDRESS4, TX_ADR_WIDTH); // 接收设备接收通道4使用和发送设备相同的发送地址
SPI_Write_Buf(WRITE_REG + RX_ADDR_P5, TX_ADDRESS5, TX_ADR_WIDTH); // 接收设备接收通道5使用和发送设备相同的发送地址
SPI_RW_Reg(WRITE_REG + EN_AA,0x0f); // 关闭自动应答--//写寄存器指令+自动应答
SPI_RW_Reg(WRITE_REG + EN_RXADDR,0x0f); // 使能接收通道0
SPI_RW_Reg(WRITE_REG + RF_CH, 40); // 选择射频通道0x40
SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH); // 接收通道0选择和发送通道相同有效数据宽度
SPI_RW_Reg(WRITE_REG + RX_PW_P1, TX_PLOAD_WIDTH); // 接收通道1选择和发送通道相同有效数据宽度
SPI_RW_Reg(WRITE_REG + RX_PW_P2, TX_PLOAD_WIDTH); // 接收通道2选择和发送通道相同有效数据宽度
SPI_RW_Reg(WRITE_REG + RX_PW_P3, TX_PLOAD_WIDTH); // 接收通道3选择和发送通道相同有效数据宽度
SPI_RW_Reg(WRITE_REG + RX_PW_P4, TX_PLOAD_WIDTH); // 接收通道4选择和发送通道相同有效数据宽度
SPI_RW_Reg(WRITE_REG + RX_PW_P5, TX_PLOAD_WIDTH); // 接收通道5选择和发送通道相同有效数据宽度
SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); // 数据传输率1Mbps,发射功率0dBm,低噪声放大器增益
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); // CRC使能,16位CRC校验,上电,接收模式
CE = 1; // 拉高CE启动接收设备
}
//////这个函数设置nRF24L01为发送模式////////
void TX_Mode(uchar * BUF)
{
CE=0; //芯片使能
SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS,2 TX_ADR_WIDTH); // 写入发送地址22222
SPI_Write_Buf(WRITE_REG + RX_ADDR_P2, TX_ADDRESS2, TX_ADR_WIDTH); // 为了应答接收设备,接收通道2地址和发送地址相同
SPI_Write_Buf(WR_TX_PLOAD, BUF, TX_PLOAD_WIDTH); // 写数据包到TX FIFO
SPI_RW_Reg(WRITE_REG + EN_AA, 0x0f); // 自动应答
SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x0f); // 使能接收通道允许
SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x0a); // 自动重发延时等待250us+86us,自动重发10次--0x0a
SPI_RW_Reg(WRITE_REG + RF_CH,40); // 选择射频通道0x40
SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH); // 接收通道0选择和发送通道相同有效数据宽度
SPI_RW_Reg(WRITE_REG + RX_PW_P1, TX_PLOAD_WIDTH); // 接收通道1选择和发送通道相同有效数据宽度
SPI_RW_Reg(WRITE_REG + RX_PW_P2, TX_PLOAD_WIDTH); // 接收通道2选择和发送通道相同有效数据宽度
SPI_RW_Reg(WRITE_REG + RX_PW_P3, TX_PLOAD_WIDTH); // 接收通道3选择和发送通道相同有效数据宽度
SPI_RW_Reg(WRITE_REG + RX_PW_P4, TX_PLOAD_WIDTH); // 接收通道4选择和发送通道相同有效数据宽度
SPI_RW_Reg(WRITE_REG + RX_PW_P5, TX_PLOAD_WIDTH); // 接收通道5选择和发送通道相同有效数据宽度
SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); // 数据传输率1Mbps,发射功率0dBm,低噪声放大器增益0111
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // CRC使能,16位CRC校验,上电,发射模式1110
CE = 1;
delay1us(10);
CE = 0;
}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-29 08:36 , Processed in 0.059326 second(s), 12 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表