OpenEdv-开源电子网

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

求助,nrf24l01问题

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2012-10-30
在线时间
0 小时
发表于 2013-8-31 15:18:39 | 显示全部楼层 |阅读模式
高手帮帮忙,我自己的板子上有nrf24l01芯片,但是现在和原子哥的开发板上面的nrf24l01通信无法进行,开始的硬件检查不能通过,经示波器测试,控制器的SPI引脚输出波形,但是就是不能定位到问题原因。<br />
听原子哥说可能是SPIS的初始化有问题。SPI的初始化代码(我用的是STM32F4的芯片)如下,检查很多次了,应该没问题的,<br />
<div>void SPI1_Init(u8 SpeedSet)<span class="Apple-tab-span" style="white-space:pre;">        </span> &nbsp;//nrf24l01</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span>{</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>GPIO_InitTypeDef GPIO_InitStructure;</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>SPI_InitTypeDef &nbsp;SPI_InitStructure;</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span> &nbsp;</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); <span class="Apple-tab-span" style="white-space:pre;">        </span> &nbsp;//使能IO口时钟</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE );<span class="Apple-tab-span" style="white-space:pre;">        </span> &nbsp;//APB2</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span></div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>GPIO_PinAFConfig(GPIOA, GPIO_PinSource5|GPIO_PinSource6|GPIO_PinSource7, GPIO_AF_SPI1);<span class="Apple-tab-span" style="white-space:pre;">        </span> //启动复用功能</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span></div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; &nbsp; //PA5(SCK)、PA6(MISO)、PA7(MOSI)</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span> &nbsp;<span class="Apple-tab-span" style="white-space:pre;">        </span>GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span> &nbsp;<span class="Apple-tab-span" style="white-space:pre;">        </span>GPIO_InitStructure.GPIO_PuPd &nbsp;= GPIO_PuPd_NOPULL;</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span> &nbsp;<span class="Apple-tab-span" style="white-space:pre;">        </span>GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;</div>
<div>&nbsp; <span class="Apple-tab-span" style="white-space:pre;">                </span>GPIO_Init(GPIOA, &amp;GPIO_InitStructure);</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span>&nbsp;</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 ;<span class="Apple-tab-span" style="white-space:pre;">        </span>//PA4(CS)<span class="Apple-tab-span" style="white-space:pre;">                </span></div>
<div>&nbsp; <span class="Apple-tab-span" style="white-space:pre;">        </span> &nbsp; &nbsp;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;<span class="Apple-tab-span" style="white-space:pre;">                </span> //输出</div>
<div>&nbsp; <span class="Apple-tab-span" style="white-space:pre;">        </span> &nbsp; &nbsp;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;<span class="Apple-tab-span" style="white-space:pre;">                </span> //推挽</div>
<div>&nbsp; <span class="Apple-tab-span" style="white-space:pre;">        </span> &nbsp; &nbsp;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<span class="Apple-tab-span" style="white-space:pre;">        </span> //50Hz</div>
<div>&nbsp; &nbsp;<span class="Apple-tab-span" style="white-space:pre;">        </span> &nbsp; &nbsp;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;<span class="Apple-tab-span" style="white-space:pre;">        </span> //上拉</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>GPIO_Init(GPIOA, &amp;GPIO_InitStructure);</div>
<div><br />
</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span> <span class="Apple-tab-span" style="white-space:pre;">        </span>GPIO_SetBits(GPIOA,GPIO_Pin_4);<span class="Apple-tab-span" style="white-space:pre;">        </span> &nbsp;//强制输出高电平,不选中芯片</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span></div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span> &nbsp; &nbsp;SPI_I2S_DeInit(SPI1);</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; &nbsp;//设置SPI单向或者双向的数据模式:SPI设置为双线双向全双工</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>SPI_InitStructure.SPI_Mode = SPI_Mode_Master;<span class="Apple-tab-span" style="white-space:pre;">                </span>//设置SPI工作模式:设置为主SPI</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;<span class="Apple-tab-span" style="white-space:pre;">                </span>//设置SPI的数据大小:SPI发送接收8位帧结构</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;<span class="Apple-tab-span" style="white-space:pre;">                </span>//选择了串行时钟的稳态:时钟悬空高</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;<span class="Apple-tab-span" style="white-space:pre;">        </span>//数据捕获于第二个时钟沿</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;<span class="Apple-tab-span" style="white-space:pre;">                </span>//NSS信号由硬件(NSS管脚)还是软件(使用SSI位)管理:内部NSS信号由SSI位控制</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>SPI_InitStructure.SPI_BaudRatePrescaler = SpeedSet ;<span class="Apple-tab-span" style="white-space:pre;">                </span>//定义波特率预分频的值:波特率预分频值为256</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;<span class="Apple-tab-span" style="white-space:pre;">        </span>//指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>SPI_InitStructure.SPI_CRCPolynomial = 7;<span class="Apple-tab-span" style="white-space:pre;">        </span>//CRC值计算的多项式</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>SPI_Init(SPI1, &amp;SPI_InitStructure); &nbsp;//根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span>&nbsp;</div>
<div><span class="Apple-tab-span" style="white-space:pre;">                </span>SPI_Cmd(SPI1, ENABLE); //使能SPI外设</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span>}<br />
求助啊!!!会不会是nrf24l01芯片没有焊好啊!!!</div>
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2012-10-30
在线时间
0 小时
 楼主| 发表于 2013-8-31 15:19:59 | 显示全部楼层
回复【楼主位】chqingdy:
<br>---------------------------------
<br>望各位高手回复啊,
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2012-10-30
在线时间
0 小时
 楼主| 发表于 2013-9-4 10:43:28 | 显示全部楼层
回复【3楼】正点原子:
<br>---------------------------------
<br>先谢谢原子哥,但是改过来之后还是不行啊,经过示波器测试,发现SPI引脚的MOSI和CS有波形输出,但是MISO和SCK无波形,请问原子哥是怎么回事啊?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-9-4 11:45:21 | 显示全部楼层
回复【4楼】chqingdy:
<br>---------------------------------
<br>MOSI是发送的,MOSI有波形的时候,SCK肯定应该有波形才对。MISO则是接收的,如果NRF没有回应,就不会有波形。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2012-10-30
在线时间
0 小时
 楼主| 发表于 2013-9-17 11:00:57 | 显示全部楼层
回复【5楼】正点原子:
<br>---------------------------------
<br>谢谢原子哥,我的问题已经解决了!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 19:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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