发 帖  
原厂入驻New
[问答] PIC24无线电发送器和接收器模块
170 PIC24 无线电
分享
你好,我正在尝试用PIC24FJ64GA002和nRF24l01+无线电收发模块构建无线电发射机和接收机模块。我想我在配置SPI和使用spi_read_write函数方面有问题。因为,当我只向nRF24L01+的寄存器写入某个值并尝试rEAD是我写的一个值,我接收的值不是我写的值。我只是收到一些随机或不合理的价值。如果可能的话,你能帮我解决我的问题吗?下面是我在PIC24上配置SPI的代码:void spi_init(){SPI1CON1=0;//SPI1CON1寄存器设置SPI1CON1bits.DISSCK=0;//内部串行时钟启用SPI1CON1bits.DISSDO=0;//SDOx pin由模块SPI1CON1bits.MODE16=0控制;//通信是全字(8位)的s)SPI1CON1bits.MSTEN=1;//Master模式启用的SPI1CON1bits.SMP=0;//Input数据在数据输出时间SPI1CON1bits.CKE=1结束时进行采样;//串行输出数据在从.//空闲时钟状态转换为活动时钟状态SPI1CON1bits.CKP=0;//cl的空闲状态ock是低电平;//活动状态是高电平SPI1CON1bits.SPRE=0b111;//辅助时钟1:1SPI1CON1bits.PPRE=0b01;//主时钟1:16SPI1CON2=0;SPI1STAT=0;SPI1STATbits.SISEL=0b101;//IF设置为上位移位时是完整的。SPI1STATbits.SPIEN=1;//Enable SPI moduleIpc2bits.SPF1IP=6;//为spi//中断控制器设置IFS0bits.SPI1IF=0;//清除中断标志IEC0bits.SPI1IE=0;//禁用中断}这是我的Spi读写函数:uint8_t SPI_RW(uint8_t_RW)t字节){uint8_t data_in;SPI1BUF=byte;//通过SPI向发射机发送代码,而(_SPI1IF==0);_SPI1IF=0;//重置标志变量data_in=SPI1BUF;//收到的数据_in;}这是我的测试用例:SPI_RW(0x20);我写信寄存器0x00SPI_RW(0x2e);值I我正在写寄存器0x00SPI_RW(0x00);我正在读来自0x00寄存器data=SPI_RW(0xff)的值;发送一些垃圾值以从寄存器0x00获得值,供参考:无线电数据表:https://www.spark..com/datasheets/Components/SMD/nRF24L01Pluss_Prelimi._._Specification_v1_0您可以在这里找到命令行、寄存器和状态。PIC24:http://ww1.micro..com/downloads/en/DeviceDoc/39881e.pdfif搜索SPI的数据表,您可以找到spi部分。也许我遗漏了一些小东西,但是请帮助我。谢谢。
0
2020-3-24 10:12:17   评论 分享淘帖 邀请回答
3个回答
您的测试代码与您的注释不匹配……您能用范围检查这些行吗?
2020-3-24 10:27:21 评论

举报

你好,达里奥,谢谢你的回复。你能详细介绍一下你的评论吗?我不太清楚你说的是什么。谢谢。
2020-3-24 10:35:41 评论

举报

这一个,我的意思是:SPIXRW(0x20);我正在写注册0x00。
2020-3-24 10:49:56 评论

举报

只有小组成员才能发言,加入小组>>

113个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

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