OpenEdv-开源电子网

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

NRF24L01的SPI1改为SPI2为什么实现不了,没有检测到模块

[复制链接]

2

主题

4

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2014-4-16
在线时间
0 小时
发表于 2014-5-16 20:43:36 | 显示全部楼层 |阅读模式
5金钱
<p>
        void NRF24L01_Init(void)<br />
{<br />
&nbsp;RCC-&gt;APB2ENR|=1&lt;&lt;2;&nbsp;&nbsp;&nbsp; //使能PORTA口时钟 <br />
&nbsp;<strong><span style="background-color:#E53333;">RCC-&gt;APB2ENR|=1&lt;&lt;3;&nbsp;&nbsp;&nbsp; //使能PORTC口时钟 </span></strong><br />
&nbsp;RCC-&gt;APB2ENR|=1&lt;&lt;4;&nbsp;&nbsp;&nbsp; //使能PORTC口时钟
</p>
<p>
        &nbsp;GPIOA-&gt;CRL&amp;=0XFFF000FF;//PA4输出<br />
&nbsp;GPIOA-&gt;CRL|=0X00033300; <br />
&nbsp;GPIOA-&gt;ODR|=7&lt;&lt;2;&nbsp;&nbsp;&nbsp; //PA2.3.4 输出1
</p>
<p>
        &nbsp;<span style="background-color:#E53333;">GPIOB-&gt;CRH&amp;=0XFFF0FFFF;//PA4输出</span><br />
<span style="background-color:#E53333;">&nbsp;GPIOB-&gt;CRH|=0X00030000; </span><br />
<span style="background-color:#E53333;">&nbsp;GPIOB-&gt;ODR|=1&lt;&lt;12;&nbsp;&nbsp;&nbsp; //PA2.3.4 输出1</span>
</p>
<p>
        &nbsp;GPIOC-&gt;CRL&amp;=0XFF00FFFF;//PC4输出 PC5输出<br />
&nbsp;GPIOC-&gt;CRL|=0X00830000; <br />
&nbsp;GPIOC-&gt;ODR|=3&lt;&lt;4;&nbsp;&nbsp;&nbsp; //上拉&nbsp; <br />
&nbsp;SPIx_Init();&nbsp;&nbsp;&nbsp; //初始化SPI<br />
&nbsp;NRF24L01_CE=0; &nbsp;//使能24L01<br />
&nbsp;NRF24L01_CSN=1;&nbsp;//SPI片选取消&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
}<br />
//////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
//24L01操作线<br />
<span style="background-color:#E53333;">#define NRF24L01_CE&nbsp;&nbsp; PBout(12) //24L01片选信号</span><br />
#define NRF24L01_CSN&nbsp; PCout(4) //SPI片选信号&nbsp;&nbsp;&nbsp; <br />
#define NRF24L01_IRQ&nbsp; PCin(5)&nbsp; //IRQ主机数据输入<br />
<span style="color:#E53333;">我只添加了如上红色内容,同时把SPI换成了SPI2</span><br />
<span style="color:#E53333;">没有检测成功,大神求助</span>
</p>

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

2

主题

4

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2014-4-16
在线时间
0 小时
 楼主| 发表于 2014-5-16 21:07:08 | 显示全部楼层
