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.

[参考译文] TMS320F280025C:从 LIN/SCI 模块启动 DMA 的问题

Guru**** 2439710 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/974648/tms320f280025c-problems-of-starting-dma-from-lin-sci-module

器件型号:TMS320F280025C

尊敬的团队:

我的一个客户参考例程(LIN_ex3_sci_DMA)将 Lin 模块配置为 SCI 使用。 在该示例中、使用了多缓冲模式、需要进行修改以禁用多缓冲模式。 但是、在更改为禁用多缓冲器模式后、SCI 无法启动 DMA。 问题可能出在哪呢? 下面是他更改代码的位置:

主要方案定义:

修改 DMA 初始化函数 initdma()


3.修改 Lin / SCI 配置函数 configurescimode (void):


运行结果:

观察  LIN 的 SCITD 和 SCIRD、数据是相同的、都是7FH。 因此、LIN/SCI 正常工作。 DMACH6的目的地址和源地址 未被激活、这表明 DMACH6 没有接收到 RX_DMA 信号。  观察   LIN 的 SCISETINT 中的 SET_RX_DMA 和 SET_TX_DMA、两者都为0。 此器件尚未修改、且原始样片程序相同。  随附了原始采样程序的运行结果:

此外、技术手册中是否有任何错误?

SPRUIN7中给出的 LIN 寄存器地址如下:

driverlib 中定义的地址如下:

此致

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

    您好!

    让我详细了解一下您捕获的详细信息、并在一两天内回复您。

    是的、TRM 偏移地址需要固定、并且必须与 driverlib 头文件偏移地址匹配。 我将在下一个版本中提交一个 TT 以执行此操作。

    此致、

    Nirav

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

    您好 Nirav:

    此帖子中的问题是否有任何进展?

    此致

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

    大家好、绿光-我们仍在研究、未来几天应该会为您提供答案。 对延误表示歉意。

    此致、

    Nirav

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

    您好 Nirav:

    感谢您的持续关注、并期待您的测试结果。

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

    绿色环保、

    我查看了您提供的寄存器转储、看起来 SCISETINT.SET_RX_DMA 和 SCISETINT_SET_TX_DMA 位未设置。 如果您在 TRM 中浏览以下部分、则会指出、如果禁用了多缓冲模式、则需要设置 SET_RX_DMA 和 SET_TX_DMA 位。 您能否尝试设置这些位、希望这可以解决该问题。

    24.2.4.1.1在单缓冲模式下接收数据

    当 SCIGCR1中的 Mbuf 模式位清零时、选择单缓冲模式。 在此模式下、SCI 在将新接收的数据从 SCIRXSHF 传输到 SCIRD 时设置 RXRDY 位。 读取 SCIRD 中的新数据后、SCI 将 RXRDY 位清零。 此外、当数据从 SCIRXSHF 传输到 SCIRD 时、如果在接收到的数据中检测到这些错误条件中的任何一个、SCI 会设置 FE、OE 或 PE 标志。 这些错误条件受可配置中断功能支持。 如果发生这些错误之一、则唤醒和中断检测状态位也会置1、但不一定在新数据加载到 SCIRD 的同时发生。 您可以按以下方式接收数据:1. 轮询接收就绪标志2。 接收中断3。 DMA 在轮询方法中、一旦 RXRDY 位置为高电平、软件就可以轮询 RXRDY 位并从 SCIRD 寄存器中读取数据。 通过选择轮询方法、CPU 被不必要地过载。 为避免这种情况、您可以使用中断或 DMA 方法。 要使用中断方法、应设置 RX INT 位。 要使用本地互连网络(LIN) DMA 方法、设置 RX DMA 位。 RXRDY 位置位时、会产生中断或 DMA 请求

    24.2.4.2.1在单缓冲模式下传输数据

    当 SCIGCR1中的 Mbuf 模式位清零时、选择单缓冲模式。 在此模式下、SCI 等待数据写入 SCITD、将其传输到 SCITXSHF、然后传输数据。 TXRDY 位和 TX 空位指示发送缓冲区的状态。 也就是说、当发送器准备好将数据写入 SCITD 时、TXRDY 位置位。 此外、如果 SCITD 和 SCITXSHF 都为空、则 TX 空位也会被置位。 您可以通过以下方式传输数据:1. 轮询发送就绪标志2。 发送中断3。 DMA 在轮询方法中、软件可以轮询 TXRDY 位是否变为高电平、然后再将数据写入 SCITD 寄存器。 通过选择轮询方法、CPU 被不必要地过载。 为了避免这种情况、您可以使用中断或 DMA 方法。 要使用中断方法、应设置 TX INT 位。 要使用 DMA 方法、设置 TX DMA 位。 当 TXRDY 位置位时、就会产生中断或 DMA 请求。 当 SCI 已完成所有挂起帧的传输时、SCITXSHF 寄存器和 SCITD 为空、TXRDY 位被置位、并且如果被启用、一个中断/DMA 请求被生成。 由于所有数据已经被发送、中断/DMA 请求应该被暂停。 这可以通过禁用发送中断(CLR TX INT)/DMA 请求(CLR TX DMA 位)或禁用发送器(清除 TXENA 位)来完成。

    此致、

    Nirav