24l01多对一
接收设置void RX_Mode(u8 RF_IDLE_CH)
{
//u8 TX_ADDRESS= {0xb0,0xb2,0xb3,0xb4,0x01};
u8 RX_ADDRESS = {0x34,0x43,0x10,0x10,0x01};
u8RX_ADDRESS1 = {0xc2,0x13,0x54,0xa5,0x76};
u8RX_ADDRESS2 = {0xc3};
u8RX_ADDRESS3 = {0xc4};
u8RX_ADDRESS4 = {0xc5};
u8RX_ADDRESS5 = {0xc6};
NRF24L01_CE=0;
NRF24L01_Write_Buf(WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH);//写RX节点地址
NRF24L01_Write_Buf(WRITE_REG+RX_ADDR_P1,(u8*)RX_ADDRESS1,RX_ADR_WIDTH);//写RX节点地址
NRF24L01_Write_Buf(WRITE_REG+RX_ADDR_P2,(u8*)RX_ADDRESS2,1);//写RX节点地址
NRF24L01_Write_Buf(WRITE_REG+RX_ADDR_P3,(u8*)RX_ADDRESS3,1);//写RX节点地址
NRF24L01_Write_Buf(WRITE_REG+RX_ADDR_P4,(u8*)RX_ADDRESS4,1);//写RX节点地址
NRF24L01_Write_Buf(WRITE_REG+RX_ADDR_P5,(u8*)RX_ADDRESS5,1);//写RX节点地址
NRF24L01_Write_Reg(WRITE_REG+EN_AA,0x00); //使能通道0的自动应答
NRF24L01_Write_Reg(WRITE_REG+EN_RXADDR,0x3f);//使能所有通道的接收地址
NRF24L01_Write_Reg(WRITE_REG+RF_CH,40); //设置RF通信频率
NRF24L01_Write_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//选择通道0的有效数据宽度
NRF24L01_Write_Reg(WRITE_REG+RX_PW_P1,RX_PLOAD_WIDTH);//选择通道1的有效数据宽度
NRF24L01_Write_Reg(WRITE_REG+RX_PW_P2,RX_PLOAD_WIDTH);//选择通道2的有效数据宽度
NRF24L01_Write_Reg(WRITE_REG+RX_PW_P3,RX_PLOAD_WIDTH);//选择通道3的有效数据宽度
NRF24L01_Write_Reg(WRITE_REG+RX_PW_P4,RX_PLOAD_WIDTH);//选择通道4的有效数据宽度
NRF24L01_Write_Reg(WRITE_REG+RX_PW_P5,RX_PLOAD_WIDTH);//选择通道5的有效数据宽度
NRF24L01_Write_Reg(WRITE_REG+RF_SETUP,0x27);//设置TX发射参数,0db增益,2Mbps,低噪声增益开启0x0f
NRF24L01_Write_Reg(WRITE_REG+CONFIG, 0x0f);//配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式
NRF24L01_CE = 1; //CE为高,进入接收模式
}
发射1是设置地址
unsigned char xdata TX_ADDRESS={0x34,0x43,0x10,0x10,0x01}; //发送地址
发射2设置地址
unsigned char xdata TX_ADDRESS={0xc2,0x13,0x54,0xa5,0x76}; //发送地址
发射3设置地址
unsigned char xdata TX_ADDRESS={0xc3,0x13,0x54,0xa5,0x76}; //发送地址
发射4设置地址
unsigned char xdata TX_ADDRESS={0xc4,0x13,0x54,0xa5,0x76}; //发送地址
发射5设置地址
unsigned char xdata TX_ADDRESS={0xc5,0x13,0x54,0xa5,0x76}; //发送地址
发射6设置地址
unsigned char xdata TX_ADDRESS={0xc6,0x13,0x54,0xa5,0x76}; //发送地址
参照本论坛的贴设置的
void TX_Mode(void)
{
NRF24L01_CE=0;
NRF24L01_Write_Buf(WRITE_REG+TX_ADDR,(u8*)TX_ADDRESS,TX_ADR_WIDTH);//写TX节点地址
NRF24L01_Write_Buf(WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH); //设置TX节点地址,主要为了使能ACK
NRF24L01_Write_Reg(WRITE_REG+EN_AA,0x00); //使能通道0的自动应答
NRF24L01_Write_Reg(WRITE_REG+EN_RXADDR,0x01); //使能通道0的接收地址
NRF24L01_Write_Reg(WRITE_REG+SETUP_RETR,0x1a);//设置自动重发间隔时间:500us + 86us;最大自动重发次数:10次
NRF24L01_Write_Reg(WRITE_REG+RF_CH,40); //设置RF通道为40
NRF24L01_Write_Reg(WRITE_REG+RF_SETUP,0x27);//设置TX发射参数,0db增益,2Mbps,低噪声增益开启 0x0f
NRF24L01_Write_Reg(WRITE_REG+CONFIG,0x0e); //配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式,开启所有中断
NRF24L01_CE=1;//CE为高,10us后启动发送
}
但是接收的通道 都是0通道
if(NRF24L01_RxPacket(tmp_buf)==0)//一旦接收到信息,则显示出来.
{
st=(sta&0x0f)>>1;
// st=(sta&0x0e);
if(st==0x00) //通道0
请各位朋友帮看看
什么问题?楼主想问什么 没有问题了是变量定义的问题这么做没有错 zishiquan 发表于 2013-8-14 17:12
没有问题了是变量定义的问题这么做没有错
想问楼主做出来没有?
我最近在做这个,老是调不通超过两个通道的。
hck2llj 发表于 2014-2-28 12:20
想问楼主做出来没有?
我最近在做这个,老是调不通超过两个通道的。
做出来了 hck2llj 发表于 2014-2-28 12:20
想问楼主做出来没有?
我最近在做这个,老是调不通超过两个通道的。
上面的 地址都是对应的没有问题 zishiquan 发表于 2014-2-28 18:18
上面的 地址都是对应的没有问题
方便共享一下源码吗?我最近找了很多问题,没弄出来。 zishiquan 发表于 2014-2-28 18:17
做出来了
我按照论坛里几位大神的源码,就是不成功,奇怪呀。
有一个写多对一的,里面有两个发射的,一个接收的。
这个可以了,但是多加的通道都不成。 hck2llj 发表于 2014-2-28 19:53
方便共享一下源码吗?我最近找了很多问题,没弄出来。
上面的 就源码 实验用的
if(NRF24L01_RxPacket(tmp_buf)==0)//一旦接收到信息,则显示出来.
{
st=(st&0x0f)>>1;
// st=(st&0x0e);
if(st==0x00) //通道0
{
}
if(st==0x01) //通道1
{
}
if(st==0x02) //通道2
{
}
if(st==0x03) //通道3
{
}
if(st==0x04) //通道4
{
}
if(st==0x05) //通道5
{
}
} zishiquan 发表于 2014-3-3 08:42
上面的 就源码 实验用的
if(NRF24L01_RxPacket(tmp_buf)==0)//一旦接收到信息,则显示出来.
我的写法和这个差不多,但是就是不成功呀 hck2llj 发表于 2014-3-3 09:00
我的写法和这个差不多,但是就是不成功呀
仿真看看数据到哪里 51单片机,怎么仿真{:sad:} 我不知道 现在的51 用的多不多 你应该换个芯片了 学ARM吧51用的不多了 程序多了出问题 都不知道哪里出的用51还有意义吗 zishiquan 发表于 2014-3-3 16:04
程序多了出问题 都不知道哪里出的用51还有意义吗
各有所长吧,我只是弄一个简单的多点无线测温,在这里使用arm相对来说,价格上没有什么优势。
我只是想弄懂原因,弄懂了,使用什么平台都是一样的。。 hck2llj 发表于 2014-3-3 16:10
各有所长吧,我只是弄一个简单的多点无线测温,在这里使用arm相对来说,价格上没有什么优势。
我只是想弄 ...
你没有办法仿真调试啊这是关键 你换成c8051f310也行 也有仿真 zishiquan 发表于 2014-3-3 16:29
你换成c8051f310也行 也有仿真
我用串口来调试吧 zishiquan 发表于 2014-3-3 16:29
你换成c8051f310也行 也有仿真
你的配置nRF24L01的代码找不到了呀? hck2llj 发表于 2014-3-3 18:01
你的配置nRF24L01的代码找不到了呀?
RX_ADDRESS =0x01;
RX_ADDRESS = 0x43;
RX_ADDRESS = 0x10;
RX_ADDRESS = 0x10;
RX_ADDRESS = 0x01;
NRF24L01_CE=0;
NRF24L01_Write_Buf(WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH);//写RX节点地址
NRF24L01_Write_Reg(WRITE_REG+EN_AA,0x00); //使能通道0的自动应答
NRF24L01_Write_Reg(WRITE_REG+EN_RXADDR,0xff);//使能所有通道的接收地址
NRF24L01_Write_Reg(WRITE_REG+RF_CH,40); //设置RF通信频率
NRF24L01_Write_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//选择通道0的有效数据宽度
NRF24L01_Write_Reg(WRITE_REG+RF_SETUP,0x26);//设置TX发射参数,0db增益,2Mbps,低噪声增益开启0x0f
NRF24L01_Write_Reg(WRITE_REG+CONFIG, 0x0f);//配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式
NRF24L01_CE = 1; //CE为高,进入接收模? zishiquan 发表于 2014-3-5 10:32
RX_ADDRESS =0x01;
RX_ADDRESS = 0x43;
RX_ADDRESS ...
谢谢,我已经调通了。
页:
[1]