void&nbsp;SPI2_Init(void)
<br>{        &nbsp;
<br>        RCC-&gt;APB2ENR|=1&lt;&lt;3;&nbsp;&nbsp;        //PORTB时钟使能&nbsp;        &nbsp;
<br>        RCC-&gt;APB1ENR|=1&lt;&lt;14;&nbsp;&nbsp;&nbsp;        //SPI2时钟使能&nbsp;
<br>        //这里只针对SPI口初始化
<br>        GPIOB-&gt;CRH&=0X000FFFFF;&nbsp;
<br>        GPIOB-&gt;CRH|=0XBBB00000;        //PB13/14/15复用&nbsp;        &nbsp;&nbsp;&nbsp;&nbsp;
<br>        GPIOB-&gt;ODR|=0X7&lt;&lt;13;&nbsp;&nbsp;&nbsp;        //PB13/14/15上拉
<br>        SPI2-&gt;CR1|=0&lt;&lt;10;                //全双工模式       
<br>        SPI2-&gt;CR1|=1&lt;&lt;9;&nbsp;                //软件nss管理
<br>        SPI2-&gt;CR1|=1&lt;&lt;8;&nbsp;&nbsp;
<br>
<br>        SPI2-&gt;CR1|=1&lt;&lt;2;&nbsp;                //SPI主机
<br>        SPI2-&gt;CR1|=0&lt;&lt;11;                //8bit数据格式       
<br>        SPI2-&gt;CR1|=1&lt;&lt;1;&nbsp;                //空闲模式下SCK为1&nbsp;CPOL=1
<br>        SPI2-&gt;CR1|=1&lt;&lt;0;&nbsp;                //数据采样从第二个时间边沿开始,CPHA=1&nbsp;&nbsp;
<br>        //对SPI2属于APB1的外设.时钟频率最大为36M.
<br>        SPI2-&gt;CR1|=3&lt;&lt;3;&nbsp;                //Fsck=Fpclk1/256
<br>        SPI2-&gt;CR1|=0&lt;&lt;7;&nbsp;                //MSBfirst&nbsp;&nbsp;&nbsp;
<br>        SPI2-&gt;CR1|=1&lt;&lt;6;&nbsp;                //SPI设备使能
<br>        SPI2_ReadWriteByte(0xff);//启动传输                &nbsp;
<br>}&nbsp;&nbsp;&nbsp;
<br>//SPI2速度设置函数
<br>//SpeedSet:0~7
<br>//SPI速度=fAPB1/2^(SpeedSet+1)
<br>//APB1时钟一般为36Mhz
<br>void&nbsp;SPI2_SetSpeed(u8&nbsp;SpeedSet)
<br>{
<br>        SpeedSet&=0X07;                        //限制范围
<br>        SPI2-&gt;CR1&=0XFFC7;&nbsp;
<br>        SPI2-&gt;CR1|=SpeedSet&lt;&lt;3;        //设置SPI2速度&nbsp;&nbsp;
<br>        SPI2-&gt;CR1|=1&lt;&lt;6;&nbsp;                //SPI设备使能        &nbsp;&nbsp;
<br>}&nbsp;
<br>//SPI2&nbsp;读写一个字节
<br>//TxData:要写入的字节
<br>//返回值:读取到的字节
<br>u8&nbsp;SPI2_ReadWriteByte(u8&nbsp;TxData)
<br>{               
<br>        u16&nbsp;retry=0;                                &nbsp;
<br>        while((SPI2-&gt;SR&1&lt;&lt;1)==0)                //等待发送区空       
<br>        {
<br>                retry++;
<br>                if(retry&gt;=0XFFFE)return&nbsp;0;&nbsp;        //超时退出
<br>        }                        &nbsp;&nbsp;
<br>        SPI2-&gt;DR=TxData;        &nbsp;        &nbsp;&nbsp;                //发送一个byte&nbsp;
<br>        retry=0;
<br>        while((SPI2-&gt;SR&1&lt;&lt;0)==0)&nbsp;                //等待接收完一个byte&nbsp;&nbsp;
<br>        {
<br>                retry++;
<br>                if(retry&gt;=0XFFFE)return&nbsp;0;        //超时退出
<br>        }        &nbsp;&nbsp;                                                &nbsp;&nbsp;&nbsp;&nbsp;
<br>        return&nbsp;SPI2-&gt;DR;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                //返回收到的数据                                &nbsp;&nbsp;&nbsp;&nbsp;
<br>}
<br>改了,直接源代码啊,没有动
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-9-30 03:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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