1.
错误现象:
通过示波器可以看到数据发完后,多了一个时钟信号。
错误原因:
stm32H743生成的spi库,发送接收函数里面有关闭spi接口的函数(__HAL_SPI_DISABLE()),此函数导致始终发生变化,导致读写spiflash失败.
解决办法:__HAL_SPI_ENABLE()放在片选使能前面,__HAL_SPI_DISABLE()放在片选使能后面。HAL_SPI库不能直接用,要修改一下,把SPI_CloseTransfer()函数里面的__HAL_SPI_DISABLE()注释掉。
2.
错误现象:
先读出一个字节或者四个字节的废数,然后读出正确的数,废数数据量和发送的字节数相同。
错误原因:
发送命令的函数,使用的是HAL_SPI_Transmit();
解决办法:
flash发送命令的函数要使用HAL_SPI_TransmitReceive()函数。
3.
错误现象:
经过上述两处修改,HAL_SPI_Transmit()、HAL_SPI_TransmitReceive()只能读写一个字节,数据量大于1会卡死。
参考:
STM32H743参考手册,spi数据发送和接收过程,文档描述,参考序列处理相关描述
解决方法:
TXDR数据发送结束后,判断TXTF标志位,清TXTFFLAG