你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
真的是越来越不清醒了,写一个SPI字节的时候居然忘记要读取数据了,因为SPI为双线结构,只要时钟线有信号,两条线上都会有信号,我就只发送数据,要读取的数据的时候再读取,这样子会造成溢出标志OVR被置1,因为平时的数据没有被读取,又来一个,真正要读取的时候,就会发现,怎么都是FF,因为发送OVR之后,还是DR的内容不会被修改,所以都是FF。
查找原因过程:通过逻辑分析仪看到出来的数据明明是0x69,但是通过DR读取出来的数据确实0xff,进一步硬件仿真查看寄存器,发现OVR居然被置1,查手册分析得出。
查看全部评分
wolfgang2015 发表于 2018-6-7 11:40 A、是片选信号正常,时钟也正常,可是发送的数据(即发送给FLASH的指令)出错了 1、检查通信位数设置,是否 ...
feixiang20 发表于 2018-6-8 00:54 我在看这么一个文章,不知对你有没有帮助 【SPI写入数据的时候记得读取,不然会一直读出0xFF!】 真的是越 ...
watercici 发表于 2018-6-7 11:53 首先对于第二问题,我说的没有时钟信号,就是在发送指令的时候没有,导致指令没有发送成功; 其次对于第 ...
lvwy0704 发表于 2018-6-7 15:04 楼主解决了没
jiangyia 发表于 2018-6-7 16:18 换一个存储芯片试试看?
す疯Ⅱ恒す 发表于 2018-6-7 13:38 你单步调试的时候出现的,因为你虽然暂停调试了,但是硬件SPI不一定停止,所以各种奇怪的事情都有,最好 ...
watercici 发表于 2018-6-11 11:33 您好,我想问一下,我在做SPI通信的时候,CS信号有时会出现自动拉高的情况,导致我的发送和读数都异常, ...
す疯Ⅱ恒す 发表于 2018-6-11 13:55 CS信号应该作为主机的一方软件控制才对,这里应该用单片机控制,软件CS,应该该IO口的电平只需要检查代码 ...
【SPI写入数据的时候记得读取,不然会一直读出0xFF!】
真的是越来越不清醒了,写一个SPI字节的时候居然忘记要读取数据了,因为SPI为双线结构,只要时钟线有信号,两条线上都会有信号,我就只发送数据,要读取的数据的时候再读取,这样子会造成溢出标志OVR被置1,因为平时的数据没有被读取,又来一个,真正要读取的时候,就会发现,怎么都是FF,因为发送OVR之后,还是DR的内容不会被修改,所以都是FF。
查找原因过程:通过逻辑分析仪看到出来的数据明明是0x69,但是通过DR读取出来的数据确实0xff,进一步硬件仿真查看寄存器,发现OVR居然被置1,查手册分析得出。
评分
查看全部评分
首先对于第二问题,我说的没有时钟信号,就是在发送指令的时候没有,导致指令没有发送成功;
其次对于第一个问题,通信位数我选择的是8位的,应该是匹配的;
最后,我还想向您提供一个情况,我这个问题是在单步或若干步调试的时候会出现,如果不调试,正常运行,flash的数据是有读取成功的时候,而这个读取的过程就涉及了发送指令和读取数据两个过程,那么就说明SPI的读取和发送是有成功的时候的。但就是调试的时候会出现以上问题。
我看到过这个,但是我的问题不是这个,这个说的是你读取数据的时候也要发送数据,因为SPI通信是由主机发起的,所以在读数据的时候,也要发送数据。但是我现在的问题是发送数据的时候有问题,比如我发的指令是0X05,结果我发现我发的是0XFF,指令不对,地址也是这样没有发送对,所以导致读取的数据不正确。而且这种情况只在调试的时候发生。
1、检查通信位数设置,是否与W25Q16不匹配。
2、检查SPI程序,好像在8字节,16字节模式HAL的实现不同;
B、片选正常,但是没有时钟信号;
属于指令没有指令发送,没有指令发送自然不需要时钟信号。
评分
查看全部评分
评分
查看全部评分
你单步调试的时候出现的,因为你虽然暂停调试了,但是硬件SPI不一定停止,所以各种奇怪的事情都有,最好还是全速运行看波形是否正确。
评分
查看全部评分
没有解决,反正就是调试的时候SPI通信会出问题?
换了,一共有两个板子,用在第二个板子上也是同样的问题?
您好,我想问一下,我在做SPI通信的时候,CS信号有时会出现自动拉高的情况,导致我的发送和读数都异常,这是为什么呢?
您好,我想问一下,我在做SPI通信的时候,CS信号有时会出现自动拉高的情况,导致我的发送和读数都异常,这是为什么呢?
CS信号应该作为主机的一方软件控制才对,这里应该用单片机控制,软件CS,应该该IO口的电平只需要检查代码即可。
评分
查看全部评分
我就是按照您说的设置的,我的SPI通信挺奇怪的,有时候通信很正常,读写都没有问题,有时候通信异常,异常情况就是时钟异常,要不时钟脉冲数不够,随机,要不就是发送两个字节,发第一个字节的时候没事脉冲