打印
[复制链接]
楼主: suicune66
手机看帖
扫描二维码
随时随地手机跟帖
21
本帖最后由 aerwa 于 2016-3-20 12:01 编辑

不知道你用的是什么单片机, 支持位操作不, 这是我430的写读返回, 和你的不一样, 你一定要确认SPI 的写读返回单步仿真的时候 MISO的值要能返回出MOSI的值。


unchar SPI_RW(unchar byte)
{
        unsigned char bit_ctr;
      //  P1DIR&=~BIT1;
           for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
           {
                if((byte&0x80)==0X80)
                {
                  NRF_MOSI=1;
                }
                else NRF_MOSI=0;  // output 'uchar', MSB to MOSI
                byte = (byte << 1);           // // 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据
                NRF_SCK=1;                     // Set SCK high..
                if(NRF_MISO)       // 读MISO到byte最低位
                {
                  byte|= 0X01;
                }
               
                NRF_SCK=0;                              // ..then set SCK low again
           }
    return(byte);                             // return read uchar
}

使用特权

评论回复
22
aerwa| | 2016-3-20 14:04 | 只看该作者
郁闷啊, 还是接收不到, 发送可以, 我重测了 收的校园门禁卡 的电流, 发现电流也很小, 我0DB发送 万用表检测跳变最大是0.47mA, 请问这是发送出来了吧。
接收死活收不到数据, STATUS 寄存器 一直是没有RX 接收标志。
我有个疑问的是 接收模式时,我不管是否接收到,  隔断时间就去读 接收寄存器里的数据, 里面的数据不会清零吧。

使用特权

评论回复
23
JY-DX-JY| | 2016-3-20 16:11 | 只看该作者
suicune66 发表于 2016-3-20 11:49
嗯,我就是用的读写的,写进去一个读出来,但是写的和读的不是一个数……所以郁闷…… ...

你要看寄存器说明,可能有的位是只读的。

使用特权

评论回复
24
NE5532| | 2016-3-21 10:45 | 只看该作者
先把SPI接口调通了,再去想发射接收,SPI可以尝试读芯片版本寄存器,直到正确。发射接收调试需要射频仪器,信号发生器和频谱仪才好调,**长征才迈出第一步啊。

使用特权

评论回复
25
MJM_WSY| | 2016-3-21 11:06 | 只看该作者
suicune66 发表于 2016-3-20 11:50
好的,那我就换成5V供电,那5V的话需不需要接电阻限流?

NRF24L01的IO口支持5V,以前碰到过STC单片机3.3V发射不成功的问题。换了5v的单片机  就好了

使用特权

评论回复
26
suicune66|  楼主 | 2016-3-21 11:24 | 只看该作者
JY-DX-JY 发表于 2016-3-20 16:11
你要看寄存器说明,可能有的位是只读的。

哦,是看NRF24L01的寄存器么?

使用特权

评论回复
27
suicune66|  楼主 | 2016-3-21 11:25 | 只看该作者
MJM_WSY 发表于 2016-3-21 11:06
NRF24L01的IO口支持5V,以前碰到过STC单片机3.3V发射不成功的问题。换了5v的单片机  就好了 ...

好滴,那我就直接给他5V不加电阻,谢谢哈

使用特权

评论回复
28
suicune66|  楼主 | 2016-3-21 11:26 | 只看该作者
本帖最后由 suicune66 于 2016-4-2 18:19 编辑
NE5532 发表于 2016-3-21 10:45
先把SPI接口调通了,再去想发射接收,SPI可以尝试读芯片版本寄存器,直到正确。发射接收调试需要射频仪器, ...

对,我就是这么想的

使用特权

评论回复
29
JY-DX-JY| | 2016-3-21 11:26 | 只看该作者
suicune66 发表于 2016-3-21 11:24
哦,是看NRF24L01的寄存器么?

是啊。如果哪一位是只读的,那你写进去有可能和读出的不一样。

使用特权

评论回复
30
suicune66|  楼主 | 2016-3-21 12:04 | 只看该作者
JY-DX-JY 发表于 2016-3-21 11:26
是啊。如果哪一位是只读的,那你写进去有可能和读出的不一样。

好的,多谢指点

使用特权

评论回复
31
NE5532| | 2016-3-21 13:44 | 只看该作者
你这样调是调不出来的,底层最好自己写,这个跟无线无关,只关单片机的事。写进去要读出来看等于啥,不能一个简单的等不等,要分析读出来的数据的规律,才找得到问题。

使用特权

评论回复
评论
suicune66 2016-3-22 19:05 回复TA
非常感谢 
32
suicune66|  楼主 | 2016-3-21 14:00 | 只看该作者
NE5532 发表于 2016-3-21 13:44
你这样调是调不出来的,底层最好自己写,这个跟无线无关,只关单片机的事。写进去要读出来看等于啥,不能一 ...

哦,那我可不可以这样,就是拿两片单片机,一片读,一片写,然后试试底层?

使用特权

评论回复
33
suicune66|  楼主 | 2016-3-21 14:02 | 只看该作者
本帖最后由 suicune66 于 2016-4-2 18:16 编辑
aerwa 发表于 2016-3-20 12:00
不知道你用的是什么单片机, 支持位操作不, 这是我430的写读返回, 和你的不一样, 你一定要确认SPI 的写 ...

好的, 我用你的这个试试,谢谢哈

使用特权

评论回复
34
NE5532| | 2016-3-21 14:10 | 只看该作者
suicune66 发表于 2016-3-21 14:00
哦,那我可不可以这样,就是拿两片单片机,一片读,一片写,然后试试底层? ...

调试SPI,一片单片机就可以了,把MOSI和MOSI短接就可以了,当然不要焊从机芯片。

使用特权

评论回复
35
suicune66|  楼主 | 2016-3-21 17:17 | 只看该作者
本帖最后由 suicune66 于 2016-4-2 18:16 编辑
NE5532 发表于 2016-3-21 14:10
调试SPI,一片单片机就可以了,把MOSI和MOSI短接就可以了,当然不要焊从机芯片。 ...

使用特权

评论回复
36
JY-DX-JY| | 2016-3-21 17:34 | 只看该作者
自发自收吧

使用特权

评论回复
37
suicune66|  楼主 | 2016-3-21 19:14 | 只看该作者
本帖最后由 suicune66 于 2016-4-2 18:20 编辑
好的

使用特权

评论回复
38
JY-DX-JY| | 2016-3-21 19:16 | 只看该作者
你把那两个脚短接以后,一发送数据自己就收到了。

使用特权

评论回复
39
suicune66|  楼主 | 2016-3-21 20:07 | 只看该作者
本帖最后由 suicune66 于 2016-4-2 18:17 编辑
JY-DX-JY 发表于 2016-3-21 19:16
你把那两个脚短接以后,一发送数据自己就收到了。


1111.png (463.84 KB )

1111.png

使用特权

评论回复
40
suicune66|  楼主 | 2016-3-21 20:30 | 只看该作者
本帖最后由 suicune66 于 2016-4-2 18:17 编辑
JY-DX-JY 发表于 2016-3-21 19:16
你把那两个脚短接以后,一发送数据自己就收到了。

嗯好的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则