天线|RF射频
直播中

王茁珐

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

在2个51单片机之间实现24L01无线通信的原因是什么?

想用STM32开发板和51单片机之间无线通信。于是试了一下,不行!

为了找出问题!我想先应该在两个51之间实现通信!51的模拟SPI读写函数如下:12M晶振下

uchar SPIx_ReadWriteByte(uchar reg)

{

     uchar bit_ctr;

        for(bit_ctr=0;bit_ctr<8;bit_ctr++)      // output 8-bit

        {

          NRF24L01_MOSI = (reg & 0x80);         // output 'uchar', MSB to MOSI

          reg = (reg << 1);                             // shift next bit into MSB..

          NRF24L01_SCK = 1;                          // Set SCK high..

          reg |= NRF24L01_MISO;                   // capture current MISO bit

          NRF24L01_SCK = 0;                         // ..then set SCK low again

        }

        return reg;                                   // return read uchar

}

其它的函数都是照搬发烧友的,如下:

u8 NRF24L01_Write_Reg(u8 reg,u8 value);

u8 NRF24L01_Read_Reg(u8 reg);

u8 NRF24L01_Read_Buf(u8 reg,u8 *pBuf,u8 len);

u8 NRF24L01_Write_Buf(u8 reg, u8 *pBuf, u8 len);

u8 NRF24L01_TxPacket(u8 *txbuf);

u8 NRF24L01_RxPacket(u8 *rxbuf);

void RX_Mode(void);

void TX_Mode(void);

u8 NRF24L01_Check(void);



只是去掉了上面某些函数当中的SPIx_SetSpeed(SPI_SPEED_8)函数,其它的一点也没动!

利用上面的NRF24L01_Check()函数,可以检测到24L01,但就是通信不了!



大家认为问题出在哪里了?请赐教!谢谢!

回帖(21)

汪海源

2020-5-13 05:12:20
先搞清问题出在哪里?

你两个51,一个刷接收代码,让他先工作.另外一个刷发送代码,后工作.试试可以不.



如果再不行,你看看你的是不是开启了自动ack,如果开启了,把它关掉,然后再试验,等到能通信了,再开启自动ack.
举报

李玉鑫

2020-5-13 05:24:13
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4317174&bbs_page_no=1&search_mode=3&search_text=wolfdong7&bbs_id=9999





这里有我两个51单片机NRF24L01的通信程序。

希望能够对LZ有帮助。
举报

刘娟

2020-5-13 05:39:52

楼主调出来没?我也正在调。。。
举报

李思昊

2020-5-13 05:46:30
我也在调,用杜邦线引到开发板上总是发现不了无线模块头痛中。
举报

更多回帖

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