发 帖  
原厂入驻New
[问答] NRF24L01的SPI1改为SPI2为什么实现不了?
11 nRF24L01 SPI
分享
<p>
        void NRF24l01_Init(void)<br />
{<br />
RCC->APB2ENR|=1<<2;    //使能PORTA口时钟 <br />
<strong><span style="background-color:#E53333;">RCC->APB2ENR|=1<<3;    //使能PORTC口时钟 </span></strong><br />
RCC->APB2ENR|=1<<4;    //使能PORTC口时钟
</p>
<p>
         GPIOA->CRL&=0XFFF000FF;//PA4输出<br />
GPIOA->CRL|=0X00033300; <br />
GPIOA->ODR|=7<<2;    //PA2.3.4 输出1
</p>
<p>
         <span style="background-color:#E53333;">GPIOB->CRH&=0XFFF0FFFF;//PA4输出</span><br />
<span style="background-color:#E53333;"> GPIOB->CRH|=0X00030000; </span><br />
<span style="background-color:#E53333;"> GPIOB->ODR|=1<<12;    //PA2.3.4 输出1</span>
</p>
<p>
         GPIOC->CRL&=0XFF00FFFF;//PC4输出 PC5输出<br />
GPIOC->CRL|=0X00830000; <br />
GPIOC->ODR|=3<<4;    //上拉  <br />
SPIx_Init();    //初始化SPI<br />
NRF24L01_CE=0;  //使能24L01<br />
NRF24L01_CSN=1; //SPI片选取消           <br />
}<br />
//////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
//24L01操作线<br />
<span style="background-color:#E53333;">#define NRF24L01_CE   PBout(12) //24L01片选信号</span><br />
#define NRF24L01_CSN  PCout(4) //SPI片选信号    <br />
#define NRF24L01_IRQ  PCin(5)  //IRQ主机数据输入<br />
<span style="color:#E53333;">我只添加了如上红色内容,同时把SPI换成了SPI2</span><br />
<span style="color:#E53333;">没有检测成功,大神求助</span>
</p>
0
2020-5-22 05:59:13   评论 分享淘帖 邀请回答

相关问题

2个回答
2020-5-22 15:06:28 评论

举报

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>改了,直接源代码啊,没有动
2020-5-22 15:18:56 评论

举报

只有小组成员才能发言,加入小组>>

93个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

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