OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4926|回复: 8

求助。!!stm32连nrf24l01+ 检测不到无线模块。。。。

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2012-7-5
在线时间
0 小时
发表于 2012-7-5 14:32:07 | 显示全部楼层 |阅读模式
<p> 硬件SPI和模拟SPI都试过了。。。都不行&nbsp; 硬件SPI的话MOSI和MISO管脚都没有波形&nbsp; 模拟的话MOSI有波形&nbsp; MISO没有。。。<br />
这是为神马为神马啊。。。。。。&nbsp; 有木有人能帮我看一下啊。。。我快崩溃了。。。。<br />
模拟的代码如下:<br />
#define MISO&nbsp;&nbsp;&nbsp;&nbsp; GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_1)</p>
<p>#define SCLK_H&nbsp;&nbsp;&nbsp; GPIO_SetBits(GPIOA, GPIO_Pin_5)<br />
#define SCLK_L&nbsp;&nbsp;&nbsp; GPIO_ResetBits(GPIOA, GPIO_Pin_5)<br />
#define MOSI_H&nbsp; GPIO_SetBits(GPIOB, GPIO_Pin_1)<br />
#define MOSI_L&nbsp; GPIO_ResetBits(GPIOB, GPIO_Pin_1)<br />
<br />
void SPI_NRF_Init(void)<br />
{<br />
&nbsp; GPIO_InitTypeDef GPIO_InitStructure;<br />
&nbsp; // 定义SCK<br />
&nbsp; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 ;<br />
&nbsp; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />
&nbsp; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;<br />
&nbsp; GPIO_Init(GPIOA, &amp;GPIO_InitStructure);<br />
&nbsp;&nbsp;//定义MOSI<br />
&nbsp; GPIO_InitStructure.GPIO_Pin =&nbsp; GPIO_Pin_1;<br />
&nbsp; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />
&nbsp; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;<br />
&nbsp; GPIO_Init(GPIOB, &amp;GPIO_InitStructure);<br />
&nbsp;//MISO引脚<br />
&nbsp;GPIO_InitStructure.GPIO_Pin =&nbsp; GPIO_Pin_1;<br />
&nbsp; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />
&nbsp; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;<br />
&nbsp;&nbsp;GPIO_Init(GPIOC, &amp;GPIO_InitStructure);&nbsp;<br />
&nbsp;GPIO_SetBits(GPIOC, GPIO_Pin_1);<br />
&nbsp; <br />
&nbsp;//定义NSS引脚 和CE引脚<br />
&nbsp; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_1;<br />
&nbsp; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />
&nbsp; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;<br />
&nbsp; GPIO_Init(GPIOA, &amp;GPIO_InitStructure);<br />
&nbsp; //定义NRF的IRQ引脚<br />
&nbsp; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;<br />
&nbsp; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />
&nbsp; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;<br />
&nbsp; GPIO_Init(GPIOA, &amp;GPIO_InitStructure);<br />
&nbsp;<br />
&nbsp;SCLK_L;<br />
}<br />
<br />
u8 NRF_Check(void)&nbsp;&nbsp;&nbsp; <br />
{&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; u8 buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; u8 i;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; /*写入5个字节的地址.&nbsp; */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; SPI_NRF_WriteBuf(NRF_WRITE_REG+TX_ADDR,buf,5);&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; /*读出写入的地址 */&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; SPI_NRF_ReadBuf(TX_ADDR,buf,5);&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; /*比较*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;5;i++)&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(buf!=0XA5)&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; if(i!=5)&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp; GPIO_SetBits(GPIOG, GPIO_Pin_2);<br />
&nbsp;&nbsp;&nbsp; return 1; <br />
&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //MCU与NRF未连接<br />
&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp; GPIO_SetBits(GPIOG, GPIO_Pin_3);<br />
&nbsp;&nbsp;&nbsp; return 0 ; <br />
&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //MCU与NRF正常连接<br />
}<br />
<br />
u8 SPI_NRF_WriteBuf(u8 reg ,u8 *pBuf,u8 bytes)&nbsp;&nbsp;&nbsp; <br />
{&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; u8 status,byte_cnt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; /*置低CSN?使能SPI传输*/&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; SPI_NRF_CSN_LOW();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; /*发送寄存器号*/&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; status = SPI_NRF_RW(reg);&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; /*向缓冲区写入数据*/&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; for(byte_cnt=0;byte_cnt&lt;bytes;byte_cnt++)&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SPI_NRF_RW(*pBuf++);&nbsp;&nbsp;&nbsp; //写数据到缓冲区&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; /*CSN拉高?完成*/&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; SPI_NRF_CSN_HIGH();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; return (status);&nbsp;&nbsp;&nbsp; //返回NRF24L01的状态&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>}&nbsp;&nbsp; <br />
<br />
u8 SPI_NRF_ReadBuf(u8 reg ,u8 *pBuf,u8 bytes)&nbsp;&nbsp;&nbsp; <br />
{&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; u8 status,byte_cnt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; /*置低CSN?使能SPI传输*/&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; SPI_NRF_CSN_LOW();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; /*发送寄存器号*/&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; status = SPI_NRF_RW(reg);&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; /*从缓冲区读出数据*/&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; for(byte_cnt=0;byte_cnt&lt;bytes;byte_cnt++)&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pBuf[byte_cnt]=SPI_NRF_RW(0XFF);//读出数据&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; /*CSN拉高?完成*/&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; SPI_NRF_CSN_HIGH();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; return (status);&nbsp;&nbsp;&nbsp; //返回NRF24L01的状态&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
}&nbsp; <br />
<br />
u8 SPI_NRF_RW(u8 dat) <br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u8 i,temp;<br />
&nbsp;&nbsp;&nbsp; temp=dat;</p>
<p><br />
&nbsp;&nbsp;&nbsp; for (i=0;i&lt;8;i++)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((temp&amp;0x80)==0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOSI_L;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOSI_H;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dat=(dat&lt;&lt;1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp=dat;</p>
<p><br />
&nbsp;&nbsp;&nbsp;&nbsp; SCLK_H;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; dat |=MISO;<br />
&nbsp;&nbsp;&nbsp; &nbsp;Delay(10);<br />
&nbsp;&nbsp;&nbsp;&nbsp; SCLK_L;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp; &nbsp;&nbsp;&nbsp;Delay(10);<br />
&nbsp; }</p>
<p>&nbsp;&nbsp;return (dat);<br />
}<br />
</p>
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-7-5 14:34:16 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2012-7-5
在线时间
0 小时
 楼主| 发表于 2012-7-5 14:36:01 | 显示全部楼层
回复【2楼】正点原子:
<br>---------------------------------
<br>2天半了。。。再调不出来就做不完了。。做不完就不能放假了。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-7-5 14:40:50 | 显示全部楼层
呵呵,直接在我们开发板上测试一下就OK了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2012-7-5
在线时间
0 小时
 楼主| 发表于 2012-7-5 14:42:55 | 显示全部楼层
回复【4楼】正点原子:
<br>---------------------------------
<br>学校实验室资源有限。。。。。。。啊。。好悲伤。。。
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2012-7-5
在线时间
0 小时
 楼主| 发表于 2012-7-5 14:51:40 | 显示全部楼层
回复【4楼】正点原子:
<br>---------------------------------
<br>我想问一下&nbsp;&nbsp;MISO没波形意味着什么问题。。。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2012-12-4
在线时间
6 小时
发表于 2012-12-4 10:55:37 | 显示全部楼层
找到原因了吗
<br>引脚配置有问题吧
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-12-4 13:35:34 | 显示全部楼层
&nbsp;回复【6楼】nash:
<br>---------------------------------
<br>
<br>意味着没收到从机发过来的数据。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
375
金钱
375
注册时间
2016-9-26
在线时间
59 小时
发表于 2017-1-1 20:26:24 | 显示全部楼层
我擦擦擦擦,我的同样问题,然后果然是硬件出了问题。。。时钟线和地短路了。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 08:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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