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.

[参考译文] TMDX570LC43HDK:TMDX570LC43HDK

Guru**** 2350610 points
Other Parts Discussed in Thread: TMDX570LC43HDK, HALCOGEN, TMDS570LS31HDK, TMS570LS3137
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/609307/tmdx570lc43hdk-tmdx570lc43hdk

器件型号:TMDX570LC43HDK
主题中讨论的其他器件: HALCOGENTMDS570LS31HDKTMS570LS3137

您好!

我在使用 DMA 和 SPI 时遇到了一些问题。 我以前在 TMDS570LS31HDK 上工作、但似乎缺少有关 TMDX570LC43HDK 的详细信息。 我在环回模式中配置了 SPI2和 SPI3、并配置了8位字符长度。 有两个缓冲区:rxBuf 和 txBuf。 我正在尝试通过 DMA 向 SPI-TX-Register 馈送 txBuf 的内容。 输出数据循环回 SPI-RX-Register、而另一个 DMA 通道被设置为将数据从那里移动到 rxBuf。 正在触发 DMA 的 BTC 中断、但在 TX 端似乎有问题、我看不到数据从 txBuf 传输到 SPI-TX-Register。 我将随 Halcogen 文件附上一个小 CSS 示例。 也许有人可以看一下它并提供帮助?

此致、

Juergen

e2e.ti.com/.../8535.DMA_5F00_SPI.zip

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

    LS31xx 和 LC43xx 之间存在显著差异、即 LC43xx 具有缓存存储器。 可能发生的情况是数据存储在缓存副本中、而不是存储在指定的缓冲区中。 您是否可以尝试更改缓存设置以进行写入、并查看这是否可以解决您的问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Chuck、

    您能告诉我如何操作? 它是 Halcogen 的一种设置吗?

    此致、

    Juergen

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

    您可以修改代码并进行另一项测试吗?
    1.将 ma_TX_CTRLPKT.RDSIZE 更改为 ACCESS_16_BIT
    2.将目标地址更改为(UINT32)&(spiREG->DAT1)+2;

    并将 RX 端的数据包大小更改为16位。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 QJ、

    我已经尝试过所有这些不同的变体、都没有成功。 8位访问应该起作用、它在 R4上起作用、我通过使用8位指针写入 spiREG->DAT1+3在 R5-HDK 上验证了它。 我稍微修改了示例项目、我发现它在半透明中有绝对路径-不用于 CCS -抱歉。

    在某种程度上,即使触发了 DMA 中断,DMA 也不会写入 spiREG->DAT1+3/2。

    此致、

    Juergene2e.ti.com/.../5635.DMA_5F00_SPI.zip

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

    要将存储器设置为写入、您需要为缓冲区位置启用 MPU 区域并选择包含写入的类型。 将鼠标悬停在 TYPE 字段上将提供类型定义、包括是 Write Through (直写)还是 Write Back (回写)。 有关这些模式的更多信息、请参阅来自 ARM 的 R5 TRM。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Chuck、

    我想这会将整个存储器设置为"高速缓存写入"。

    这对我的 DMA 触发问题没有帮助、但对 SPI-TX-Register 的写入没有帮助。 我猜还有其他问题。

    此致、

    Juergen

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

    在上面您提到、您将这个代码/方法源自 R4和 R5、它起作用了。 您是指 RMxx 器件吗? 如果是、这些器件是 LE、因此如果您以8位的增量从 RAM 获取数据、则字节排序可能起作用。

    您是否能够尝试更新 QJ 建议的 DMA 数据包大小和目标地址? 特别是目标地址的改变对于成功写入正确的寄存器至关重要。

    最后、您会注意到、写入 TXBUFF 不会发生。 如何对此进行验证? 也就是说、是因为看不到标头输出、还是因为查看了 CCS 中的寄存器内容? 您能否确保 S2开关设置为 SPI 通信而不是以太网通信? 此外、检查以确保不需要配置引脚多路复用设置、从而将 SPI 引入引脚、而不是其他功能。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Chuck、

    我以前在 TMS570LS3137上运行代码。 它在一个不基于 Halcogen 的系统上运行了一个操作系统、该操作系统以编程方式完成了所有初始化代码。 引脚多路复用似乎仅对于 MibSPI 模式是必要的、我也尝试过用于测试、没有任何变化。

    我已将所有内容更改为16位访问、如 QJ 建议的那样。 结果保持不变、DMA BTC 中断被触发、但我认为没有任何东西被传输到 spiREG->DAT1寄存器。 我通过检查实际寄存器位置来验证它、它保持为零。

     

    我很确定 SPI 是否正常工作。 为了进行测试、我像这样写入 SPI 寄存器:

    uint8 *p =(uint8 *)&spiREG->DAT1+3

    *p = 0xAB;

    这种情况很正常、0xAB 会环回至 spiREG->BUF+3、您可以在屏幕截图中看到该情况。

    基本上、我认为这只是一个小问题。 SPI 工作、DMA 触发器、但 DMA 不会以某种方式传输到 SPI-DAT1+3 (或用于16位访问  的 SPI-DAT1+2)寄存器。

    此致、

    Juergen

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

    很抱歉、我点击了错误的按钮并将其标记为"TI 认为已回答"、但这是一个意外。 请忽略这一点。

    我很好奇、您是否可以尝试通过手动向 TXBUFF 写入要发送的第一个字节来启动该过程。 我知道这就是 SCI 的工作方式、为了启动第一个 TX、您必须手动执行它、然后 DMA 将接管。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Chuch、

    我认为这不是必要的、TRM 说:

    当下列任一项为真时、第一个 TX_DMA_REQ 脉冲被生成:

    •DMA 请求 EN (SPIINT0[16])被设定为1、而 SPIEN (SPIGCR1[24])已经为1。

    •SPIEN (SPIGCR1[24])被设定为1、而 DMA 请求 EN (SPIINT0[16])已经为1。

    这应该由我的代码行来确保:

    spiREG->GCR1 =(spiREG->GCR1 & 0xFEFFFFFFU)| 0x01000000U;//启用 SPI

    spiREG->INT0 =(spiREG->INT0 & 0x0000FFFFU)| 0x00010000;//设置 DMAREQEN

    我尝试过这两种方法、结果都是一样的。 SPI 回路回到正常模式、DMA BTC 中断被触发。 我认为这意味着连接 txBuf<->DMA <->SPI-TX-Register 设置错误。 我必须 在 TRM/datasheet 中缺少详细信息。

    此致、

    Juergen

     

     

     

     

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

    我已要求 QJ 再次查看此主题、看看他是否可以发现我丢失了什么。