初级会员

- 积分
- 62
- 金钱
- 62
- 注册时间
- 2026-2-9
- 在线时间
- 24 小时
|
1金钱
QSPI 引脚更改为PC11 PB2 PE7 PE8 PE9 PE10 读取不出型号不知问题出在那?
u8 QSPI_Init(void)
{
u32 tempreg=0;
// RCC->AHB4ENR|=1<<1; //使能PORTB时钟
// RCC->AHB4ENR|=1<<5; //使能PORTF时钟
// RCC->AHB3ENR|=1<<14; //QSPI时钟使能
// GPIO_Set(GPIOB,1<<2,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_HIGH,GPIO_PUPD_PU); //PB2复用功能输出
// GPIO_Set(GPIOB,1<<6,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_HIGH,GPIO_PUPD_PU); //PB6复用功能输出
// GPIO_Set(GPIOF,0XF<<6,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_HIGH,GPIO_PUPD_PU); //PF6~9复用功能输出
// GPIO_AF_Set(GPIOB,2,9); //PB2,AF9
// GPIO_AF_Set(GPIOB,6,10); //PB6,AF10
// GPIO_AF_Set(GPIOF,6,9); //PF6,AF9
// GPIO_AF_Set(GPIOF,7,9); //PF7,AF9
// GPIO_AF_Set(GPIOF,8,10); //PF8,AF10
// GPIO_AF_Set(GPIOF,9,10); //PF9,AF10
RCC->AHB3ENR|=1<<14; //QSPI时钟使能
RCC->AHB4ENR|=1<<1; //使能PORTB时钟
RCC->AHB4ENR|=1<<2; //使能PORTC时钟
RCC->AHB4ENR|=1<<4; //使能PORTE时钟
GPIO_Set(GPIOB,0X1<<2, GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_HIGH,GPIO_PUPD_PU); //PB2复用功能输出
GPIO_Set(GPIOC,0X1<<11,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_HIGH,GPIO_PUPD_PU); //PB6复用功能输出
GPIO_Set(GPIOE,0XF<<7, GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_HIGH,GPIO_PUPD_PU); //PF6~9复用功能输出
GPIOB->AFR[0]&=~(0XF<<8);
GPIOB->AFR[0]|=9<<8;
GPIOC->AFR[1]&=~(0XF<<12);
GPIOC->AFR[1]|=9<<12;
GPIOE->AFR[0]&=~(0XF<<28);
GPIOE->AFR[0]|=(9<<28);
GPIOE->AFR[1]&=~((0XF<<0)|(0XF<<4)|(0XF<<8));
GPIOE->AFR[1]|=((9<<0)|(9<<4)|(9<<8));
//-----------------------------------------------
RCC->AHB3RSTR|=1<<14; //复位QSPI
RCC->AHB3RSTR&=~(1<<14); //停止复位QSPI
if(QSPI_Wait_Flag(1<<5,0,0XFFFF)==0)//等待BUSY空闲
{
//QSPI时钟默认来自rcc_hclk3(由RCC_D1CCIPR的QSPISEL[1:0]选择)
tempreg=(2-1)<<24; //设置QSPI时钟为AHB时钟的1/2,即200M/2=100Mhz,10ns
tempreg|=(4-1)<<8; //设置FIFO阈值为4个字节(最大为31,表示32个字节)
tempreg|=0<<7; //选择FLASH1
tempreg|=0<<6; //禁止双闪存模式
tempreg|=1<<4; //采样移位半个周期(DDR模式下,必须设置为0)
QUADSPI->CR=tempreg; //设置CR寄存器
tempreg=(25-1)<<16; //设置FLASH大小为2^25=32MB
tempreg|=(5-1)<<8; //片选高电平时间为5个时钟(10*5=50ns),即手册里面的tSHSL参数
tempreg|=1<<0; //Mode3,空闲时CLK为高电平
QUADSPI->DCR=tempreg; //设置DCR寄存器
QUADSPI->CR|=1<<0; //使能QSPI
}else return 1;
return 0;
}
|
|