This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

cc3200 sd卡 dma 配置后无法传输

Other Parts Discussed in Thread: CC3200, CC3200SDK

cc3200 sd卡配置DMA传输后,使用DMA写数据时,发送SendCmd(CMD_WRITE_MULTI_BLK|SDHOST_DMA_EN, ulBlockNo)命令后,DMA进入写完成中断SDHOST_INT_DMAWR,但端口没有数据写出。想问一下有相关例程吗?如果没有直接的例程能否回答以下问题:

1.SDHOST_INT_DMAWR是电平触发还是脉冲触发?文档上写的是传输完成置位,但没有在寄存器中找到相应标志位。由此触发的中断是表示DMA将数据搬到SD卡的BUFF里传输完成吗?

2.使用DMA搬数据时,是先将数据搬完再发送写命令还是先发写命令再搬数据呢?如果先发写命令的话,会不会由于DMA侧总线阻塞而造成数据超时?如果先搬数据再发命令,会不会将命令之前的数据冲刷掉?DMA搬数据时需要增加除DMA,INT之外其他配置吗?

3.哪个中断表示实际传输完成?SDHOST_INT_TC这个标志是不是只表示数据总线状态,也就是数据总线上电平的实时测量值?

  • 只有DMA的例程,uart_dma,路径:C:\ti\CC3200SDK_1.3.0\cc3200-sdk\example

    其他问题assign给wifi专家了,请等待回复

  • 谢谢您!uart_dma的例子我看了,4种传输方式都有,挺全的。但我对dma的中断还是比较模糊,比如中断产生时刻,中断的类型以及如何清除中断。比如sd host模块中,我使用的SDHOST_INT_DMAWR中断,它是dma写传输完成之后产生的吗?因为此中断是在sd host模块中产生,他也可能是dma写传输完成之后并且写入sd卡之后产生的。另外,进入中断后清除,一般使用MAP_SDHostIntClear(SDHOST_BASE,SDHOST_INT_DMAWR);直接清除就好了,但这个中断清除后还会重复进入,我现在都不知道怎么清除了,只能进去之后先关上。

    有详细讲sd host模块各中断的文档吗?或者相关例程让我参考下。