微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 2.4g无线模块程序

2.4g无线模块程序

时间:10-02 整理:3721RD 点击:
问题1
uchar SPI_RW_Reg(uchar reg,uchar value)          //寄存器访问函数,用来给对应寄存器写值。是通过WRITE_REG命令(0x20+寄存器地址)
          {
          uchar status;
          CSN  = 0;
          status =  SPI_RW(reg);
          SPI_RW(value);
          CSN  =  1;
          return(status);
          }
我想请问一下,这里的status是什么目的,return(status)又是为什么。

问题2
void TX_mode(uchar*BUF)
          {
           CE = 0;
           SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS,TX_ADR_WIDTH);
           SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS,TX_ADR_WIDTH);
           SPI_Write_Buf(WR_TX_PLOAD,BUF,RX_PLOAD_WIDTH);
           SPI_RW_Reg(WRITE_REG + EN_AA,0x01);                   //通道0自动应答使能
           SPI_RW_Reg(WRITE_REG + EN_RXADDR,0x01);          //接受通道允许
           SPI_RW_Reg(WRITE_REG + SETUP_RETR,0x0a);          //  04寄存器,后4位0,等待250+86us,后1010是中文使用手册翻译有误
           SPI_RW_Reg(WRITE_REG + RF_CH,40);                  //   40?
           SPI_RW_Reg(WRITE_REG + RF_SETUP,0x07);         //PLL_LOCK允许,传输速率1M,发射功率0,低噪音放大功率使能
           SPI_RW_Reg(WRITE_REG + CONFIG,0x0e);                //CRC使能,设成发送模式,16位CRC校验,上电,上电模式,MAX_RT,TX_DS,RX_RD中断产生时,IRQ引脚电平为低
           CE = 1;
          
          }
这里的   SPI_RW_Reg(WRITE_REG + RF_CH,40);
SPI_RW_Reg(WRITE_REG + RF_CH, 40);                 // 选择射频通0x40


这条的注解是这样的,可是通过手册,感觉不是啊[img]file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\1109135625\QQ\WinTemp\RichOle\YN%R[XJ6~HUFJ7QR9_QCV3B.png[/img]

问题3
  void init_io()
          {
          CE  = 0;
          CSN = 1;
          IRQ = 1;                                                                                                                                                                  SCK = 0;
          }

这里的引脚初始化又是怎么通过使用手册写出来的?

第一个问题。根据24l01的数据手册时序图,见附件图,在写操作的时候,通过MOSI写入数据后,在MISO引脚会有数据输出,此时返回的就是MISO的数据,如果程序编写严谨,就需要判断返回的数据是否准确。
第二个问题。这个通道只要收发一致就行,不用过于纠结。
第三个问题。同样观察时序图,在启动一次数据传输时,默认要让CSN为高,SCK为低.而CE引脚,根据工作模式的参数,当CE=0时,芯片处于待机模式,当为1时,表示其工作模式,所以在初始化的时候应该将其处于待机模式。IRQ引脚为中断引脚,根据手册的说明,MCU给IRQ写1,将中断禁止,也符合初始化的要求。


知道的大神回答一下呗,只要能解决,还有打赏

问题1:status就像他的字面意思,就是一个状态标志位,这是个好的习惯问题,SPI写完后会返回一个状态标志位,表示写完了。(确保写入不会出现问题,那你可能会问会出现什么问题?答案:会出现时钟频率较高的CPU在写入未完成就执行其他操作等类似问题,时钟频率较低(时钟频率的高低是根据SPI从芯片的时序来判断的)的情况下);
问题2:看手册可得知他有40个通道此处他用的是40通道而已(注意不是0x40,而是十进制的40,即0x28)另外你图片没传上来,看不到;
问题3:这个根据时序图写出来的,只是为了确保不会乱写入数据,实际意义不是太大。

你好,有怎么操作 RF_CH寄存器的图或说明吗,我的中文手册上没有

你好,有怎么操作 RF_CH寄存器的图或说明吗,我的中文手册上没有

来了学习下了啊!

路过学习下了啊

具体想要知道哪块的设置。手册上关于这块没有讲很细

那我写程序该怎么判断设定的通道是多少呢

收发的程序是一致的就可以啊

路过

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top