OpenEdv-开源电子网

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

奇怪的NRF24L01无线通信问题

[复制链接]

19

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2013-9-3
在线时间
7 小时
发表于 2013-9-3 20:41:08 | 显示全部楼层 |阅读模式
我用的是mini开发板,然后用原子的程序,和自己的另一个插有NRF24L01的板子通信,板子同样用的原子的程序,改的IO口后通信成功。可后来我把自己的板子上的程序,<br />
注释掉LCD_INT 后就不能通信了。。。。然后依次查找LCD_INT里面的语句,发现只有这句作怪:<br />
<div>GPIO_InitTypeDef GPIO_InitStructure;</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span>RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB, ENABLE);&nbsp;</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span> GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;<span class="Apple-tab-span" style="white-space:pre;">        </span>// &nbsp;</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span>GPIO_Init(GPIOB, &amp;GPIO_InitStructure); //GPIOB</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span>//GPIO_WriteBit(GPIOC,GPIO_Pin_All,Bit_SET);&nbsp;<center>

</center><br />
</div>
<div><span class="Apple-tab-span" style="white-space:pre;">        </span>GPIO_SetBits(GPIOB,GPIO_Pin_All);<br />
<br />
<br />
就是把B口的所有IO都打开了吧,为什么要这样啊<br />
<br />
<br />
<br />
<br />
</div>
<br />
<br />
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2013-9-3
在线时间
7 小时
 楼主| 发表于 2013-9-3 20:43:46 | 显示全部楼层
回复 支持 反对

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2013-9-3 21:14:41 | 显示全部楼层
液晶的数据线
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-9-3 21:47:46 | 显示全部楼层
你有没有用到PORTB的IO口?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2013-9-3
在线时间
7 小时
 楼主| 发表于 2013-9-3 21:59:18 | 显示全部楼层
回复【4楼】正点原子:
<br>---------------------------------
<br>用到了,老师看上面的截图
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-9-3 22:03:35 | 显示全部楼层
IRQ,CE用到了PB0和PB2,这两个你在NRF初始化函数里面,设置了么? <br />
<br />
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2013-9-3
在线时间
7 小时
 楼主| 发表于 2013-9-3 22:07:58 | 显示全部楼层
回复【6楼】正点原子:
<br>---------------------------------
<br>嗯都设置了,就是把老师的程序改了改IO口而以
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-9-3 22:10:29 | 显示全部楼层
那检查IO口有没有改对了,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2013-9-3
在线时间
7 小时
 楼主| 发表于 2013-9-3 22:12:49 | 显示全部楼层
