stm32H743 使用HAL库SPI读写外部flash失败原因

文章讨论了在使用STM32H743的SPI库时遇到的三个问题:1)发送后多一钟信号导致spiflash读写失败;2)发送命令后出现废数,需替换传输函数;3)大量数据传输时卡死,需判断TXDR标志。提供了解决方案和参考STM32H743手册的建议。
摘要由CSDN通过智能技术生成

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值