天线|RF射频
直播中

李晓莉

7年用户 158经验值
私信 关注
[问答]

怎么配置NRF24L01发送一个8位或者16位的数?

怎么配置NRF24L01 发送一个数(8位或者16位)?

u8 NRF24L01_TxPacket(char *txbuf)

{

        u8 sta;

        SPIx_SetSpeed(SPI_SPEED_8);//spi速度为9Mhz(24L01的最大SPI时钟为10Mhz)   

        NRF24L01_CE=0;

  NRF24L01_Write_Buf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH);//写数据到TX BUF  32个字节

        NRF24L01_CE=1;//启动发送           

        while(NRF24L01_IRQ!=0);//等待发送完成

        sta=NRF24L01_Read_Reg(STATUS);  //读取状态寄存器的值           

        NRF24L01_Write_Reg(WRITE_REg+STATUS,sta); //清除TX_DS或MAX_RT中断标志

        if(sta&MAX_TX)//达到最大重发次数

        {

                NRF24L01_Write_Reg(FLUSH_TX,0xff);//清除TX FIFO寄存器

                return MAX_TX;

        }

        if(sta&TX_OK)//发送完成

        {

                return TX_OK;

        }

        return 0xff;//其他原因发送失败

}

这都是32位数据发的。。。怎么只发送一个字节或者16位的数?

回帖(11)

周蓓

2020-4-26 12:05:26

好像是一次32字节,缓冲区满了才发送的
举报

高原

2020-4-26 12:12:22

可以设置缓冲区大小的,不一定要32字节。

可以自己设计多少。

不过建议楼主做一个协议,这样好处理一点。
举报

刘华

2020-4-26 12:29:58

不能直接读取一个字节?
举报

李琴

2020-4-26 12:47:40
这有点浪费带宽吧....
举报

更多回帖

发帖
×
20
完善资料,
赚取积分