M7 QSPI 异常

2019-07-20 11:28发布

今天试了下M7的QSPI,在初始化的这里就卡住了,用示波器卡QSPI_BK1_CLK信号都不正常(看图片).程序配置和原子大神的一样
u32 tempreg=0;
RCC->AHB1ENR|=1<<1;      //使能PORTB时钟   
RCC->AHB1ENR|=1<<5;      //使能PORTF时钟   
RCC->AHB3ENR|=1<<1;     //QSPI时钟使能
GPIO_Set(GPIOB,1<<2,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU); //PB2复用功能输出
GPIO_Set(GPIOB,1<<6,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU); //PB6复用功能输出
GPIO_Set(GPIOF,0XF<<6,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,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->AHB3RSTR|=1<<1;  //复位QSPI
RCC->AHB3RSTR&=~(1<<1);  //停止复位QSPI
if(QSPI_Wait_Flag(1<<5,0,0XFFFF)==0)//等待BUSY空闲
{
  tempreg=(3-1)<<24;  //设置QSPI时钟为AHB时钟的1/3,即216M/3=72Mhz,13.8ns
  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=(23-1)<<16;  //设置FLASH大小为2^25=8MB
  tempreg|=(4-1)<<8;  //片选高电平时间为4个时钟(13.8*4=55.2ns),即手册里面的tSHSL参数
  tempreg|=1<<0;   //Mode3,空闲时CLK为高电平
  QUADSPI->DCR=tempreg; //设置DCR寄存器
  QUADSPI->CR|=1<<0;  //使能QSPI
}else return 1;
return 0;

请各位兄弟,帮帮忙看哪里问题
IC是W25Q64


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。