按照上面接线,三线的spi传感器,用stm32f4的mcu芯片能正确读取传感器数据,而用ch32v203就读出错误数据。
两种mcu的程序都是采用全双工,尝试过半双工,两个mcu都无法正确读取数据。不知道是ch32v203代码问题,还是接线问题,目前两个mcu的spi 配置,接线都是一样的。
ch32v203用的hsi内部时钟,
按照上面接线,三线的spi传感器,用stm32f4的mcu芯片能正确读取传感器数据,而用ch32v203就读出错误数据。
两种mcu的程序都是采用全双工,尝试过半双工,两个mcu都无法正确读取数据。不知道是ch32v203代码问题,还是接线问题,目前两个mcu的spi 配置,接线都是一样的。
ch32v203用的hsi内部时钟,
您好,你可以先根据使用的芯片型号,判断一下工程的宏定义、启动文件以及ld文件的FLASH和RAM大小是否配置正确,具体配置方式见附件。此外,进行发送和接收时,需要加上对发送缓冲区和接收缓冲区的判断,你的程序应该是有问题的。在我们EVT中有SPI相关例程,你可以参考一下。
CH32V203 EVT:/downloads/CH32V20xEVT_ZIP.html
FLASH和RAM大小是否配置正确 配置过了,
接收发送缓存也判断了,evt例程中的半双工只有host 的中断发送,没有host 接收数据,这例程参考不了。 半双工仍然接收不了正确数据,其中试过下图设置,仍然不能接收正确数据,就是将单线设置只发送,或只接收。
全双工的接线方式会出现 mcu发送的数据直接到mcu接收寄存器,因为线是直接连着的,后面mcu接收寄存器还会接收一个传感器的数据,缓存只能多保存一位,这就造成了,数据错位,与数据丢失的情况。
这个ch32v203能不能设置在mcu发送数据的时候,接收数据寄存器关闭,不接收任何数据,mcu发送完成后,接收寄存器才开始工作?
您好,若需要单线半双工例程,可参考下附件CH32V103例程,基本差不多。关于最后你所问的,其实就是SPI半双工模式,这个是支持的。此外,请问一下你的使用场景是一主一从还是一主多从,若方便,可将你STM32例程以及CH32V203的例程发到我的邮箱(lzs@wch.cn),我这边看一下。后续若有问题,也可通过邮箱和我沟通。
46、SPI-单工通信(1条时钟线和1条双向数据线),主机接收从机发送.zip