如何使用CH32V307VCT6的SPI3?

官方有SPI1的demo例程,但是我因为使用了RGMII接口,所以只能使用SPI3来操作外部SPI Flash。根据CH32V307VCT6的datasheet:SPI3需要使用重映射功能。重映射后,SPI3_NSS为PA4,SPI3_SCK为PC10,SPI3_MISO为PC11,SPI3_MOSI为PC12。配置如下图:

D63}R0PJV0D1Q4{)84{2M5F.png

我也使用的SPI_NSS_SOFT模式,人为控制PA4的拉低拉高。

通过修改demo例程的代码后,我在while(1)中每1秒读取一次SPI FLASH的ID,均为0,使用示波器发现NSS为高电平,SCK一直无时钟信号,感觉SPI3没有配置一样。初始化SPI3有问题吗?还望赐教,谢谢。我把修改后的几个关键的SPI FLASH的函数也贴进来,便于分析问题。

69WLXY3X$(4(VJ78715OAWI.png

{5BTNX33BALW7MQ}64M2UKQ.png

你好,附件是我在我们EVT SPI读写FLASH例程基础上修改为SPI3的例程,例程读ID等操作都是没问题的,你可以对比参考一下

icon_rar.gifCH32V307 SPI3.zip



感谢大佬的支持!根据您提供的例程,很快找到原因了:我使用的主频是144MHz,估计是时钟太快了,我把demo中的SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4改为SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8以后,读写就正常了。


只有登录才能回复,可以选择微信账号登录