OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4024|回复: 4

问个关于例程无线通信的问题

[复制链接]

16

主题

85

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-5-15
在线时间
0 小时
发表于 2013-7-22 11:32:30 | 显示全部楼层 |阅读模式

//SPI写寄存器
//reg:指定寄存器地址
//value:写入的值
u8 NRF24L01_Write_Reg(u8 reg,u8 value)
{
 u8 status; 
    NRF24L01_CSN=0;                 //使能SPI传输
   status =SPIx_ReadWriteByte(reg);//发送寄存器号
   SPIx_ReadWriteByte(value);      //写入寄存器的值
   NRF24L01_CSN=1;                 //禁止SPI传输   
   return(status);          //返回状态值
}

1、这里面的寄存器号怎么获得,查数据手册么?书上的例子里也没看到相关的写寄存器的语句(或者我没找到)

2、如果我想要把主机的信号发送到从机的DMA1寄存器,操作相关位实现功能,是否可行,只要将主机发送的信号读进来就可以了吗?
3、const u8 TX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; //发送地址
     const u8 RX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; //发送地址
这里发送接收的是什么寄存器的地址?这五位地址怎么来的

求骂求指点

 

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-22 15:36:12 | 显示全部楼层
回复【楼主位】红烧螺丝钉:
---------------------------------
1,这是个函数啊,有2个参数,reg是寄存器地址,value是寄存器值,都是你自己给定的。当然这些寄存器都是可以在NRF24L01的手册上能查到的才可以。
2,不懂你啥意思。
3,就是NRF24L01的收发都是需要地址的,地址不对,就不能成功收发。这里备注有误,应该是发送地址,接收地址。 五位地址,你还是看NRF24L01的数据手册吧...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

16

主题

85

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-5-15
在线时间
0 小时
 楼主| 发表于 2013-7-22 17:23:22 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
这里的操作是不是都只是NRF24L01和SPI之间的寄存器的操作?刚才第一个问题您老说的reg寄存器地址也只属于这里面的是吧

然后 TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01}的这五位的地址是不是就是对应SPI1_DR的地址?
我在百度上还找到了个TX_ADDRESS[TX_ADR_WIDTH] = {0x01,0x20,0x20,0x20,0x20}; 
NRF24L01数据手册我找到了
#define RX_PW_P5 0x16 // 'RX payload width, pipe5' register address
#define FIFO_STATUS 0x17 // 'FIFO Status Register' register address
这类的相关寄存器地址的宏定义,但是也就只有0x00~0x17,这个不会是对应那五位地址吧。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-22 19:38:15 | 显示全部楼层
寄存器数量!=实际可以存储的数量。
你写一个寄存器A,然后可以写入5个字节,就表示这个地址可以写入5个字节。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

16

主题

85

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2013-5-15
在线时间
0 小时
 楼主| 发表于 2013-7-23 09:57:45 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
昨天后来搜了个学习笔记
http://www.openedv.com/posts/list/0/6363.htm#103502
大致理解了,然后里面

u8 RX_ADDRESS1[RX_ADR_WIDTH]={0x02,0x01,0xc2,0xc2,0xc2}; //接收1通道地址 
  



const u8 RX_ADDRESS2[RX_ADR_WIDTH]={0xc2,0xc2,0xc2,0xc1,0x03}; //接收2通道地址 
  
const u8 RX_ADDRESS3[RX_ADR_WIDTH]={0xc2,0xc2,0xc2,0xc1,0x04}; //接收3通道地址 
说橙色的一定要和红色相同.但是红色部分是0x01,0xc2,0xc2,0xc2,橙色部分是0xc2,0xc2,0xc2,0xc1,求解释,谢谢。。然后原子老师在例程用的是接收通道0,所以那5位的地址就爱怎么设就怎么设对吧                                      
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-16 18:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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