回复【8楼】正点原子:
<br>---------------------------------
<br>对了啊,要不然怎么会通信呢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-9-3 22:16:55 | 显示全部楼层
那我看不出这句有什么影响,你仿真看一下这句对CE的影响吧,IRQ无关痛痒,CE倒是会影响到NRF的收发。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-9-3 22:17:21 | 显示全部楼层
对比一下不注释掉,和注释掉,CE电平的变化情况,是不是有什么不同?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-1-3
在线时间
0 小时
发表于 2014-3-10 22:57:49 | 显示全部楼层
回复【11楼】正点原子:
<br>---------------------------------
<br>原子大哥,SPI的初始化怎么在SPI.c和24101.c各初始化了一次呢?还是不同的初始化
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-3-11 15:24:44 | 显示全部楼层
回复【12楼】jidian0177:
<br>---------------------------------
<br>只有一次啊。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-1-3
在线时间
0 小时
发表于 2014-3-12 09:57:53 | 显示全部楼层
回复【13楼】正点原子:
<br>---------------------------------
<br>在SPI.c中有以下程序:
<br>void&nbsp;SPI2_Init(void)
<br>{
<br>&nbsp;        GPIO_InitTypeDef&nbsp;GPIO_InitStructure;
<br>&nbsp;&nbsp;        SPI_InitTypeDef&nbsp;&nbsp;SPI_InitStructure;
<br>
<br>        RCC_APB2PeriphClockCmd(        RCC_APB2Periph_GPIOB,&nbsp;ENABLE&nbsp;);//PORTB时钟使能&nbsp;
<br>        RCC_APB1PeriphClockCmd(        RCC_APB1Periph_SPI2,&nbsp;&nbsp;ENABLE&nbsp;);//SPI2时钟使能&nbsp;       
<br>&nbsp;
<br>        GPIO_InitStructure.GPIO_Pin&nbsp;=&nbsp;GPIO_Pin_13&nbsp;|&nbsp;GPIO_Pin_14&nbsp;|&nbsp;GPIO_Pin_15;
<br>        GPIO_InitStructure.GPIO_Mode&nbsp;=&nbsp;GPIO_Mode_AF_PP;&nbsp;&nbsp;//PB13/14/15复用推挽输出&nbsp;
<br>        GPIO_InitStructure.GPIO_Speed&nbsp;=&nbsp;GPIO_Speed_50MHz;
<br>        GPIO_Init(GPIOB,&nbsp;&GPIO_InitStructure);//初始化GPIOB
<br>
<br>&nbsp;        GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);&nbsp;&nbsp;//PB13/14/15上拉
<br>
<br>        SPI_InitStructure.SPI_Direction&nbsp;=&nbsp;SPI_Direction_2Lines_FullDuplex;&nbsp;&nbsp;//设置SPI单向或者双向的数据模式:SPI设置为双线双向全双工
<br>        SPI_InitStructure.SPI_Mode&nbsp;=&nbsp;SPI_Mode_Master;                //设置SPI工作模式:设置为主SPI
<br>        SPI_InitStructure.SPI_DataSize&nbsp;=&nbsp;SPI_DataSize_8b;                //设置SPI的数据大小:SPI发送接收8位帧结构
<br>        SPI_InitStructure.SPI_CPOL&nbsp;=&nbsp;SPI_CPOL_High;                //串行同步时钟的空闲状态为高电平
<br>        SPI_InitStructure.SPI_CPHA&nbsp;=&nbsp;SPI_CPHA_2Edge;        //串行同步时钟的第二个跳变沿(上升或下降)数据被采样
<br>        SPI_InitStructure.SPI_NSS&nbsp;=&nbsp;SPI_NSS_Soft;                //NSS信号由硬件(NSS管脚)还是软件(使用SSI位)管理:内部NSS信号有SSI位控制
<br>        SPI_InitStructure.SPI_BaudRatePrescaler&nbsp;=&nbsp;SPI_BaudRatePrescaler_256;                //定义波特率预分频的值:波特率预分频值为256
<br>        SPI_InitStructure.SPI_FirstBit&nbsp;=&nbsp;SPI_FirstBit_MSB;        //指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始
<br>        SPI_InitStructure.SPI_CRCPolynomial&nbsp;=&nbsp;7;        //CRC值计算的多项式
<br>        SPI_Init(SPI2,&nbsp;&SPI_InitStructure);&nbsp;&nbsp;//根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器
<br>&nbsp;
<br>        SPI_Cmd(SPI2,&nbsp;ENABLE);&nbsp;//使能SPI外设
<br>       
<br>        SPI2_ReadWriteByte(0xff);//启动传输                &nbsp;
<br>&nbsp;}&nbsp;&nbsp;&nbsp;
<br>
<br>
<br>在24l01.c中有以下程序:
<br>SPI2_Init();&nbsp;&nbsp;&nbsp;&nbsp;                //初始化SPI        这儿是干啥?&nbsp;
<br>&nbsp;
<br>        SPI_Cmd(SPI2,&nbsp;DISABLE);&nbsp;//&nbsp;SPI外设不使能
<br>
<br>        SPI_InitStructure.SPI_Direction&nbsp;=&nbsp;SPI_Direction_2Lines_FullDuplex;&nbsp;&nbsp;//SPI设置为双线双向全双工
<br>        SPI_InitStructure.SPI_Mode&nbsp;=&nbsp;SPI_Mode_Master;                //SPI主机
<br>&nbsp;&nbsp;&nbsp;&nbsp;SPI_InitStructure.SPI_DataSize&nbsp;=&nbsp;SPI_DataSize_8b;                //发送接收8位帧结构
<br>        SPI_InitStructure.SPI_CPOL&nbsp;=&nbsp;SPI_CPOL_Low;                //时钟悬空低
<br>        SPI_InitStructure.SPI_CPHA&nbsp;=&nbsp;SPI_CPHA_1Edge;        //数据捕获于第1个时钟沿
<br>        SPI_InitStructure.SPI_NSS&nbsp;=&nbsp;SPI_NSS_Soft;                //NSS信号由软件控制
<br>        SPI_InitStructure.SPI_BaudRatePrescaler&nbsp;=&nbsp;SPI_BaudRatePrescaler_16;                //定义波特率预分频的值:波特率预分频值为16
<br>        SPI_InitStructure.SPI_FirstBit&nbsp;=&nbsp;SPI_FirstBit_MSB;        //数据传输从MSB位开始
<br>        SPI_InitStructure.SPI_CRCPolynomial&nbsp;=&nbsp;7;        //CRC值计算的多项式
<br>        SPI_Init(SPI2,&nbsp;&SPI_InitStructure);&nbsp;&nbsp;//根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器
<br>&nbsp;
<br>        SPI_Cmd(SPI2,&nbsp;ENABLE);&nbsp;//使能SPI外设
<br>
<br>不算是两次SPI的初始化么?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-3-12 11:17:44 | 显示全部楼层
回复【14楼】jidian0177:
<br>---------------------------------
<br>哦,这是根据NRF的特性,修改部分配置,spi.c一般是针对SD卡/W25Qxx的初始化,而NRF的初始化比较特殊,需要进行部分修改,所以先spi.c初始化一下,再对部分参数进行修改。你看寄存器的就比较明了了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-1-3
在线时间
0 小时
发表于 2014-3-12 11:48:24 | 显示全部楼层
回复【15楼】正点原子:
<br>---------------------------------
<br>哦,那不要SPI.c直接在NRF的初始化中对SPI配置可以么?
<br>
<br>另外,在24101中的初始化,这句话&nbsp;&nbsp;&nbsp;GPIO_ResetBits(GPIOG,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8);//PG6,7,8上拉
<br>置零,怎么是上拉呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-3-13 23:58:06 | 显示全部楼层
回复【16楼】jidian0177:
<br>---------------------------------
<br>可以。
<br>这里注释有误&nbsp;...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-1-3
在线时间
0 小时
发表于 2014-3-22 11:42:31 | 显示全部楼层
回复【17楼】正点原子:
<br>---------------------------------
<br>原子大哥,我的检测环节需要半天才能检测到,有的时候检测不到,为何会这样呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-3-22 14:58:10 | 显示全部楼层
回复【18楼】jidian0177:
<br>---------------------------------
<br>这得慢慢查,先看电路有没有问题吧,是不是接触不好?
<br>然后看代码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 17:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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