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.

[参考译文] TMS320F28.0025万C:DMA中断问题

Guru**** 2460850 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1089395/tms320f280025c-dma-interrupt-issue

部件号:TMS320F28.0025万C

大家好,

以下是客户提出的问题,可能需要您的帮助:

例行程序:lin_ex3_sci_dma,修改如下:  

UINT32_t预校准器=0x0.0144万;
uINT16_t分配器=0x0008;

已将波特率更改为  1.92万.

DEVICE_INITGPIO ();
GPIO _setPinConfig (DEVICE_GPIO _CFG_LINTXA);
GPIO _setPinConfig (DEVICE_GPIO _CFG_LINRXA);

初始化GPIO。

//中断启用(INT_DMA_CH5);
INTERRUL_ENABLE (INT_DMA_CH6);

屏蔽传输中断,仅保留接收中断。

LIN_DisableIntLoopback (Lina_base);

闭合回路。

dma_setInterruptMode (dma_ch6_base,dma_INT_AT_Beginning);

中断设置为“On-Interrupt (开启-中断)”

interrupT_clearACKGroup(interrupT_ACK_group7);

在DMA通道6中断中仅保留清除标志位

问题:DMA确实会移动数据,但只有第一次发送数据时才会触发DMA通道6的中断,而后续数据无法触发中断。 要求是每次接收数据包DMA时串行端口都会触发中断。

您可以帮助检查此问题吗? 谢谢。

此致,

樱桃

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    樱桃,

    DMA中断在DMA传输开始时或DMA传输结束时生成。 DMA不会在每次突发完成时生成DMA中断。 如果希望每次突发完成时都能看到DMA中断,则transfer_size应为1

    此致,

    Manoj

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Manoj,

    感谢你的帮助。

    他们也注意到了这一点, 而且每次都会触发中断,客户将突发长度设置为8,每次中断仅接收4 U16,并且在更长的时间仍为4 U16。 发送32字节数据,每次接收数据时数据都是相同的。

    谢谢,此致,

    樱桃

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    樱桃,

    选择16位读取(或) 32位读取取决于寄存器大小。

    例如:对于SCIRD / SCITD,您可以使用16位。

    当脉冲大小设置为8时,您应该接收8位,16位而不是4位。

    此致,

    Manoj