智能车制作

 找回密码
 注册

扫一扫,访问微社区

12
返回列表 发新帖
打印 上一主题 下一主题

nrf24l01不能读写寄存器。。。求大神相助

[复制链接]

29

主题

598

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3536

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

威望
1932
贡献
834
兑换币
199
注册时间
2012-2-5
在线时间
385 小时
毕业学校
保密
11#
发表于 2013-4-26 21:48:36 | 只看该作者
好的
回复 支持 反对

使用道具 举报

4

主题

203

帖子

0

精华

常驻嘉宾

我也有头衔

Rank: 8Rank: 8

积分
3354
威望
1835
贡献
891
兑换币
713
注册时间
2013-9-10
在线时间
314 小时
毕业学校
浙江大学
12#
发表于 2013-9-23 08:52:09 | 只看该作者
/*SPI*/
byte SPI_R_byte(byte reg)
{
        byte reg_value;
        CSN=0;//SPI片选
        SPI_RW(reg);//写入地址
        reg_value=SPI_RW(0);//读取寄存器的值
        CSN=1;
        return reg_value;//返回读取的值
}
别的不说 这一段有问题
读取寄存器应该写0xFF :
reg_value=SPI_RW(0xFF); //你回去改一下吧
然后 送你一段检测24L01的函数:
u8 NRF24L01_Check(void)
{
        u8 buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5};
        u8 i;
        SPIx_SetSpeed(SPI_SPEED_8); //spi速度为9Mhz(24L01的最大SPI时钟为10Mhz)
        NRF24L01_Write_Buf(WRITE_REG+TX_ADDR,buf,5);//写入5个字节的地址.
        NRF24L01_Read_Buf(TX_ADDR,buf,5); //读出写入的地址
        for(i=0;i<5;i++)if(buf[i]!=0XA5)break;
        if(i!=5)return 1;//检测24L01错误
        return 0;                 //检测到24L01
}
自己改下函数名吧 相信你没问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-10-2 14:24 , Processed in 0.038570 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表