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.

[参考译文] AM263X-AM263X:MCU-PLUS-SDK

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1372341/mcu-plus-sdk-am263x-am2634

器件型号:MCU-PLUS-SDK AM263X

工具与软件:

  我正在使用 AM263X-LP 并希望在4个 ADC 通道(所有通道均以其最大采样率工作)上实现同步采样、以下哪项是最佳的示例工程?

 请说明在下面提到的两种情况下获得的输出的差异

    1.利用1个 ADC 模块和4通道实现同步采样。

    2. 使用4个 ADC 模块实现同步采样,每个模块使用单个通道。

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

    嘿、Tej、

    请参阅 SDK 中的 ADC 多 SOC EPWM 示例。

    https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/latest/exports/docs/api_guide_am263x/EXAMPLES_DRIVERS_ADC_MULTIPLE_SOC_EPWM.html

    单个 ADC 将无法同时对4个不同的采样电压进行采样。 不过、您可以对4个独特 通道的采样进行多路复用。 使用由4个独立 ADC 组成的单个通道、您可以同时对4个不同的信号进行采样。 获得的输出值不会因方法而异。

    此致、

    Zackary Fleenor

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

    HII Fleenor、

    感谢您的建议、
    在 ti E2E 中完成多个线程后、我意识到 了 AM263x MCU+ SDK:ADC SOC 连续 DMA 是同步采样以获得更高频率信号的更好选择。 当我将采样率设置为3.2Msps (或低)时运行良好、但当我将采样率设置为4Msps (通过更改 ADC 时钟预分频器)时、两个通道上的相同信号(两个信号具有相同属性)存在相位差。 下面我附上了同样的图像。

    如何解决此问题??


    采样率= 3.2msps (近似值)、正弦波频率= 400kHz (在两个通道上)




    采样率= 4MSPS、正弦波频率= 400kHz (双通道)

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

    嘿、Tej、

    只是为了确认我们的理解:

    您使用的是来自同一 ADC 的2个通道(橙色线和蓝色线)?

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

    否、我将使用两个不同的 ADC 实例 ADC1和 ADC2 (每个通道一个)。  

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

    理解、感谢澄清和400kHz 正弦波、是每个通道有专用源、还是分支到两个输入通道的单个源?

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

    HII Fleenor、

    每个通道都有专用的时钟源。

    我将从两个不同的函数发生器通道获取正弦波、但我要确保这些设置、

    相位通道1 =通道2的相位

    2.通道1的频率=通道2的频率

    3.通道1的电平=通道2的电平

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

    感谢您提供信息。 还有一些后续问题:

    1) 1)函数发生器与 LaunchPad 引脚的连接线是否直接相连?

        1a)它们的长度、规格和连接器是否相同?  

        1b)您是否能够为每个通道使用专用函数发生器进行测试?  

    2) 2)您是否对 Launchpad 进行了任何修改?

    3) 3)您能否分享项目 ADC 配置详细信息?

    此致。

    Zackary Fleenor

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

    感谢您提供这些附加信息!

    可以将鳄鱼夹直接连接到 LP 插头引脚。 M2F 跳线在电气参数方面趋向高度可变。

    我将向我们的一位软件专家循环、针对在为第3个/第4个 ADC 结果添加额外传输时遇到的 DMA 问题提供额外的见解和反馈。

    此致、

    Zackary Fleenor

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

    HII Fleenor、

    我找到了 DMA 问题。

    我已将事件队列值初始化为2。  

    #define EDMA_TEST_EVT_QUEED_NO_2 2U

    APP_dmaConfigure (gAdc3DataBuffer、Results_buffer_size、gEdmaHandle[0]、
    ADC3_EDMA_CHANNEL、CONFIG_ADC3_RESULT_BASE_ADDR、&tccAlloc2、EDMA_TEST_EVT_QUEED_NO_2);

    但在 TRM 中、事件队列(0和1)只能有2个值。

    我的问题是、如果只有2个事件队列、那么如何针对4个通道(1个通道、4个不同实例)实现真正的同步采样?

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

    尊敬的 Tej:  

    从 DMA 的角度来看、可以有2个同时传输、因为有2个传输控制器。 从 ADC 的角度来看、由于有5个 ADC、因此可以有5个同步采样。 但是 DMA 传输比 ADC 采样率快得多、 因此不会导致您的非同步 ADC 传输。

    示例中的 DMA 通道被单独设计、在一个空传输完成后、用于将16位数据从1个 ADC 传输到1个缓冲器。  

    在尝试不同的 DMA 配置之前、让我们尝试从 ADC 配置方面查看。

    1. 示例中的 ADC 由其自身的 INT 触发。 您的项目中也是如此吗? 如果不是、那么触发源是什么、它们是同步的
    2. 但是当我将采样率设置为4MSPS (通过更改 adc 时钟预分频器)
      您尝试的预分频器配置更改是什么? s/h 值以及这个分别是什么?  

    谢谢。此致、

    Madhava

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

    尊敬的 Madhava:

    1.是的。ADC 由自己的 INT 触发。

       下面提到了各种办法:

       a)使用 ePWM0、ADCSOCA 完成第一次 ADC 转换。 INT1、INT2在转换结束时生成。

       b)  ADC0_INT1链接到 INT_XBAR_0以生成中断。

       c)当在首次转换后收到中断时、我将禁用 EPWM 触发器和 ADC0_INT1。

       D)从这一点开始、INT2被用于启动转换中断。
       

        

        
       
        

    2. 我已将 S/H 窗口分配为16 (SYSCLK 周期)、所有情况下均为80ns。  

      当我进行 ADCCLK =(输入时钟)/ 4.5 (采样率= 3.2MSPS 大约)时、它对2个 ADC 通道有效。

      当我使 ADC 预分频器3或更低(采样率>= 4MSPS 大约)时、在采样2信号时会存在一些相位差
      更高的频率。

      下面是我计算采样率的公式。

       


     主要问题在于当我同时对4个 ADC 进行采样时、即使采样率为3.2MSPS、也会存在相位差。
      
     我已经 在先前的响应中分享了 DMA Param 配置的详细信息。

     谢谢。

      

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

    尊敬的 Madava:

    正在等待您的回复

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

    尊敬的 Tej:  

    "我是你的,我是你的。"  

     当我同时对4个 ADC 进行采样时、主要问题在于、即使采样率为3.2MSPS、也存在相位差。
    [报价]

    那么、在采样率也为3.2MSPS 时、您还面临相位差吗? 您能否同时分享在3.2Msps、4 ADC 条件下的观察结果?  

    谢谢。此致、

    Madhava

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


    尊敬的 Madhava:

    是的、即使采样率为3.2MSPS、我也面临相位差问题。




    这是我在4 ADC 同步采样模式下获得的观测结果。

     下面给出了我调用 App_dmaConfigure 函数的顺序:

    APP_dmaConfigure (gAdc1DataBuffer、Results_Buffer_Size、gEdmaHandle[0]、
    ADC1_EDMA_channel、CONFIG_ADC1_RESULT_BASE_ADDR、&tccAlloc0、EDMA_TEST_EVT_QUET_NO_0);

    APP_dmaConfigure (gAdc2DataBuffer、Results_Buffer_Size、gEdmaHandle[0]、
    ADC2_EDMA_channel、CONFIG_ADC2_RESULT_BASE_ADDR、&tccAlloc1、EDMA_TEST_EVT_QUET_NO_1);

    APP_dmaConfigure (gAdc3DataBuffer、Results_buffer_size、gEdmaHandle[0]、
    ADC3_EDMA_CHANNEL、CONFIG_ADC3_RESULT_BASE_ADDR、&tccAlloc2、EDMA_TEST_EVT_QUEED_NO_0);

    APP_dmaConfigure (gAdc4DataBuffer、Results_buffer_size、gEdmaHandle[0]、
    ADC4_EDMA_channel、CONFIG_ADC4_RESULT_BASE_ADDR、&tccAlloc3、EDMA_TEST_EVT_QUEED_NO_1);



    uint16_t App_dmaConfigure(
            const uint16_t *table, uint16_t table_size,
            EDMA_Handle dma_handle, uint32_t dma_ch,
            uint32_t adc_base, uint32_t *tccAlloc, uint32_t event_queue_number)
    {
    
        uint32_t            baseAddr, regionId;
        EDMACCPaRAMEntry    empty_edmaParam, edmaParam;
        uint32_t            empty_dmaCh, dmaCh, empty_tcc, tcc, empty_param, param;
        // EDMACCPaRAMEntry    empty_edmaParam;
        // uint32_t            empty_dmaCh, empty_tcc, empty_param;
        int32_t             testStatus = SystemP_SUCCESS;
    
        uint32_t chainOptions = (EDMA_OPT_TCCHEN_MASK |
                                 EDMA_OPT_ITCCHEN_MASK);
    
        baseAddr = EDMA_getBaseAddr(gEdmaHandle[0]);
        DebugP_assert(baseAddr != 0);
    
        regionId = EDMA_getRegionId(gEdmaHandle[0]);
        DebugP_assert(regionId < SOC_EDMA_NUM_REGIONS);
    
    
        empty_dmaCh = dma_ch;
        testStatus = EDMA_allocDmaChannel(gEdmaHandle[0], &empty_dmaCh);
        DebugP_assert(testStatus == SystemP_SUCCESS);
    
        empty_tcc = EDMA_RESOURCE_ALLOC_ANY;
        testStatus = EDMA_allocTcc(gEdmaHandle[0], &empty_tcc);
        DebugP_assert(testStatus == SystemP_SUCCESS);
    
        empty_param = EDMA_RESOURCE_ALLOC_ANY;
        testStatus = EDMA_allocParam(gEdmaHandle[0], &empty_param);
        DebugP_assert(testStatus == SystemP_SUCCESS);
    
        dmaCh = EDMA_RESOURCE_ALLOC_ANY;
        testStatus = EDMA_allocDmaChannel(gEdmaHandle[0], &dmaCh);
        DebugP_assert(testStatus == SystemP_SUCCESS);
        printf("allocated dma channel %d \n",dmaCh);
        tcc = EDMA_RESOURCE_ALLOC_ANY;
        testStatus = EDMA_allocTcc(gEdmaHandle[0], &tcc);
        DebugP_assert(testStatus == SystemP_SUCCESS);
        /* Passing back the Channel parameter to register the interrupt ISR*/
        *tccAlloc = tcc;
        printf("counter assigned %d \n",counter++);
        param = EDMA_RESOURCE_ALLOC_ANY;
        testStatus = EDMA_allocParam(gEdmaHandle[0], &param);
        DebugP_assert(testStatus == SystemP_SUCCESS);
    
        /* Request channel */
        EDMA_configureChannelRegion(baseAddr, regionId, EDMA_CHANNEL_TYPE_DMA,
             empty_dmaCh, empty_tcc, empty_param, event_queue_number);
    
        /* Program Param Set */
        EDMA_ccPaRAMEntry_init(&empty_edmaParam);
        empty_edmaParam.srcAddr       = (uint32_t) SOC_virtToPhy((void *)(adc_base+CSL_ADC_RESULT_ADCRESULT0));
        empty_edmaParam.destAddr      = (uint32_t) SOC_virtToPhy((void *)gUnusedBuffer);
        empty_edmaParam.aCnt          = (uint16_t) 2;
        empty_edmaParam.bCnt          = (uint16_t) table_size;
        empty_edmaParam.cCnt          = (uint16_t) 1;
        empty_edmaParam.bCntReload    = 0;
        empty_edmaParam.srcBIdx       = (int16_t) EDMA_PARAM_BIDX(0);
        empty_edmaParam.destBIdx      = (int16_t) EDMA_PARAM_BIDX(2);
        empty_edmaParam.srcCIdx       = (int16_t) 0;
        empty_edmaParam.destCIdx      = (int16_t) 0;
        empty_edmaParam.linkAddr      = 0xFFFFU;
        empty_edmaParam.srcBIdxExt    = (int8_t) EDMA_PARAM_BIDX_EXT(0);
        empty_edmaParam.destBIdxExt   = (int8_t) EDMA_PARAM_BIDX_EXT(2);
        empty_edmaParam.opt           = (EDMA_OPT_TCINTEN_MASK | EDMA_OPT_ITCINTEN_MASK |
                                  ((((uint32_t)empty_tcc) << EDMA_OPT_TCC_SHIFT) & EDMA_OPT_TCC_MASK));
    
    
        EDMA_setPaRAM(baseAddr, empty_param, &empty_edmaParam);
    
        EDMA_configureChannelRegion(baseAddr, regionId, EDMA_CHANNEL_TYPE_DMA, dmaCh, tcc, param, event_queue_number);
    
        /* Program Param Set */
        EDMA_ccPaRAMEntry_init(&edmaParam);
        edmaParam.srcAddr       = (uint32_t) SOC_virtToPhy((void *)(adc_base+CSL_ADC_RESULT_ADCRESULT0));
        edmaParam.destAddr      = (uint32_t) SOC_virtToPhy((void *)table);
        edmaParam.aCnt          = (uint16_t) 2;
        edmaParam.bCnt          = (uint16_t) table_size;
        edmaParam.cCnt          = (uint16_t) 1;
        edmaParam.bCntReload    = 0;
        edmaParam.srcBIdx       = (int16_t) EDMA_PARAM_BIDX(0);
        edmaParam.destBIdx      = (int16_t) EDMA_PARAM_BIDX(2);
        edmaParam.srcCIdx       = (int16_t) 0;
        edmaParam.destCIdx      = (int16_t) 0;
        edmaParam.linkAddr      = 0xFFFFU;
        edmaParam.srcBIdxExt    = (int8_t) EDMA_PARAM_BIDX_EXT(0);
        edmaParam.destBIdxExt   = (int8_t) EDMA_PARAM_BIDX_EXT(2);
        edmaParam.opt           = (EDMA_OPT_TCINTEN_MASK |
                                  ((((uint32_t)tcc) << EDMA_OPT_TCC_SHIFT) & EDMA_OPT_TCC_MASK));
    
        /* Enabling the Interrupt for Transfer complete of all the data */
        EDMA_setPaRAM(baseAddr, param, &edmaParam);
    
    
        EDMA_chainChannel(baseAddr, empty_param, dmaCh, chainOptions);
    
        EDMA_enableTransferRegion(baseAddr, regionId, empty_dmaCh,
                                  EDMA_TRIG_MODE_EVENT);
        return testStatus;
    }
    
    
    void App_dmach0ISR(Edma_IntrHandle intrHandle, void *args)
    {
        SemaphoreP_Object *semObjPtr = (SemaphoreP_Object *)args;
        DebugP_assert(semObjPtr != NULL);
        printf("inside the interrupt \n");
       
        ADC_setInterruptSOCTrigger(gAdc1baseAddr, ADC_SOC_NUMBER0,
                                   ADC_INT_SOC_TRIGGER_NONE);
        ADC_setInterruptSOCTrigger(gAdc2baseAddr, ADC_SOC_NUMBER0,
                                   ADC_INT_SOC_TRIGGER_NONE);
        ADC_setInterruptSOCTrigger(gAdc3baseAddr, ADC_SOC_NUMBER0,
                                   ADC_INT_SOC_TRIGGER_NONE);
    
        /* Post the semaphore to signal end of DMA transfer */
        SemaphoreP_post(semObjPtr);
    }



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

    尊敬的 Tej:

    假设它们都采样相同的波形、我希望至少有几个同步。 一些后续问题、

    1. ADC 之间的这种相位差异 是在不同的运行模式下始终保持恒定、还是随机的? 我想了解 ADC 的采样是否是异步编程的
    2. ADC 是否 从每次运行的复位开始? -尝试了解以前运行的配置是否重叠。

    谢谢!

    Madhava  

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

    HII Madhava,

    1 -否、相位差放大器的 ADC 在不同的照射行程中并不恒定。

    2 -否、ADC 未从每次运行的复位状态启动。

      当我在每次运行时从复位中启动 ADC 转换时、它会卡住、在运行后的前几个运行中不执行 DMA 传输回调功能。

      我认为这可能会使它们异步。

    如何解决该问题??

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

    尊敬的 Tej:

    请确保 ADC 在复位时采样、因为这样会使它们保持同步。 来自 ePWM 的初始触发会使 ADC 同步启动。 但如果 ADC 没有在复位时进行采样、那么当前正在运行的 INT 已经在触发 SOC、我怀疑 DMA 是否可以进行传输。

    谢谢!

    Madhava  

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

    HII Madhava,

    当我通过复位对 ADC 采样时、这就是我得到的图形(Graph 是针对以4Msps 的速率采样的100KHz 信号)。



    我面临的问题是-

    1) 1)对于以4Msps 进行100KHz 信号采样、我们应该每周期获得40个样本、但我只获得20个样本。




    我有一个疑问-

    我们将从4个 ADC 通道同时接收转换结束中断、然后 2个传输控制器如何进行同步以实现同步采样?



    如何解决这个问题??

    谢谢。

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

    尊敬的 Tej:

    您能否说明该问题是否与已关闭同步传输的4个 ADC 有关? -主题中的原始问题。  

    [报价用户 id="596784" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1372341/mcu-plus-sdk-am263x-am2634/5278065 #5278065"]对于以4MSPS 进行100KHz 信号采样的4MSPS 信号、我们每周期应该能得到40个样本、但我只能得到20个样本。

    我同意应该有40个样本。 我看到您的 B_cnt 为 table_size、您传递到这里的值是什么? 我看到你的 dest_B_indx 和 a_cnt 为2、你的目标缓冲区大小是否为16位? 您的图也会拾取16位值吗? 您可能会从内存浏览器获取值转储并绘制该图、您能在此处分享您的 mem-dump 吗?  

    [报价 userid="596784" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1372341/mcu-plus-sdk-am263x-am2634/5278065 #5278065"]

    我有一个疑问-

    我们将从4个 ADC 通道同时接收转换结束中断、然后 2个传输控制器如何进行同步以实现同步采样?

    [报价]

    ADC 采样+转换时间约为250ns、DMA 传输比这快得多。 此外、ADC 控制器会将转换结果传输到转换后的结果空间中。 因此、DMA 在新结果锁存器之前有很长的时间来关闭电流传输。

    谢谢。此致、

    Madhava  

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

    尊敬的 Tej:

    存储器浏览器映像是我所请求的映像。 谢谢。

    当我从复位状态对 ADC 采样时、这就是我得到的图形(图形表示以4MSPS 采样的100KHz 信号)。
    [报价]

    这个图像你已经分享,这似乎样本不是同时采集(原因: 相同的样本,不同的电压点在同一个输入)。 当只有2个 DMA 通道和2个 ADC 时、您能否确认每个输入周期是否有40个样本?  

    此外、能否确认您是在配置 DMA 通道之前还是之后从 ePWM 启用 ADC SOC 触发?  

    谢谢。此致、

    Madhava

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

    尊敬的 Madhava:

      

     1.这是4Msps 采样率、100KHz 信号的图。  
       每个周期的采样点数量在39-40范围内。
      
     配置 DMA 通道后、我将从 ePWM 启用 ADC SOC 触发信号。

    谢谢。

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

    尊敬的 Tej:

    在2个 ADC 上具有40个样本的4MSPS 情况很好、符合预期。 我们可以检查4个 ADC 情况下的任何 EDMA 错误标志吗? 恐怕有任何瓶颈。  

    [报价 userid="596784" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1372341/mcu-plus-sdk-am263x-am2634/5280923 #5280923"]  2.配置 DMA 通道后、我将从 ePWM 启用 ADC SOC 触发信号[/报价]

    好的。 感谢您确认这一点。  

    谢谢。此致、

    Madhava

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

    尊敬的 Madhava:




    它是程序执行期间寄存器的值。

    您能否准确指出您对其值感兴趣的寄存器?
     
    谢谢。

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

    尊敬的 Madhava:

    是否有办法改变 AM-2634中 DMA 传输的速度?

    谢谢。  

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

    尊敬的 Madhava:

    更新-

      我已经使用不同的采样率配置进行了进一步的测试、我想分享测试结果并征求您的意见:

    1. 当所有四个通道的采样率设置为低于2MSPS 时、所有4个通道的同步采样似乎都正常运行。
    2. 不过、当采样率增加到2Msps 以上时、无论配置的值如何、有效采样率似乎上限为2Msps。 对于100kHz 信号、这意味着每周期大约20个样本、即使在配置的采样率更高的情况下也是如此。

      根据这些观察结果、我怀疑在超过2MSPS 时 DMA 传输机制可能存在限制实际采样率的限制。

       为了帮助我们取得进展并 最大限度地减少 任何潜在的项目延迟、我非常感谢您对实现   所需采样率的潜在变通办法或替代方法的见解。

    谢谢

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

    您好、Tej

    请明天告诉我、让此案例在我的系统中正常工作、并尝试为您提供解决方案。

    对由此给您带来的不便深表歉意!

    谢谢。此致
    Akshit

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

    大家好、Akshit Pareek、

    我想要签入我们讨论的案例。
    您有机会了解一下吗?

    谢谢。

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

    尊敬的 Tej:

    是的、我一直在努力寻找解决方案。

    您能与我分享您的 example.syscfg 文件吗?

    谢谢
    Akshit

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

    大家好、Akshit Pareek、

    我很想知道是否有任何更新或您是否有任何进一步的建议。

    谢谢。

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

    您好、Tej

    还在努力寻找解决方案、似乎是同时传输所有4个结果存在问题、恐怕 DMA 通道在下一个数据传入之前实际上不会免费使用。

    请参阅此主题、直到我们进一步调试问题: https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1319076/mcu-plus-sdk-am263x-continuous-sampling-of-multiple-adcs-to-dma-buffers

    请告诉我这是否有帮助!

    道歉和此致
    Akshit

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

    大家好、Akshit Pareek、

    感谢您的建议、

    我通过上面的链接、发现它对我实施乒乓缓冲器有很大帮助。 但是、4MSPS 的4通道同步采样问题仍然存在。

    谢谢。