通过ch32f203RC 的spi2口访问 spi flash at45db041,在线调试时读写数据正常,脱机运行,读flash时,每次读数据前面都会多一个字节0xFF,通过逻辑分析仪抓的数据分析,又没有多一个字节0xFF。
您好,关于你的问题,请问一下是固定每次读数据多一个0xFF么?(比如正常读5个数据,但读出6个,除第一个为0xFF,后面5个正常),若遇到该类问题,可按照下列方法尝试一下:
1、检查一下SPI初始化配置中NSS信号由硬件控制还是软件控制,若配置为硬件控制可改为软件控制试一下。此外注意将片选引脚的默认电平改为高电平;
2、由于SPI全双工特性,当CLK工作时,两根数据线都会进行数据传输,SPI在接收时也会发送数据,从机会接收一个数据,若该数据为能识别的命令值就会对主机产生影响,因此需要在接收数据之前发送0xFF,从机不识别0xFF命令,就不会对主机产生影响;
3、可注意检查一下状态寄存器的值,当读出0xFF时某个标志位是否会有问题,如OVR标志位。注意写入数据的时候要记得读取;
4、可通过降低SPI频率试一下
此外,在我们EVT中有对应SPI操作FLASH的例程,可以参考下,EVT下载链接如下。后续若有问题,可通过邮箱(lzs@wch.cn)和我沟通
CH32F203 EVT:/downloads/CH32F20xEVT_ZIP.html
NSS信号用的软件控制,驱动程序在ST,GD上都是正常运行的,其他外围都没动过,只是芯片换成了ch32f203rct6,现在是固定每次读数据多一个0xFF。在线调试时没有多一个0xFF,脱机运行时会多一个0xFF。
您好,在我们EVT中有SPI驱动FLASH的例程,可以用我们例程测试下是否会有问题。EVT例程都是经过验证的,你那边可以测试一下
EVT中SPI驱动FLASH的例程一样的结果 ,第一幅图片,在线调试的结果,第二幅图片,脱机运行的结果
您好,关于你的问题,有几点想跟你确认一下:
1、首先,我们EVT SPI FLASH例程是写入一段字符串然后读出来,请问一下下载我们EVT例程之后打印的字符串是否正确
2、SPI读取FLASH数据,应该是通过MISO这条线进行数据传输的,按照你前面描述,在线调试和逻辑分析仪抓取读数据都没问题,但脱机运行有问题,但从你这两幅图看,MISO的数据都是一样的,前面都有一个0xFF
为了方便问题的沟通解决,可加我微信或电话联系(18951773510)沟通一下