发新帖我要提问
123
返回列表
打印
[复制链接]
楼主: suicune66
手机看帖
扫描二维码
随时随地手机跟帖
41
suicune66|  楼主 | 2016-3-21 21:49 | 只看该作者 回帖奖励 |倒序浏览
本帖最后由 suicune66 于 2016-4-2 18:20 编辑
NE5532 发表于 2016-3-21 14:10
调试SPI,一片单片机就可以了,把MOSI和MOSI短接就可以了,当然不要焊从机芯片。 ...

大神,麻烦你看下我仿真的

使用特权

评论回复
42
JY-DX-JY| | 2016-3-22 08:17 | 只看该作者
suicune66 发表于 2016-3-21 20:07
我仿真了下,把RA2和RA4设置成MISO和MOSI,然后试了试SPI_RW那个低层SPI函数,然后写进去一个数据0x12, ...

你要判断sta是不是0x12

使用特权

评论回复
43
JY-DX-JY| | 2016-3-22 08:19 | 只看该作者
suicune66 发表于 2016-3-21 20:30
如果说我仿真没错的话,那问题就来了,我那天测的MOSI MISO SCK 和 CSN都是脉冲,如果仅是MISO SCK和CSN ...

这个不确定哎。

使用特权

评论回复
44
JY-DX-JY| | 2016-3-22 08:19 | 只看该作者
suicune66 发表于 2016-3-21 20:30
如果说我仿真没错的话,那问题就来了,我那天测的MOSI MISO SCK 和 CSN都是脉冲,如果仅是MISO SCK和CSN ...

这个不确定哎。

使用特权

评论回复
45
NE5532| | 2016-3-22 13:18 | 只看该作者
读芯片版本号等你能确定读出来数据的东西。

使用特权

评论回复
46
270382236| | 2016-3-22 13:56 | 只看该作者
楼主 你的2401+ 有可能是芯片本身有问题

使用特权

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

今天好了,非常感谢

使用特权

评论回复
48
suicune66|  楼主 | 2016-3-22 19:03 | 只看该作者
本帖最后由 suicune66 于 2016-4-2 18:15 编辑

今天好啦,感谢您的鼎力相助

使用特权

评论回复
49
suicune66|  楼主 | 2016-3-22 19:04 | 只看该作者
本帖最后由 suicune66 于 2016-4-2 18:15 编辑
NE5532 发表于 2016-3-21 13:44
你这样调是调不出来的,底层最好自己写,这个跟无线无关,只关单片机的事。写进去要读出来看等于啥,不能一 ...

今天好啦,感谢您的鼎力相助

使用特权

评论回复
50
NE5532| | 2016-3-23 08:46 | 只看该作者
不客气,后面无线的调试更困难,加油。

使用特权

评论回复
51
aerwa| | 2016-3-23 21:24 | 只看该作者
你的好了, 问题是我的问题现象很奇葩啊
请大家帮我分析下我的情况。
我的接收端程序用查询 STATUS 接收标志的话是 能反复收到主机广播的信息。

问题是我用中断的方式做接收的时候IRQ 拉低进中断时: sta=NRF24L01_Read_Reg(STATUS);   查询的标志竟然全部是00000000, 而且IRQ 脚一直就为低,

而且只能在主程序中Set_PTX_Receive()后接收到头一次, 信息也能收到, 问题是中断跑完后,IRQ 就不变高了。

#pragma vector=PORT2_VECTOR
__interrupt void port(void)
{     
  sta=NRF24L01_Read_Reg(STATUS);    // 读取状态寄存其来判断数据接收状况
       if(sta&RX_OK)                // 判断是否接收到数据
    {
      NRF_CE=0;            //SPI使能
      NRF24L01_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer
      SPI_RW(FLUSH_RX);//用于清空FIFO !!关键!!不然会出现意想不到的后果!!!大家记住!!
      }
    NRF24L01_Write_Reg(WRITE_REG+STATUS,sta);   //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志
     if((Rev_data_buf[0]==0x01)&(Rev_data_buf[1]==0x02)&(Rev_data_buf[2]==0x03)&(Rev_data_buf[3]==0x04)&(Rev_data_buf[4]==0x05))
   {
                NRF_LED=0;  delay(1000); NRF_LED=1;  delay(1000);  NRF_LED=0;  delay(1000);   NRF_LED=1;
   }
            Rev_data_buf=0;
             Set_PTX_Receive();
  P2IFG=0X00;
}

使用特权

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

本版积分规则