WCH沁恒单片机
直播中

吴凡

10年用户 915经验值
擅长:48674
私信 关注
[问答]

CH32V307VCT6的SPI3怎么用?

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

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


  

回帖(2)

王利祥

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

刘倩

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

更多回帖

发帖
×
20
完善资料,
赚取积分