初级会员

- 积分
- 178
- 金钱
- 178
- 注册时间
- 2013-11-19
- 在线时间
- 22 小时
|
10金钱
如题。
调试中发现,当用STM32L476 四线模式驱动MT25Q时,遇到了一个问题。单线发指令(以06指令为例)没有问题,但用四线模式发指令时(比如 写使能06,指令),数据一直不对。
问题描述如下:
1。单线发送指令 比如发0x06时,时序是正确的,而且可以正常读写,已调试成功。
2. 但是用四线模式(开启了四线模式),发0x06,发现示波器读出的时序是 0000 0010 。应该是 0000 0110 才对。DQ1这根线的数据不对,造成发送指令不成功。
为了验证,我随便发了几个其他指令。比如 0X00 0XFF 0XAA ,都是DQ1 这条线电平不对。
3.
代码如下,求指教。是我配置的不对吗?
/**
* @brief QSPI_Write_CMD
* @param Reg Name:
*
* @retval QSPI_OK ¶áè¡3é1|£¬·ñÔòê§°ü
*/
uint8_t cpu_w_cmd(uint8_t w_cmd)
{
QSPI_CommandTypeDef sCommand;
uint32_t __InstructionMode, __DataMode;
if(QSPI_WorkMode) // Work In QUAD Model
{
__InstructionMode = QSPI_INSTRUCTION_4_LINES;
}
else
{
__InstructionMode = QSPI_INSTRUCTION_1_LINE;
}
/* Initialize the reset enable command */
sCommand.InstructionMode = __InstructionMode;
sCommand.Instruction = w_cmd;
sCommand.AddressMode = QSPI_ADDRESS_NONE;
sCommand.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
sCommand.DataMode = QSPI_DATA_NONE;
sCommand.DummyCycles = 0;
// sCommand.NbData = 1;
sCommand.DdrMode = QSPI_DDR_MODE_DISABLE;
sCommand.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
sCommand.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
/* Configure the command */
if (HAL_QSPI_Command(&QSPIHandle, &sCommand, HAL_QPSI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
{
return QSPI_ERROR;
}
return QSPI_OK;
}
|
-
-
|