完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,我正在尝试用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部分。也许我遗漏了一些小东西,但是请帮助我。谢谢。
|
|
相关推荐
3个回答
|
|
您的测试代码与您的注释不匹配……您能用范围检查这些行吗?
|
|
|
|
你好,达里奥,谢谢你的回复。你能详细介绍一下你的评论吗?我不太清楚你说的是什么。谢谢。
|
|
|
|
这一个,我的意思是:SPIXRW(0x20);我正在写注册0x00。
|
|
|
|
只有小组成员才能发言,加入小组>>
5248 浏览 9 评论
2037 浏览 8 评论
1957 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3218 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2265 浏览 5 评论
788浏览 1评论
679浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
608浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
685浏览 0评论
582浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 04:15 , Processed in 1.380795 second(s), Total 84, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号