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.

C6000 DMA问题

你好,初次用C6000,用了EDMA3的GPIO外部中断触发传输,如果希望传输完成进入中断就停止EDMA传输,定时时间到了再继续开启,但是EDMA怎么可以停止?另外一个问题是,在其它主函数里怎么知道现在EDMA已经传输了几个数据了呢?

  • 1. 如果要停止EDMA传输的话,要link到NULL PaRAM set。没有传输完是不会停止的。
    2. 传输完后才会停止,所以可以查看ACNT, BCNT, CCNT。
  • 将PaRAM link到NULL,在下次启动前清除事件丢失寄存器。
    If the PaRAM set associated with the channel is a NULL set (see Section 16.2.3.3), then no transfer
    request (TR) is submitted and the corresponding En bit in ER is cleared and simultaneously the
    corresponding channel bit is set in the event miss register (EMR.En = 1) to indicate that the event was
    discarded due to a null TR being serviced. Good programming practices should include cleaning the event
    missed error before retriggering the DMA channel.
    16.2.3.3 Null PaRAM Set
    A null PaRAM set is defined as a PaRAM set where all count fields (ACNT, BCNT, and CCNT) are
    cleared to 0. If a PaRAM set associated with a channel is a NULL set, then when serviced by the
    EDMA3CC, the bit corresponding to the channel is set in the associated event missed register (EMR or
    QEMR). This bit remains set in the associated secondary event register (SER or QSER). This implies that
    any future events on the same channel are ignored by the EDMA3CC and you are required to clear the bit
    in SER or QSER for the channel. This is considered an error condition, since events are not expected on
    a channel that is configured as a null transfer. See Section 16.4.2.5.8 and Section 16.4.2.2.1 for more
    information on the SER and EMR registers, respectively.
    edma传输的数据与PARAM中参数的配置有关。