McBsp SPI EDMA调试(三)

2015-06-01 11:32 阅读 394 次 评论 0 条

前面介绍SPI EDMA的调试方式,那些基本的函数功能,完成了mcbsp spi的接口功能,如果需要完成spi flash的擦除或是编程,还需要设计一定的程序流程,因为Spi flash的擦除与编程速度较慢,在一个dsp程序中,不可能一直等待擦除完毕再执行以后的操作。这时EDMA方式的优点就比较明显了,发送之后等待发送完毕中断后,再处理数据。但是spi flash的状态还需要手动读取,等待状态空闲后才能进行擦除或编程操作。

以下以SPI flash的编程为例,编程涉及到擦除与编程两个过程。采用一个大的状态转移过程。

下图为状态转移的各个中间状态。

SPI Flash各个状态转移的中间状态定义

由于SPI flash处理擦除与编程的时间较长,所以需要另外一个任务去查询当前spi flash的状态,这就是通过这个任务进行状态转移。

状态转移过程

查询状态任务,在EDMA有任务需要执行,即非空闲状态时,查询spi flash的状态,然后在状态转移中进行状态转换。下图为状态查询任务,使用了超时处理,避免状态死锁。

spi flash状态查询任务

鉴于spi flash处理有些任务时间较长,所以可以将查询任务放入定时器中断任务中,个人使用50ms定时器。

使用了状态转移方式编程后,spi flash数据写入就没有再出现失败的情况。

http://yunpan.cn/cFg5EDL5pVL3W (提取码:7ce9)需要与McBsp SPI EDMA调试(二)中的函数配合使用。

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

发表评论


表情