yanghuanchun 发表于 2019-1-12 14:16:58

AT SAME70 使用QSPI往W25芯片里面写数据,发送一个字实际...

大家好,请教一个问题,最近使用atmel SAM E70这款芯片。使用atmel start导出的QSPI的驱动。操作W25Q128 flash,发现读数据正常,但是写数据不正常。使用逻辑分析仪,抓取波形,发现写数据的过程只写一个字节,也会发八个字节的数据出去,就是由于附带的多余的7个字节数据所以导致写数据出错。如果发多字节则会附带出更多数据。如下图是抓取到的图片,图中A1是时钟,A2是数据,A5是片选,绿色部分是解析的数据,可以看到写使能指令0x06, program指令0x02,地址0X00,0X00,0X00,数据0XAA, 都已经正常发送,但后面跟着的0xff是不正常的。




写数据过程结束之后,读状态的指令如下图,也是正常的。



已经尝试过直导出QSPI,不选择具体的flash型号,然后直接发送数据,抓到的波形是一样的,都会附带多余的7个字节出去。问题已经卡了好几天了,哪位遇到过这个问题,指点一下,非常感谢。。。。。

zchong 发表于 2019-1-12 14:59:27

这个是不是最好先研究手册,再仔细看看底层的代码,碰到用相同CPU的人且都用了QSPI的概率相对较小

not_at_all 发表于 2019-1-12 15:33:21

QSPI 只有一条数据线??    你用SPI协议解析QSPI数据?      

peteryzm 发表于 2019-1-12 16:35:05

检查你导出的代码,这个肯定是代码的问题了

yanghuanchun 发表于 2019-1-12 16:58:12

zchong 发表于 2019-1-12 14:59
这个是不是最好先研究手册,再仔细看看底层的代码,碰到用相同CPU的人且都用了QSPI的概率相对较小 ...

恩恩,是的,MCU和W25的芯片手册都已经看了好几遍了。之前使用atmel的老版本的库函数有好使的程序,打断点,对比发送数据之前的 QSPI的寄存器,都是一样的,实在是没有办法了,跑到论坛发帖问问大家。

yanghuanchun 发表于 2019-1-12 17:03:37

not_at_all 发表于 2019-1-12 15:33
QSPI 只有一条数据线??    你用SPI协议解析QSPI数据?

SPI-flash默认是支持 singel SPI, Dual spi, quad SPI的。在进行QSPI通讯之前是可以通过IFR设置指令,地址,数据的位宽的,我写数据的时候设置的是singel模式。所以可以单根线解析

yanghuanchun 发表于 2019-1-12 17:05:37

peteryzm 发表于 2019-1-12 16:35
检查你导出的代码,这个肯定是代码的问题了

昨天联系了原厂的FAE,FAE也在帮忙看了。很奇怪,之前使用atmel的老版本的库函数有好使的程序,打断点,对比发送数据之前的 QSPI的寄存器,都是一样的,可以就是会多出几个字节的数据。

yanghuanchun 发表于 2019-1-16 14:18:31

这个问题支持支持反馈他们挂在官网上面的驱动是有问题的,还未定位到原因。

cheungman 发表于 2019-1-16 16:31:36

看起来底层驱动代码有问题, 可能漏了instr指令, data_len为8, 也就是说把0x02,0X00,0X00,0X00当成地址, 把剩下的当成写入的数据.

查查       
mem->inst_frame.bm.b_inst_en
mem->inst_frame.bm.b_data_en
mem->inst_frame.bm.b_addr_en
qspid->qspi_buffer.tx_data_size

另外, 我建议直接用官方的s25fl1xx驱动

9509238 发表于 2019-1-19 20:14:28

这是什么逻辑分析仪?界面看去不错

zhanyanqiang 发表于 2019-1-19 23:18:35

楼主,这个芯片必须要用START生成代码吧?

yanghuanchun 发表于 2019-1-20 10:17:19

9509238 发表于 2019-1-19 20:14
这是什么逻辑分析仪?界面看去不错

周立功的

yanghuanchun 发表于 2019-1-20 10:18:10

zhanyanqiang 发表于 2019-1-19 23:18
楼主,这个芯片必须要用START生成代码吧?

不是的,官方也有以前的库。现在在官网找不到了,托管到Git了。

yanghuanchun 发表于 2019-1-20 10:22:12

cheungman 发表于 2019-1-16 16:31
看起来底层驱动代码有问题, 可能漏了instr指令, data_len为8, 也就是说把0x02,0X00,0X00,0X00当成地址,...

上周一的时候Atmel官方技术支持反馈他们的驱动确实有问题,他们在修改,到现在也没反馈。我试过在导出代码的时候把SST25去掉,直接生成QSPI的驱动,然后写发送1字节的数据,还是会多发7个字节。

lingdianhao 发表于 2019-1-20 10:28:29

难道不能自己按手册写驱动?官方驱动也是按手册写的吧!

yanghuanchun 发表于 2019-1-20 10:40:34

lingdianhao 发表于 2019-1-20 10:28
难道不能自己按手册写驱动?官方驱动也是按手册写的吧!

are you kidding me ?这种驱动如果我自己动手写,估计首先跳出来反对的就是我们老大吧!

zhanyanqiang 发表于 2019-1-20 12:48:08

本帖最后由 zhanyanqiang 于 2019-1-20 12:59 编辑

yanghuanchun 发表于 2019-1-20 10:18
不是的,官方也有以前的库。现在在官网找不到了,托管到Git了。

哎.....
页: [1]
查看完整版本: AT SAME70 使用QSPI往W25芯片里面写数据,发送一个字实际...