[KungFu32位 MCU]

成功解决KF32F350官方例程中SPI_FLASH读取乱码的问题。

[复制链接]
13294|10
手机看帖
扫描二维码
随时随地手机跟帖
编号10086|  楼主 | 2021-7-23 13:49 | 显示全部楼层 |阅读模式
KF32F350_SPI.zip (1.97 MB)

使用特权

评论回复
编号10086|  楼主 | 2021-7-23 13:52 | 显示全部楼层
另外我怀疑是不是KF32手册中SYSTICK章节的中,嘀嗒定时器时钟源的地方写反了。

因为安富莱例程中测试了读写时间,我发现测试得到的时间比真实值大了一倍。然后才去查嘀嗒中断的时间,发现是2ms。
而我是按照手册计算得出的明明是1ms。

所以我会怀疑是不是手册写反了。把SCLK写错为了SCLK/2???

使用特权

评论回复
编号10086|  楼主 | 2021-7-23 13:55 | 显示全部楼层
我定时器配置在bsp_timer.c/bsp_InitTimer这个函数中。
大家如果有官方开发板的话,可以帮我测试一下这个程序。

看看是不是手册里ST_CTL寄存器的STCLKS描述写反了?

使用特权

评论回复
编号10086|  楼主 | 2021-7-23 14:03 | 显示全部楼层
编号10086 发表于 2021-7-23 13:52
另外我怀疑是不是KF32手册中SYSTICK章节的中,嘀嗒定时器时钟源的地方写反了。

因为安富莱例程中测试了读 ...

我知道了...原来还有一个STCLKREF位和ST_CTL->STCLKS共同控制时钟源...所以我之前的配置其实没起到作用...

使用特权

评论回复
sparrow054| | 2021-8-11 15:29 | 显示全部楼层
是时钟配置的问题么

使用特权

评论回复
编号10086|  楼主 | 2021-8-12 08:50 | 显示全部楼层
sparrow054 发表于 2021-8-11 15:29
是时钟配置的问题么

不是。
1.我怀疑这个板子的硬件SPI可能就是有问题的。
2.这个帖子中遇到的问题:SPI有四种模式,板载的SPI_FLASH支持其中两种。但是官方配置的不是这两种。
可是,还是虽然配置错误,SPI的数据还是可以歪歪扭扭的读出来,只是有一部分乱码。把模式改回去,就不会有乱码了。

3.但是后来我还是遇到了问题,这个帖子里面没贴(因为后来我不用芯旺微了,所以没有去深究它)
这个问题就是多个SPI设备用同一个MISO,MOSI,CLK线的场景,我把两个SPI设备(他们CS线不同,其余都相同)连到同一个SPI线上,出现了一个问题,就是只接入一个设备的时候,是可以正常通讯的。接入第二个设备,第一个设备读写就乱码了。(后来我想用软件SPI去做,不过由于要移植另外一款芯片,就没有继续深究这个问题了,我觉得改成软件SPI应该就可以解决这个问题。)

使用特权

评论回复
编号10086|  楼主 | 2021-8-12 08:54 | 显示全部楼层
sparrow054 发表于 2021-8-11 15:29
是时钟配置的问题么

时钟配置,是由于安富莱例程中,提供了程序执行时间测试的函数。
我用这个函数去测试SPI_FLASH读写时间,发现比实际电脑时钟的时间长1倍。

后来就去找原因,发现了芯旺微如果要配置时钟的话,需要设置两个地方。
这个导致了,我之前配置的参数没有起到作用,整体嘀嗒时钟从1ms变成了2ms。

之前一直没有发现这个问题,算是写这个SPI程序附带找到原先程序中存在的一个BUG吧,但是这个不是SPI读写乱码的原因。

使用特权

评论回复
daichaodai| | 2021-8-13 21:05 | 显示全部楼层
谢谢楼主,最近刚好在学习这块的代码。

使用特权

评论回复
sparrow054| | 2021-9-2 09:11 | 显示全部楼层
编号10086 发表于 2021-8-12 08:54
时钟配置,是由于安富莱例程中,提供了程序执行时间测试的函数。
我用这个函数去测试SPI_FLASH读写时间, ...

真不错,学习了

使用特权

评论回复
感谢楼主的分享,不错的经验。

使用特权

评论回复
caigang13| | 2021-9-7 12:32 | 显示全部楼层
谢谢楼主分享避坑经验

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

76

帖子

0

粉丝