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.

[参考译文] TMS570LC4357:Hercules TMS570LC43 DMA 在 SCI3问题上发送

Guru**** 2455360 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1197857/tms570lc4357-hercules-tms570lc43-dma-send-on-sci3-issue

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

器件:TMS570LC4357BZWTQQ1

编译器:TI Clang v2.1.0.LTS、BE32

问题:当使用 DMA 在 SCI3上配置发送串行数据缓冲器时、缓冲器最后一个字节的 MSB 始终在线上设置。  g_dmaCTRL 中设置的缓冲区没有该位设置、并且在 SCI 上直接发送时、该位不会设置。  当使用 DMA 时、该位始终被置位、我们在最后2个字节中携带 CRC、因此它显示为间歇性帧错误。

g_dmaCTRL 设置为 thusly:

G_dmaCTRL dmaControl ={.Sadd = ADDRESS_AS_NUMBER、.DADD = SCI3_TX_ADDR、.CHCTRL = 0、
.FRCNT =长度、.ELCNT = 1、.ELDOFFSET = 0、
.ELSOFFSET = 0、.FRDOFFSET = 0、.FRSOFFSET = 0、
.PORTASGN = PORTA_READ_PORTB_WRITE、.RDSIZE = ACCESS_8_BIT、
WRSIZE = ACCESS_8_BIT、.tType = FRAME_TRANSFERT、.ADDMODERD = ADDR_INC1、
.ADDMODEWR = ADDR_FIXED、.AUTOINIT = AUTOINIT_OFF};

我们列出了 BTC 中断以确认发送已完成:

dmaEnableInterrupt (DMA_CH0、BTC、DMA_INTA);

我不确定从何处开始推文来解决这一问题。  任何见解都值得赞赏。

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

    您好、Michael、

    [引用 userid="530408" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1197857/tms570lc4357-hercules-tms570lc43-dma-send-on-sci3-issue 当使用 DMA 配置在 SCI3上发送串行数据缓冲器时,缓冲器最后一个字节的 MSB 始终在线路上设置。

    如果我理解正确、无论 MSB 的值是多少(即逻辑0或逻辑1)、它都会作为逻辑1传输到目标。 是这样吗?

    您是否有机会使用 HALCoGen 中存在的 SCI DMA 示例验证您的代码?

    如果您确保代码正确、是否可以对代码进行格式化? 至少是仅具有 SCI 和 DMA 的最低版本?

    --

    谢谢、此致、
    Jagadish。