类似的问题公众号文章已经有分享
https://mp.weixin.qq.com/s/qESc7h-y0GQr9Dh_kH67PA?token=1312261758&lang=zh_CN 分享一个SPI查询方式收发数据的问题
spi_master_readflash_X1这个函数
如下接收处理的位置处理逻辑有BUG,硬件设置一笔接收可能大于FIFO大小,导致软件有可能来不及读出数据
且SPI速度越快越容易出问题(看代码中的注释有在调整SPI的时钟分频,我估计当时写这个代码的同学也可能发现了速度快了有问题,但是不知道为什么,所以就在那里调速率),
类似如下左边是读到错误数据,右边是正确的数据,看到数据有错位和丢失。
SPI部分的接口也写的不是很好,太零散混乱,干脆就重新写了个spi的查询收发接口,对于spi查询收发操作只需要一个接口就可以了,可以支持不同总线宽度,可以只发,只收,或者同时收发,没必要搞这么多接口太乱。
最低2分频,最大96MHz,修改之后跑96M都没问题,如下实测
7个周期70ns,一个周期10ns,100MHz
Shell中增加了flash测试的命令
不再赘述,详见代码
https://gitee.com/qinyunti/fr3068-e-c-micropython.git