封装发送命令的函数(重点)
/**
* [url=home.php?mod=space&uid=247401]@brief[/url] 向SPI Flash发送指令
* @param instruction —— 要发送的指令
* @param address —— 要发送的地址
* @param dummyCycles —— 空指令周期数
* @param instructionMode —— 指令发送模式
* @param addressMode —— 地址发送模式
* @param addressSize —— 地址大小
* @param dataMode —— 数据发送模式
* @retval 成功返回HAL_OK
*/
HAL_StatusTypeDef QSPI_Send_Command(uint32_t instruction,
uint32_t address,
uint32_t dummyCycles,
uint32_t instructionMode,
uint32_t addressMode,
uint32_t addressSize,
uint32_t dataMode)
{
QSPI_CommandTypeDef cmd;
cmd.Instruction = instruction; //指令
cmd.Address = address; //地址
cmd.DummyCycles = dummyCycles; //设置空指令周期数
cmd.InstructionMode = instructionMode; //指令模式
cmd.AddressMode = addressMode; //地址模式
cmd.AddressSize = addressSize; //地址长度
cmd.DataMode = dataMode; //数据模式
cmd.SIOOMode = QSPI_SIOO_INST_EVERY_CMD; //每次都发送指令
cmd.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE; //无交替字节
cmd.DdrMode = QSPI_DDR_MODE_DISABLE; //关闭DDR模式
cmd.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
return HAL_QSPI_Command(&hqspi, &cmd, 5000);
}
|