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.

[参考译文] TMS320F280023:在 SCI 模式下从 LIN 传输 DMA 字节时出现问题

Guru**** 2393725 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1121989/tms320f280023-issue-with-dma-byte-transfer-from-lin-in-sci-mode

器件型号:TMS320F280023
主题中讨论的其他器件:C2000WARE

我正在尝试使用一个配置为 SCI 模式的 LIN 模块、在接收到每个字节后、使用一个带有单个缓冲器的 DMA 模块将接收到的数据传输到内存。  从 C2000WARE 示例程序"LIN_ex3_sci_dma"开始、我修改了 LIN 配置以禁用多缓冲模式、并重新配置了 DMA 以在每次突发传输一个字节。  当修改后的程序似乎成功地通过发送 DMA 加载和发送数据时、接收 DAM 将不会从 Rx 缓冲器传输数据。  通过实验、我能够通过添加接收 DMA 引擎的初始强制触发器来使其正常工作、从而启动它。  我无法理解的是、为什么接收 DMA 在发出强制触发后忽略 RX DMA 请求?

修改后的源文件随附所有用"//modified"标识的更改。

e2e.ti.com/.../4278.lin_5F00_ex3_5F00_sci_5F00_dma.c

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

    Don、

    让我将其发送给我们的 LIN 专家!

    马上回来!

    NIMA

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

    您好、Don、

    数据可能在启用触发器之前到达。 您能否在"dma_startChannel"发生之前查看数据是否已在缓冲区中? 我认为这会导致这种情况。

    此致、

    Vince

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

    尊敬的 Vince:

    感谢您的建议。  但是、我不认为这是问题所在、因为在发送任何数据之前已启用接收 DMA。  我还验证了在发送第一个字节之前、LIN RXRDY 标志以及接收 DMA TRANSFERSTS 和 PERINTFLG 标志都会被清零、表明 LIN 尚未接收到数据、接收 DNA 也未接收到触发信号。   

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

    您好、Don、

    对于 LIN-SCI 方面,如果您不处于多缓冲模式,则需要检查以下所需内容:

    LIN/SCI 模块中是否存在任何接收错误? 检查所有错误寄存器、如果设置了任何错误、则不会发生 DMA 请求。

    2.在你期待的时候,缓冲区中实际上有数据吗? 尤其是在 RD7中。 如果第一个接收没有任何内容、则不会发送 DMA 请求。

    3.设置的 RX DMA 位是否已设置? 否则、将不会发送 DMA 请求。

    4.是否设置了"设置 RX DMA 全部"位并且您处于多处理器模式? 如果在多处理器模式下、并且 DMA All 位设置不正确、则不会为数据帧或地址帧发送 DMA 请求(具体取决于您设置的方式)。 这特定于多处理器模式。

    睡眠位是否已设置? 如果该位被置位、则不会发送 DMA 请求。

    如果您已确保正确设置/清除上述所有内容、则这可能是 DMA 配置问题。 届时我将与 DMA 专家联系以验证这一点。

    此致、

    Vince

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

    谢谢 Vince、

    问题出在“Set RX DMA All (设置 RX DMA 全部)”。  我没有设置它、因为我不使用多处理器模式。  但是、在单字节模式下接收到的第一个字节似乎不会触发 DMA、除非无论您是否使用多处理器模式、都已设置了该位。  设置该位后、所有操作均按预期工作。  如果我的理解不正确、请告诉我。

    谢谢、

    Don