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.

[参考译文] CCS/TMDS570LS31HDK:SPI2 TX DMA 不会停止-从外部连接到 SPI4数据正常。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/789860/ccs-tmds570ls31hdk-spi2-tx-dma-will-not-stop---externally-connected-to-spi4-the-data-is-fine

器件型号:TMDS570LS31HDK

工具/软件:Code Composer Studio

使用相同的硬件和软件、我将每200us 执行16个字的 SPI2 TX DMA。 当我设置 SPIEN 位时、进程开始输出数据。 我  每200us 在 SPI4 RX DMA 上读取一次 OK 中的数据。 问题是 SPI2 TX 不会停止,除非我在大约100us 后清除 SPIEN 位。 波特率为2M、因此有足够的时间。 每200us:

if (((SPI2_DMA_buf[SPI_DMA_SIZE-1]和0xFFFF)!=(SPI4_DMA_buf[SPI_DMA_SIZE-1]))//SPI_DMA_SIZE-1

匹配错误++;

对于(k=0;k<(SPI_DMA_SIZE);k++)

SPI2_DMA_buf[k]+= 1;

/*为 SPI4接收设置 DMA */

spiREG4->INT0 =(spiREG4->INT0 | 0x00010000);//启用 DMAREQEN *

/*为 SPI2传输设置 DMA */

spiREG2->INT0 =(spiREG2->INT0 | 0x00010000);//启用 DMAREQEN *

 

示波器显示连续数据。 为什么不停止呢?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Thomas:
    每次 TX 数据从 TXBUF 或外设数据总线复制到 TX 移位寄存器时(当 TXBUF 为空时)、SPI 都会在 TX_DMA_REQ 线路上生成一个请求。 是否可以附加 DMA 控制数据包配置?

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

    您好!

    当然。 我发送了整个主代码、因为还有很多其他 DMA 发生。 有关程序 为 dmaConfigCtrlPacketSPI2.e2e.ti.com/.../1263.sys_5F00_main.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    请尝试将帧计数更改为1、将元素计数更改为 dsize。

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

    这会产生垃圾输出:12、00、04、12、04、12、07、12、02、12、08等、而不是以前的1、2、3、4、5、6、7等

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

    我已通过在 SPI2 DMA 中将 AUTO_INIT 设置为 OFF 来解决该问题。