利用SPI读写Flash指令的过程中,当主机发送指令后,为什么还需要再发送“任意的数据”,才能够获取指令解释后的返回值。 当读取Flash的JEDEC_ID指令时,按FLASH的ID指令时序图可知,得到的数据分别为:M7-M0,ID15-ID8,ID7-ID0。 问题1:主机给Flash发送JEDEC_ID指令以后,Flash内部会把JEDEC_ID指令解释成M7-M0,ID15-ID8,ID7-ID0,,那么这些数据也就应该时一并返回来的,为什么还需要再向FLASH发送其他的“任意数据”才能够读取该指令解释得到的数据,M7-M0,ID15-ID8,ID7-ID0???如图中所示 问题2:这样再发送数据过去,难道不会覆盖了JEDEC_ID指令得到的M7-M0,ID15-ID8,ID7-ID0吗? |
L9663驱动开发
SPI 通信,既有单字节数据传输,又有多字节数据传输,该如正确使用 DMA?
STM32F405使用LL库建立SPI通讯报溢出是什么原因?
cubemx安装HAL库时要账号登录,点击注册,显示错误,ST官网点击注册也是显示错误,请问是什么问题?
L9663如何使用上行缓冲区发送同步脉冲
ST25R3916有快速读取吗?
使用Hal库的SPI读取磁边传感器导致STM32G4无法运行
cubeMX硬件spi
STM32H723 spi6+dma用法问题
STM32F407 用定时器控制SPI传输的相关问题
首先,SPI外设是同步外设,简单可理解为数据交互的时钟由主设备提供。
其次,基于主设备提供时钟,所以从设备在返回数据时,必须需要主设备提供时钟;
最后,主设备发送时钟的方式,与发送一个dummy数据的方式是相同的
结论:如代码所呈现的样子。
不知道楼主明白了吗?
还有疑问,再回帖即可
因此,主设备发送完成命令后,从设备收到解析并准备好回应数据,需要主设备再次发出时钟(主设备的数据是不关心了),才能将数据打到总线上,让主设备收到。
主设备怎么知道从设备什么时候要发送数据从而发送时钟?
从设备有响应时间,这个看规格书,一般纯硬件的都很快。 有些器件需要发命令查询状态,READY后才能读到数据。FLASH的是读写,所以操作频率不应该快与它的相应时间,就可以接着读。