完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
自己最近在做单片机采集通过无线传递上位机。。无线选用的是nrf24l01模块。。自己用的是stc89c52,用的5v转3V的转接板。已经跳了一个多礼拜。现在是一点进展都没有。有个学长用的是12系列单片机调试成功过,他在外地,告诉我主要是延时问题,尤其是状态转换的时间。请大家指教呀。。有同学用c52调试成功过么。。延时必须很精确么。。
|
|
相关推荐
10 个讨论
|
|
|
我用52实现了收发一体。延时只要参考数据文档,主要还是10us和130us,你这原因应该是是寄存器配置不对,另外可以在运行的同时查看下收发前后STATUS的值:
发送时:
可以通过读取STATUS的值来判断是哪个事件触发了中断,寄存器4、5、6位分别对应自动重发完成中断,数据发送完成中断,数据接收完成中断。也就是在之前的配置下,如果数据成功发送,STATUS的值应该为0x2e。这样就可以作为一个检测标准另外可以看FIFO_STATUS寄存器第5位的描述,发送缓冲器满标志:1为满,0为有可用空间;第4位的描述发送缓冲器空标志:1为空,0为有数据,同样可以看到接收缓冲器的对应标志。这样在数据发送成功后,发送寄存器当然应该是空的,接收缓冲因为在之前已经失能,所以也应该是空。也就是说成功发送之后的FIFO_STATUS寄存器值应该是0x11 接收: 接收数据,可以在接收方添加一个显示设备把数据直观的显示出来,去对照看是否正确。还可以用和发送方一样的方法:观察STATUS和FIFO_STATUS的值,对照寄存器描述。接收正确时STATUS的值应该是0x40。对于FIFO_STATUS的情况就多了些:因为数据宽度的不同也会造成寄存器的值不一样,24L01最大支持32字节宽度,就是说一次通讯最多可以传输32个字节的数据。在这种情况下,接收成功读数据之前寄存器值应该为0x12,读数据之后就会变成0x11;如果数据宽度定义的小于32字节,那么接收成功读数据之前寄存器值应该为0x10,读数据之后就会变成0x11。 |
|
|
|
|
|
|
|
|
我是利用卖家给的源程序,所以设置应该没问题的吧,但是无法通信,而且检查模块晶振不能起振呢,这会是什么情况呢 |
|
|
|
|
|
|
|
|
检查IO口定义,会不会定义错
|
|
|
|
|
|
|
|
|
这个是我用STC89C52跳出来的程序,复制上去直接能用,你把串口部分去掉,加上自己的就行,我现在是用C8050单片机调不出来,用的是硬件SPI,正在找原因中,不过这个程序是可以用的,我已经用它来做过一些项目了,希望可以帮到你,而且楼主以后可以深入研究一下这个芯片,给你一份该芯片的中文资料,把那是几个寄存器搞明白,很有用的。
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 16:26 , Processed in 0.957500 second(s), Total 66, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
27597