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:MIBSPI DMA 示例代码

Guru**** 2478765 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/923472/tms570lc4357-mibspi-dma-example-code

器件型号:TMS570LC4357

您好!

我正在尝试执行 MIBSPI DMA 回送示例。 我在传输时未成功接收到数据。

我检查了 e2e 论坛并尝试解决问题。 没有成功。

我将项目附加在这里。 请告诉我、这里发生了什么问题。

e2e.ti.com/.../1104.MIBSPI_5F00_DMA.zip

Chandra

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

    您好 Chandra、

    请尝试以下函数来配置 DMACTL 寄存器。 RXDMA_MAP 应位于第20位而不是第4位。

    void mibspiDmaConfig (mibspi_t * mibspi、uint32通道、uint32 txchannel、uint32 rxchannel)

    uint32 bufid;
    //uint32 bufid =(通道+ 1)* E_COUNT - 1;

    if (mibspi =mibspiREG1){
    bufid = tgPSTART1[通道]+ E_COUNT - 1;
    }否则{
    bufid = tgPSTART3[通道]+ E_COUNT - 1;


    /*设置发送和接收通道*/
    mibspi->DMACTRL[通道]|=(rxchannel << 20)|(txchannel << 16);

    如果(F_COUNT > 1){
    mibspi->TGCTRL[通道]&= 0xBFFFFFFF;//禁用 OneShot
    }否则{
    mibspi->TGCTRL[通道]|= 0x40000000;//启用 OneShot

    /*启用发送和接收 DMA */
    mibspi->DMACTRL[通道]|= 0x8000C000;

    /*设置 DMA 传输的初始计数和用于 DMA 传输的缓冲区*/
    mibspi->DMACTRL[通道]|=(bufid=24);

    /*启用大计数传输*/
    mibspi->DMACNTLEN = 0x1;
    mibspi->DMACOUNT[通道]=(F_COUNT - 1)<< 16;

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

    您好!

    看起来代码缺少一些定义。

    什么是 tgPSTART1[通道]阵列和初始化。

    什么是 tgPSTART3[通道]阵列和初始化。

    3. 什么是 E_COUNT 和初始化(它是结束计数吗?)

    F_COUNT 和初始化是什么(它是第一个计数吗?)

    Chandra

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

    您好 Chandra、

    e_count 是元素计数、F_count 是帧计数。

    tgPSTART1[通道] 是 TGxCTRL 寄存器中的 PSTRT、对于 TG0、PSTRT 是0

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

    您好、Wang、

    植入您提供的功能后仍然没有成功。

    我将再次附加更新的项目。 请检查。 我可能无法正确理解 DMA 传输。

    请给我一个更正后的项目、以便我可以验证我的错误。

    谢谢。

    Chandrae2e.ti.com/.../3833.MIBSPI_5F00_DMA-_2800_updated_2900_.zip

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

    尊敬的王先生:

    热切寻求帮助。 即使您有一个可以分享的工作项目、这也会对我大有帮助 。

    Chandra

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

    您好 Chandra、

    附件是我在启用 DMA 的情况下 MibSPI1和 MibSPI3之间通信的示例项目。

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

    感谢王先生分享了该示例项目。

    查看代码后、我假设 SPI1配置为主模式、SW 回路模式、SPI3配置为从模式。

    有三个主文件、我使用了 HL_SYS_MAIN 文件、将另外两个文件排除在工程之外。  

    我尚未连接 SPI1和 SPI3、只想检查 SPI1回路。

    看起来在执行 main 之后它不起作用。 连接 TX 和 RX 存储器部分的屏幕截图。

    请检查一次并帮助我。

    Chandra

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

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

    对于 MibSPI DMA 没有什么特别的。 请参阅此应用手册:

    文件://C:/Users/a0324020/Documents/Catalog %20MCU/Hercules %20MCU%20App%20Notes/spna231_MibSPI_DMA.pdf

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

    您好、Wang、

    我已经浏览过该文档以及有关该主题的大多数 e2e 论坛主题。

    我只想看一下在电路板上工作的 SW 回路操作的简单案例。

    我可以看到共享 RAM 配置正确、因为 TX 缓冲区加载了数据。  

    遗憾的是、您提供的示例代码也不能与我一起用于回路。

    请求验证单板上的代码、SPI1上的回送正常。

    Chandra

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

    您好、Wang、

    代码在 SPI1 DMA 上以软件环回模式传输。

    感谢你的帮助。

    Chandra