请教下我把 qspi的程序移植到另外的一个板子上死活都不行

2019-12-30 19:23发布

本帖最后由 hpdell 于 2017-3-12 12:33 编辑


请教下,我把 qspi 的程序移植到另外的一个板子上,死活都不行,

qspi 的时钟等也都开启了,管脚也都配置了(移植前与移植后的管脚功能分配是一样的),管脚时钟也都开了,

移植后的程序可以读出 芯片 ID,但是不能够读写,

移植前与移植后的程序都是一样,所以现在迷茫了,

现在也找不出问题出在哪里了,
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
hpdell
2019-12-31 00:46
wye11083 发表于 2017-3-12 12:40
你确定硬件是支持的?qspi还要先写status reg 2,再发一条进入指令才行,你看rs2是不是0,0的话芯片没配好 ...

你好,硬件确定支持的,

芯片使用的 W25Q256A 这个 qspi的芯片,而且管脚也是参照之前的那个板子分配的,

读写程序也是 之前的那套程序

QSPI_StaticTypeDef QSPI_Quad_Enter(void)
{
  uint8_t _RegVal = 0;
  __IO uint32_t cnt = 0;  
  
  QSPI_Read_SR(QSPI_READ_STATUS_REG2_CMD, &_RegVal);   //先读出状态寄存器2的原始值
  if((_RegVal & 0x02) == 0)                            //QE位未使能
  {
    if (QSPI_WriteEnable(&QSPIHandle) != QSPI_OK)
    {
      return QSPI_ERROR;
    }  
    _RegVal |= 1 << 1;                                      //使能QE位
    QSPI_Write_SR(QSPI_WRITE_STATUS_REG2_CMD, _RegVal);    //写状态寄存器2
  }

  _RegVal = 0;  // 这个值无意义,只是配合下面的 发送 QSPI 指令 函数而已
  
  if(QSPI_SendCmdData(  QSPI_ENTER_QPI_MODE,      // 进入QSPI模式
                       QSPI_INSTRUCTION_1_LINE,
                       QSPI_ADDRESS_NONE,
                       QSPI_ADDRESS_8_BITS,
                       QSPI_DATA_NONE,
                       0,
                       0,
                       0,
                       &_RegVal,
                       QSPI_SEND_CMD
                  ) != QSPI_OK )
  {
    return QSPI_ERROR;
  }

  return QSPI_OK;  
}

一周热门 更多>