QQ624353765 发表于 2024-1-17 15:09:36

DMA_SPI_W25Qxxx读取数据问题




指令+地址用4字节,从W25Qxxx中读取3字节数据
所以发送缓存和接收缓存各7字节




DMA_SPI初始化,接收区指向xdata地址0,发送区指向xdata地址ZL首地址




W25Qxxx指令4字节,第一个字节03H读取数据,接下来3字节是地址0,读取第0扇区的第0字节

然后设置DMA_SPI_CR=0xC1;接收到7字节数据都是0xFF,这个扇区的实际数据是0-6,与实际不符

不知道DMA_SPI发送指令+读取数据是不是这么用的


乘风飞扬 发表于 2024-1-18 11:41:47

通过SPI DMA发送指令+读取数据也是可以的。
STC8H实验箱例程包,例子56-DMA-SPI与存储器数据自动收发:硬件SPI使用DMA访问FLASH-串口2监控,读取函数稍作修改就可以:

不过这么修改后,读取出来的有效数据就会放在DmaRxBuffer开始的地址上。

QQ624353765 发表于 2024-1-18 13:21:37

乘风飞扬 发表于 2024-1-18 11:41
通过SPI DMA发送指令+读取数据也是可以的。
STC8H实验箱例程包,例子56-DMA-SPI与存储器数据自动收发:硬件 ...




我这不知道怎么回事一直报这两个错,只要发地址就报这两个错

乘风飞扬 发表于 2024-1-18 17:59:19

QQ624353765 发表于 2024-1-18 13:21
我这不知道怎么回事一直报这两个错,只要发地址就报这两个错

先用上面介绍的例子测试一下,例子测试正常后再进行移植或者修改。

QQ624353765 发表于 2024-1-20 18:55:51

乘风飞扬 发表于 2024-1-18 17:59
先用上面介绍的例子测试一下,例子测试正常后再进行移植或者修改。

原因找到了,一直会报RXLOSS错误,但是数据接收是正常的,我在中断里面就拉高了SS脚,导致后面的数据都是FF,只要把RXLOSS信号过滤掉就正常了。但问题是为什么会产生RXLOSS信号,该如何处理
页: [1]
查看完整版本: DMA_SPI_W25Qxxx读取数据问题