完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这几天在做nRF24L01无线通信,刚开始,地址问题很是让我迷惑,按说依照IP地址的惯性思维,IP数据报有一个目的地址,一个本机地址。但是nRF4L01网上找的历程中,目的地址和本机地址设置的却是一样的。
uchar TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01}; uchar RX_ADDRESS[RX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01}; 这个就很奇怪了,而且接受方设置的地址也是这样,百思不得其解,最后发现原来是自动应答在作怪。 如果设置了自动应答模式,发送方发送完一包数据后,就把自己设置为接受模式(无需手动设置),等待接受方的应带信号,这个和TCP/IP通信是类似的,很好理解。但nRF24L01中,一个数据报中貌似只包含目的地址,却不包含本机地址(源地址)。所以接受方收到数据报以后,理论上是找不到应答方,也就是说不知道给谁应答,但是nRF24L01取出数据报中的目的地址,作为应答地址,发送应答信号。这个目的地址,是发送方的目的地址,同时也是接受方自己的本机地址。这时候就需要发送方在发送数据的时候显式或者说临时的把自己的本机地址设置为和目的地址一样,这样就可以收到接收方发回来的应答信号。所以在发送程序中就有这样的代码 SPI_Write_Buf(RF_WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // SPI_Write_Buf(RF_WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);发现没有,两次调用的都是TX_ADDRESS,这样就临时把自己的本机地址设置为和目的地址相同的地址,这样就能够接收到接收方发回来的应答信号。 在接收方设置接受模式的时候,也要设置接受地址,也就是本机地址 SPI_Write_Buf(RF_WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); 相对于刚刚的临时,现在才是真正的设置本机地址,调用的是RX_ADDRESS。那么在定义本机地址和目的地址的时候,其实是不需要设置为一样的,发送方如下设置: uchar TX_ADDRESS[TX_ADR_WIDTH] = {0x35,0x43,0x10,0x10,0x01}; // 目的地址uchar RX_ADDRESS[RX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01}; // 本机地址接受方如下设置: uchar TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01}; // 目的地址uchar RX_ADDRESS[RX_ADR_WIDTH] = {0x35,0x43,0x10,0x10,0x01}; // 本机地址 这样照样是能收到数据,也能自动应答,只不过在自动应答时,发送方会临时的把自己的本机地址设置为和目的地址相同,以便于收到应答信号。 以下是测试结果,能正常收到数据。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1362 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1359 浏览 1 评论
779 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
561 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1391 浏览 2 评论
1756浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
483浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
417浏览 3评论
409浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
388浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-27 18:47 , Processed in 0.827660 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号