McBsp SPI EDMA调试(二)

2015-05-21 20:28 阅读 1,824 次 评论 2 条

读取ID调试完成后,开始调试Read Memory,即从SPI Flash中读取数据。默认应该为全0xFF,但如果读取失败也可能返回全0xFF,所以最好将写入(Program)调试与读取调试同时进行。

SPI Flash Program流程:先将Flash置为Write Enable状态,读取Status Register,然后再擦除(Erase),读取Status Register,置为Write Enable状态,最后才是编程(Program)。

注意:Write Enable为一个字节指令,发送时只能发送一个字节(对于Micron N25Q128A型nor flash实测结果)。如果发送两个字节就失败了。

擦除完之后,还需要再次置为Write Enable状态,然后才能进行program操作。

在Write Enble、Erase、Program指令发送完毕之后都需要等待一段时间后,指令才能执行完毕,需要读取Status Register判断指令是否执行完毕。

SPI Flash调试起来确实麻烦,数据不能直观看见。DSP C6000的mcbsp支持loopback模式调试,可以将从DSP发送的数据,从接收通道接收回来,这对调试有些作用。

在调试过程中遇到的问题是,读取Flash中的数据为全0xFF,通过其它非EDMA方式的程序读取并非全0xFF,所以程序有问题。后来查出在Mcbsp发送数据时,需要配置发送帧中的数据长度,这样才能保证持续的片选信号。

增加设置发送数据帧长度代码

上图为增加设置发送数据帧长度代码。增加更新帧长度信息后,读写均正常了。

本日志附带调试的源代码如下:http://yunpan.cn/cHi5cS8wamfyB (提取码:c29f)

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:McBsp SPI EDMA调试(二) | 起点博客
分类:应用笔记 标签:, , , ,

发表评论


表情

  1. 电脑民工
    电脑民工 【农民】

    外接spiflash感觉edma效率也不高,时间主要消耗在擦除或写入的等待时间上

  2. will
    will【站长】

    做几个状态转移,将等待的时间去处理其他任务