在调试 octospi 驱动外部 flash 时,发现 flash 的地址很大的时候读写就会出问题,地址小的时候就不会出问题。判断可能是大小设置错误,开始时是根据网上的计算规则,实际大小减一,但是在单步调试的时候,发现它的代码里面又减一了。所以现在的 H7 octospi 参数配置是配置多少,实际就会得到多少,无需再进行减一了。
[C] 纯文本查看 复制代码 MODIFY_REG(hospi->Instance->DCR1,
(OCTOSPI_DCR1_MTYP | OCTOSPI_DCR1_DEVSIZE | OCTOSPI_DCR1_CSHT | OCTOSPI_DCR1_DLYBYP |
OCTOSPI_DCR1_FRCK | OCTOSPI_DCR1_CKMODE),
(hospi->Init.MemoryType | ((hospi->Init.DeviceSize - 1U) << OCTOSPI_DCR1_DEVSIZE_Pos) |
((hospi->Init.ChipSelectHighTime - 1U) << OCTOSPI_DCR1_CSHT_Pos) |
hospi->Init.DelayBlockBypass | hospi->Init.ClockMode));
[C] 纯文本查看 复制代码 MODIFY_REG(hospi->Instance->DCR2, OCTOSPI_DCR2_PRESCALER,
((hospi->Init.ClockPrescaler - 1U) << OCTOSPI_DCR2_PRESCALER_Pos));
|