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个字节出去。问题已经卡了好几天了,哪位遇到过这个问题,指点一下,非常感谢。。。。。 这个是不是最好先研究手册,再仔细看看底层的代码,碰到用相同CPU的人且都用了QSPI的概率相对较小 QSPI 只有一条数据线?? 你用SPI协议解析QSPI数据? 检查你导出的代码,这个肯定是代码的问题了 zchong 发表于 2019-1-12 14:59
这个是不是最好先研究手册,再仔细看看底层的代码,碰到用相同CPU的人且都用了QSPI的概率相对较小 ...
恩恩,是的,MCU和W25的芯片手册都已经看了好几遍了。之前使用atmel的老版本的库函数有好使的程序,打断点,对比发送数据之前的 QSPI的寄存器,都是一样的,实在是没有办法了,跑到论坛发帖问问大家。 not_at_all 发表于 2019-1-12 15:33
QSPI 只有一条数据线?? 你用SPI协议解析QSPI数据?
SPI-flash默认是支持 singel SPI, Dual spi, quad SPI的。在进行QSPI通讯之前是可以通过IFR设置指令,地址,数据的位宽的,我写数据的时候设置的是singel模式。所以可以单根线解析 peteryzm 发表于 2019-1-12 16:35
检查你导出的代码,这个肯定是代码的问题了
昨天联系了原厂的FAE,FAE也在帮忙看了。很奇怪,之前使用atmel的老版本的库函数有好使的程序,打断点,对比发送数据之前的 QSPI的寄存器,都是一样的,可以就是会多出几个字节的数据。 这个问题支持支持反馈他们挂在官网上面的驱动是有问题的,还未定位到原因。 看起来底层驱动代码有问题, 可能漏了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驱动 这是什么逻辑分析仪?界面看去不错 楼主,这个芯片必须要用START生成代码吧? 9509238 发表于 2019-1-19 20:14
这是什么逻辑分析仪?界面看去不错
周立功的 zhanyanqiang 发表于 2019-1-19 23:18
楼主,这个芯片必须要用START生成代码吧?
不是的,官方也有以前的库。现在在官网找不到了,托管到Git了。 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
难道不能自己按手册写驱动?官方驱动也是按手册写的吧!
are you kidding me ?这种驱动如果我自己动手写,估计首先跳出来反对的就是我们老大吧! 本帖最后由 zhanyanqiang 于 2019-1-20 12:59 编辑
yanghuanchun 发表于 2019-1-20 10:18
不是的,官方也有以前的库。现在在官网找不到了,托管到Git了。
哎.....
页:
[1]