首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

nRf24L01芯片在MTK60D平台上的调试有关问题

2013-12-06 
nRf24L01芯片在MTK60D平台上的调试问题网上查到的关于2.4g芯片nrf24l01的程序相关的都是各种单片机上做的,

nRf24L01芯片在MTK60D平台上的调试问题
    网上查到的关于2.4g芯片nrf24l01的程序相关的都是各种单片机上做的,现在我在MTK平台上利用几个GPIO口模拟spi,然后与nrf24l01进行通信。
    GPIO模拟spi后,进行发送端的调试基本按照这位仁兄的意见来调试的:http://hi.baidu.com/liuhuanstudio/item/3ad54509d0d522c52f4c6ba1
    最后是我遇到的问题和现象:
    
    通过spi设置的配置参数和接收端完全一样:
    SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);    // 写本地地址        
    SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 写接收端地址
    SPI_RW_Reg(WRITE_REG + EN_AA, 0x00);       
    SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x00); 
    SPI_RW_Reg(WRITE_REG + SETUP_RETR,0x00);
    SPI_RW_Reg(WRITE_REG + RF_CH, 5);
    SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);
    SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);

    配置好后,将CE拉高,延时启动发射,发送完数据读取STATUS寄存器是0x2e,  也就是说发送成功了
    FIFO_STATUS的值0x11;发送完后,自然是空的。
    但是接收端确收不到任何数据,但可以确定的是接收端是个 单片机+nrf24l01,和另外同样配置的单片互相收发确认过没问题,也就是说,MTK做的这个发送端虽然提示发送成功,但并没有发出来,不知道为什么。
    gpio模拟有问题么?能够正常的和nrf24l01进行设置参数,然后读取出来,说明读写没问题,spi通讯没问题吧?
    启动发射后,读取STATUS寄存器为0x2e不代表发送成功?
    单片机上可以,MTK上不行,难道和硬件平台有关?
    请大家指教,谢谢!

最后,程序没什么问题,可参考网上别人的总结,不过是在单片机上做的:http://wenku.baidu.com/view/45d4ba90dd88d0d233d46a41.html
[解决办法]
1.看一下电压是否满足需要(这个很重要)

2.这个方法你试一下:
我看你的 SPI_RW_Reg(WRITE_REG + EN_AA, 0x00); 没有使用自动应答,可以把发送端和接收端的自动应答打开,自动应答由硬件自动完成。

发送端发送数据后,如果发送端接收到了接收端的应答信号,TX_DS才会置1;如果没有应答信号,发送端会调用自动重传(SETUP_RETR可设置),直到达到设定的重传次数为止。

查看最终的结果(开自动应答):
如果TX_DS=1,说明发送成功,并且接收端回送了应答信号;
如果TX_DS=0,说明发送失败,接收端无响应;
如果开了自动重传,可看MAX_RT的值;
[解决办法]
接收端EN_AA  需要打开对应的通道 bit0-bit6对应通道0-5  如通道0为0x01  通道1为0x02
      EN_RXADDR也需要使能通道  方法同上

热点排行