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.

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

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

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

器件型号:MCU-PLUS-SDK AM263X
主题中讨论的其他器件:SysConfig

工具与软件:

ADC-AM263X:多个 MCU-PLUS-SDK 到 DMA 缓冲器的连续采样

我想配置多个 ADC 通道以连续 读取电压、并使用 DMA 将样本存储到 RAM 中。

参考 SDK 示例: adc_soc_continuous_dma

我在这个示例中可以运行、但 SDK 示例填充 DMA 缓冲区、然后停止。  

我想修改示例、以便使 ADC 转换在定义的样本数内是连续的。

我 实验了 在 ISR 中删除函数调用(可以在此处看到)、我怀疑这可能会停止我需要的"连续 ADC 到 DMA"。  

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

    您好、Yogesh、

    您是否能够包含您修改的 ISR 代码?

    此致、

    Zackary Fleenor

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

    e2e.ti.com/.../8814.adc_5F00_soc_5F00_continuous_5F00_dma.c

    我正在使用 TI SDK 附带的代码(adc_soc_continuous_dma.c)。 我刚刚注释掉了从 App_dmach0ISR ()停止的 ADC。 我们的要求是使用 DMA 持续对256个 ADC 进行采样、并始终再次重复该过程。

    TollMan 有一个主题解决了类似的问题。 最终工作代码未发布、因此无法理解解决方案。

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

    等待响应和解决方案。

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

    您好、Yogesh、

    由于我们的专家不在办公室、我们对延误深表歉意。 请多提供1-2天时间进行审查和提供更多反馈。

    此致、

    Zackary Fleenor

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

    嗨、Yogesh、

    您能否包含您提到的上一 E2E 帖子的链接?

    此致、

    Zackary Fleenor

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

    E2E-AM263X:对多个 ADC 到缓冲器进行持续采样-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI MCU-PLUS-SDK 支持论坛

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

    弗勒诺-这是链接:

    E2E-AM263X:对多个 ADC 到缓冲器进行持续采样-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI MCU-PLUS-SDK 支持论坛

    较大的光学扩展量。 我正面临着完全相同的问题,并希望 TollMan 按照 Madhav 的建议实施的解决方案,我需要帮助来理解解决方案。 请按优先级提供帮助。

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

    Fleenor -这是非常不幸的,我没有得到答复。 我一直在这个问题上、TI 不提供任何支持、这一点很糟糕。

    基本上、我要最终实现的目标是以1ms 的频率对所有6个通道的 ADC0至 ADC5进行采样。

    首先、我采用了 TI 示例中的"adc_soc_continuous_dma"代码。

    修改了示例代码、以持续对 ADC0-AIN0、ADC1-AIN0和 ADC2-AIN0进行采样。

    我可以成功修改代码、针对 ADC0-AIN0和 ADC1-AIN1进行连续 DMA 链路传输

    但未成功读取 ADC2-AIN0数据。  

    我附上您的评论中的代码。 请访问 help.e2e.ti.com/.../adc_5F00_soc_5F00_continuous_5F00_dma_5F00_am263x_2D00_lp_5F00_r5fss0_2D00_0_5F00_nortos_5F00_ti_2D00_arm_2D00_clang.zip

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

    您好、Yogesh

    对于延迟、我们深表歉意。 我目前正在处理您的问题、请给我一些时间来向您介绍实施情况。

    此致、
    Akshit

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

    您好、Akshit -我已经根据"adc_soc_continuous_dma"示例代码附上了我的工程的 zip。 请看一下。

    以下是 ADC 读数日志。

    ADC0:ADC1:ADC2:ADC3:ADC4
    第79章:我是谁
    81: 79: 0
    83: 82: 0
    86: 85: 0
    88: 86: 0
    90: 87: 0
    89: 86: 0
    86: 85: 0
    84: 82: 0
    80: 76: 0

    ADC0:ADC1:ADC2:ADC3:ADC4
    78: 76: 0
    77:76:0
    77:76:0
    77:76:0
    77:75:0
    78: 75: 0
    78: 76: 0
    78: 76: 0
    78: 76: 0
    第79章:我是谁

    我还提到以下2个链接、但尚未成功。

    (+) ADC-AM263X:对多个到 DMA 缓冲器的持续采样-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI MCU-PLUS-SDK 支持论坛

    (+) ADC-AM263X:多通道、多帧 DMA 参数集-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI MCU-PLUS-SDK 支持论坛

    谢谢

    Yogesh

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

    感谢您提供所有相关的详细信息 Yogesh ,

    请向我提供 EOD、以便向您提供工作场景。

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

    Yogesh、

    在您的代码中、我看到 EDMA 使用了3个事件队列、但是 EDMA 仅支持2个事件队列、如 TRM 中所示

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

    好的。 那么、解决方法是什么、您能帮助解决这个问题吗?

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

    可表示为:  

    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);

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

    您好、Akshit、

    下面是一个更新:

    只是将队列更改为0不起作用。 我必须在 EDMA 注册代码中添加更多参数集。 完成此更改后、我现在可以正确获取 ADC0-AIN0、 ADC1-AIN0 和 ADC2-AIN0 的数据。 参考随附代码。

    但添加 ACD3-AIN0现在不能正常工作、前3个 ADC 可以继续正常工作。 我需要将 ADC3和 ADC4添加到该代码中。 请检查代码、并告诉我出了什么问题。 这有点紧急、因此请提供帮助。

    e2e.ti.com/.../adc_5F00_soc_5F00_continuous_5F00_dma_5F00_am263x_2D00_lp_5F00_r5fss0_2D00_0_5F00_nortos_5F00_ti_2D00_arm_2D00_clang-_2D00_-ADC0_2D00_3AIN0Working.zip

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

    尊敬的 Yogesh:

    我没有看到在您共享的代码中将 ADC3和 ADC4添加到 SysConfig。 您能检查一下吗?

    此致。
    Akshit

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

    您好、Akshit、

    感谢您的答复。 我可以修改用于读取所有4个 ADC (ADC0至 ADC4)的 AIN0的代码、并可以成功测试。 附件是供您查看的代码。

    现在、我要为所有这些 ADC 添加 AIN1至 AIN5。 我想请您快速提供相关帮助。 您可以构建附加项目。

    e2e.ti.com/.../adc_5F00_soc_5F00_continuous_5F00_dma_5F00_am263x_2D00_lp_5F00_r5fss0_2D00_0_5F00_nortos_5F00_ti_2D00_arm_2D00_clang-_2D00_-ADC0_2D00_4AIN0Working1.zip

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

    尊敬的 Aksihit:

    现在、由于所有 ADC (ADC0-ADC4)的 AIN0都在工作、我将尝试添加其余信道、即所有 ADC 的 AIN1至 AIN5。 参考随附代码。

    但 还没有成功。 您能在这里快速帮助解决我出错了吗?

    e2e.ti.com/.../4520.adc_5F00_soc_5F00_continuous_5F00_dma_5F00_am263x_2D00_lp_5F00_r5fss0_2D00_0_5F00_nortos_5F00_ti_2D00_arm_2D00_clang.zip

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

    尊敬的 Yogesh:

    如果用例用于同时采样全部30个通道(6个通道(AIN0-5)的5个 ADC)? 那么就不可能实现、因为 单个 ADC 无法同时采样4个不同的采样电压

    如果该用例用于在任意时间点对不同 ADC 的任意一个通道进行同步采样、则可以实现这一操作


    可以对所有4个 ADC 的 AIN0进行模拟采样
    可以对全部4个 ADC 中的 AIN1进行模拟采样
    ...
    可以对全部4个 ADC 中的 AIN5进行模拟采样
    但所有这些都需要进行时间多路复用

    此致、
    Akshit

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

    您好、Akshit、

    是的、用例是对全部30个通道进行采样、即对 全部5个 ADC (ADC0至 ADC5)的全部6个通道(AIN0 - AIN0)进行采样。 并不是同时循环采样。 您能看一下代码、知道问题出在哪里吗? 幻灯片。

    因为我们在同一时区、能否进行快速呼叫。

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

    尊敬的 Yogesh:

    1. 可以为不同的通道配置一些其他 SOC。 例如、ADCIN1为 SOC1


    2. 用于存储值的新缓冲区

    3. 通道的新 Xbar 路由  

      #define ADC1_1_EDMA_CHANNEL (DMA_TRIG_XBAR_EDMA_MODULE_10)

    4. 修改该函数以适应 SockNumber。 例如:

      /* Function Prototypes */
      uint16_t App_dmaConfigure(const uint16_t *table, uint16_t table_size,
      EDMA_Handle dma_handle, uint32_t dma_ch,
      uint32_t adc_base, ADC_SOCNumber socNumber, uint32_t *tccAlloc, uint32_t event_queue_number);


      App_dmaConfigure(gAdc1DataBuffer1, RESULTS_BUFFER_SIZE, gEdmaHandle[0],
      ADC1_1_EDMA_CHANNEL, CONFIG_ADC1_RESULT_BASE_ADDR, ADC_SOC_NUMBER1, &tccAlloc5, EDMA_TEST_EVT_QUEUE_NO_1);
    5. 更改 srcAddr ->
      edmaParam1.srcAddr = (uint32_t) SOC_virtToPhy((void *)(adc_base+CSL_ADC_RESULT_ADCRESULT0+((uint32_t)socNumber * ADC_RESULT_ADCRESULTx_STEP)));

    请告诉我这些更改是否能为您解决问题!

    此致、
    Akshit

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

    您好、Akshit、谢谢。

    我使用了您提供的步骤、并修改了所有 ADC (ADC0-4)所有输入(AIN0-AIN5)的代码。 但我得到 AIN3输入的一个例外。

    观察结果。 在 example.sysconf DMA_XBAR 只能配置为最多14个、因此所有 ADC 中的 AIN0至 AIN2可按预期工作、但 AIN3-AIN5无法工作。

    要测试的图像。 参考附加代码、I DMA 仅针对3个输入进行配置、即所有 ADC 模块的 AIN0-AIN2 (#define REG_ADC_channel 3)、AIN0-AIN2正常工作。 现在问题是、我要修改什么才能使 AIN3-AIN5正常工作? 请查看随附的代码、并告诉我如何纠正 AIN3-AIN5的问题。

    e2e.ti.com/.../adc_5F00_soc_5F00_continuous_5F00_dma_5F00_am263x_2D00_lp_5F00_r5fss0_2D00_0_5F00_nortos_5F00_ti_2D00_arm_2D00_clang-_2D00_-ADC0_2D00_4AIN0_2D00_2Working.zip

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

    您好、Akshit、

    感谢您的支持。 看起来所有输入、即所有 ADC 的 AIN0-AIN5 ADC0-ADC4现在都可以正常工作。 一些配置丢失了、我已对其进行纠正。

    请允许我查看随附的代码、并提供您对改进的反馈。

    e2e.ti.com/.../adc_5F00_soc_5F00_continuous_5F00_dma_5F00_am263x_2D00_lp_5F00_r5fss0_2D00_0_5F00_nortos_5F00_ti_2D00_arm_2D00_clang-_2D00_-ADC0_2D00_4AIN0_2D00_5Working.zip

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

    尊敬的 Yogesh:

    我很高兴系统现在可以工作了。

    我对造成的所有不便深表歉意、并感谢您提供最终工作代码。

    我今天将回顾并尽快回复您。

    此致、
    Akshit

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

    您好、Akshit、

    我今天再次对其进行了测试、看起来所有 AIN 都未进行转换。 也许我知道原因,但会需要你的帮助。

    我认为它昨天是有效的、因为:

    -我将 XBAR 触发从 AIN0-AIN2移位到 AIN3-AIN5以测试该组。 AIN3-AIN5正常工作、但 AIN0-AIN2无效。

    -然后我再次将 XBAR 触发移位到 AIN0-AIN2、电路板一直处于开启状态、因此当运行此代码时、所有的 ADC 都在转换数据。 可能是因为 AIN3-AIN5触发已在最后运行。 后来电路板断电。  

    今天早上、我给电路板上电、再次刷写了相同的代码、只有 AIN0-AIN2起作用。 看起来就像昨天一样、因为 AIN3-AIN5的转换触发器已启动、并且电路板始终处于运行状态。

    请帮助解决此问题。

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

    尊敬的 Yogesh:

    已了解、由于只有16个 DMA Xbar 通道可用、因此无法同时使用30个 ADC 通道。

    我想到的方法是:

    • 设置一个调度、在该调度中、使用相同的 DMA 通道在第一组 ADC 通道之后读取第二组 ADC 通道。
    • 只要两组中的一组完成传输、即可设置中断或计时器来切换 XBAR 连接。 (这个切换可在 ISR 中完成)
    • 您可以在.../ti-arm-clang/generated/ti_drivers_open_close.c;功能中查看 XBAR 配置:  
    • Drivers_dmaTrigXbarOpen ()& Drivers_dmaXbarOpen  () 并使用 API  SOC_xbarSelectEdmaTrigXbarInputSource ()更改源 ADC 通道。

    让我知道你的想法!