CH32V307配置为硬件 SPI时,SSOE无法置位导致NSS一直为高,传输数据时也不会自动拉低

原先计划:使用硬件SPI1接口驱动ILI9341为主控的LCD屏。使用软件模拟SPI的方式可以正常显示,只不过刷新比较慢。所以想尝试用片上的外设SPI直接驱动,减少CPU工作量。


目前问题现象:1.SPI1的CLK和MOSI输出波形正常,因为只需要向屏幕发送数据,所以不使用MISO。

                        2.读取SPI1_CTLR1寄存器的值为0x01D4,各项配置正常。

                        3.读取SPI1_CTLR2寄存器的值为0x01B0,BIT2为SSOE的输出使能控制位,不管把SPI_SSOutputCmd(SPI1,                             ENABLE);设置为enable还是disable,BIT2始终为0无法置位,导致片选Pin脚一直为高无法被master拉低。

image.pngimage.png

icon_rar.gifCH32V307VCT6.zip

附件代码


image.png

BIT2无法被置位。


您好,SPI使用硬件片选时,需要注意,置MSTR和SPE位,需要保证NSS此时已经是高,如下图1介绍,建议将SPI_SSOutputCmd(SPI1, ENABLE);函数放在SPI初始化之前,此外需要注意,SPI做主时,SPI片选引脚建议配置成复用推挽输出模式,我看你配置的是上拉输入,建议你改一下试一下,后续若有问题,可通过邮箱(lzs@wch.cn)和我详细沟通一下。

image.png

图1


解决了没 我也遇到同样的问题

个人信息保护,已隐藏

谢谢


您好,可以参考下帖回复

/bbs/thread-107686-1.html

 


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