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.

[参考译文] TMS320F2800157:TMS320F2800157上的 DAC 至 ADC 环回测试

Guru**** 2510095 points
Other Parts Discussed in Thread: TMS320F2800157, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1419584/tms320f2800157-dac-to-adc-loopback-test-on-tms320f2800157

器件型号:TMS320F2800157
Thread 中讨论的其他器件: C2000WARE

工具与软件:

您好!  

我正在从事 C2000 实时 MCU 安全机制工作、我在 TMS320F2800157微控制器上进行了 ADC 至 DAC 环回测试。

我想在可以满足以下要求的情况下实施 DAC 到 ADC 环回测试:

1- 软件应验证以下 ADC 通道 ADCIN0..ADCIN20中所用通道的 ADC 转换是否正确。
2. 软件应通过执行 ADC-DAC 环回测试来验证 ADC 转换是否正确。
3. 软件应通过使用 ADCLOPBACK 启用环回模式来执行 ADC-DAC 环回测试。 ENLB2ADCA 和 ADCLOOPBACK.ENLB2ADCC。
4. 软件应设置 INTERNALTESTCTL。 将 TESTSEL 设为0x5、并确保最小采样窗口大小(ACQPS)大于4.27 μs。
5. 软件应配置 CMPSS1 DAC 以向 ADC 提供已知电压并验证转换结果。
6. 软件应清除 ADCLOPBACK。 ENLB2ADCA 和 ADCLOPBACK。 ENLB2ADCC 位。
7. 如果检测到不正确的 ADC 转换,软件应执行[TBD]。

我想 知道我应该采取什么方法或步骤来实现它、或者我可以查看是否有任何实现它的示例





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

    尊敬的 Mazen:

    遗憾的是、我们没有有关这方面的任何示例。

    请参阅  TMS320F280015x 实时微控制器技术参考手册(修订版 B)中的第12.13.7 ADC-DAC 环回测试

    如果您还有其他问题、请告诉我。

    谢谢!

    Susmitha

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

    我查看了该部分、但这仅在理论上回答了问题。 我想知道我应该采用什么方法来实施此测试。 例如、我是首先初始化 cmpss DAC、然后初始化 ADC、然后在相应的寄存器中启用环回测试等等。

    另见。 我对这个概念不太了解。 我注意到有两个比较器、一个为高电平、一个为低电平、但当我配置 DAC 以设置要转换的数字值时、为什么有 DACHVALS 和 DACVALS、以及何时使用它们。 我从该安全测试中了解到、我想配置 DAC 并设置一个特定数字值、其中 DAC 将转换为模拟信号、并且通过启用 ADCLOPBACK 寄存器位该环回信号将馈送到 ADC。 ADC 的输出是一个数字值、我将在其中将它与 dacval 进行比较。 如果它们相同、则测试通过。  

    我现在不了解为什么有低和高 dacval、以及为什么需要比较器。 我只需要 DAC 即可进行测试。

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

    尊敬的 Mazen:

     如果您要对 DAC 进行环回测试、只需对 DAC 寄存器进行编程以输出电压、并通过与您正在编程的 DAC 相对应的 ADC 通道转换此电压。  请告诉我这是否对您有用。

    在第12.13.7 ADC-DAC 环回测试中、您只需要启用来自模拟子系统的环回。 附件是相关寄存器。 启用该功能后、无论选择何种 ADC 通道、ADC 都会对 CMPSS 的 DAC 输出进行采样。

    请对 DAC 使用 CMPx_DACL。

    谢谢!

    Susmitha

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

    尊敬的 Mazen:

    另请参阅 以下文档中的可选 DAC 补充。 这可能会有所帮助。

     ADC 实验室(TI.com)

    软件位于 C2000Ware"培训"文件夹中-它是 ADC 实验。 这是链接

    [C2000_ADC]/training/device /[device_name]/analog_subsections/lab_adc Ware_Install_Path

    谢谢!

    Susmitha

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

      Cmpss1Regs.COMPDACHCTL.bit.SWLOADSEL = 0//使用系统时钟
      Cmpss1Regs.COMPDACLCTL.bit.DACSOURCE = 0//拉取 DAC 来自 DACLVALS、而不是斜坡发生器

      Cmpss1Regs.DACLVALS.bit.DACVAL = 0xFFF

      AnalogSubsysRegs.CMPSSCTL.bit.CMP1LDACOUTEN = 0// CMPSS1.COMPL 被启用、且相关的 DAC 将用作比较器的基准
      AnalogSubsysRegs.CMPSSCTL.bit.CMPSSCTLEN = 1//该寄存器中的其余配置均已启用

      EDIS

    这是在 cmpss 中初始化 DAC 的代码? 有什么缺失吗? 我还具有启用 ADCDACLOOPBakc 和禁用的功能。 让我们考虑这些功能。 我现在有一项执行测试、我将在其中调用初始化 DAC、然后启用环回、从 ADC 通道读取结果并将其与 dacval 进行比较。 是这样吗?

    我还有一个问题。 DAC 输出将输出到什么? 我将在 adcca 或 addcc 中的哪个通道读取 ADC 转换值? 或者从哪里可以配置它?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mazen:

    是的、代码看起来不错、您的理解是正确的。

    DAC 输出可输出至 A0/C15。DAC 输出直接在内部模拟通道上采样。 在这种情况下、应该没有必要配置 pinmux。 此信息可在 表6-16中找到。 数据表的模拟引脚和内部连接。

     请尝试 这样做、如果您还有其他问题、敬请告知。

    谢谢!

    Susmitha

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

    为了触发 ADC 采样、我需要执行什么操作吗? 我的代码执行以下操作:

    功能1:  

    1-  COMPCTL.bit.COMPDACE = 1.
    2- 
    COMPDACHCTL.bit.SWLOADSEL = 0
    3- 
    COMPDACLCTL.bit.DACSOURCE = 0
    4- 
    DACLVALS.bit.DACVAL = 0xFFF
    5. 
    AnalogSubsysRegs.CMPSSCTL.bit.CMP1LDACOUTEN 0 
    6. 
    AnalogSubsysRegs.CMPSSCTL.bit.CMPSSCTLEN = 1

    这可用于初始化 DAC

    功能2:

    1-
    ADCDACLOOPBACK.ALL =  0xA5A50001

    这是为了启用 adcloopbacktest

    我还使用以下命令初始化 cmps1寄存器的时钟:

    CpuSysRegs.PCLKCR14.bit.CMPSS1 = 1


    当我通过寄存器 AdcaResultRegs.ADCRESULT0读取 ADCA 通道0中的 ADC 值时、结果的值为0  
    。 我是否缺少某些内容或需要配置更多内容?

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

    尊敬的 Mazen:

    是的、必须触发 ADC。  请使用 ADC_setupSOC 配置 SOC 和触发器。

    C2000ware 中提供了有关如何设置 ADC SOC 以进行采样的示例。

    [C2000 Ware_Install_Path ]/driverlib\f280015x\examples\adc

    谢谢!

    Susmitha

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

    测试现在根据我们所述的配置正常工作。 不过、ADC 的结果存储在以下寄存器中、而不仅仅存储在通道0的结果寄存器中、我不希望这样做、因为这会影响代码的其他区域。 这是 DAC 环回测试的正常操作、也可以配置为仅将值存储在 adcresult0中

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

    尊敬的 Mazen:

    如何设置 ADC SOC? 请相应地设置具有 ADC 通道的 SOC。

    例如、如果配置 SOC5、SOC6、SOC7、则会得到分别存储在 ADCRESULT5、ADCRESULT6、ADCRESULT7中的结果。

    谢谢!

    Susmitha

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

    ADC SOC 仅针对通道0进行设置、它写入所有结果。 这是正常的吗? DAC 是将输出写入被测模块的所有结果寄存器还是仅在通道0结果上输出结果

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

    尊敬的 Mazen:

    您能向我发送您的 ADC SOC 设置配置是什么样的吗?

    您使用了哪种 SOC?

    谢谢!

    Susmitha

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

    SOC 优先级= ADCSOCPRICTL 寄存器中的0x0A
    ADCSOC9CTL 寄存器中 SOC 的通道选择为0
    TrigSeL 位为0x03、即 cputimer2

    ACQPS 为0x11 + 0x12

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

    尊敬的 Mazen:

    我看到您正在使用 SOC9。。 如果可能、您是否可以更改为 SOC0、看看问题是否仍在发生?

    谢谢!

    Susmitha

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

    我尝试了 SOC 0、但所有寄存器仍在写入 ADCRESULT 寄存器

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

    尊敬的 Mazen:

    您是否可以尝试配置以禁用 ADCBURSTCTL 寄存器? 这将停止运行多个 SOC。

    同时、我会与其他专家商讨、看看是否有其他人会这样做。

    谢谢!

    Susmitha

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

    问题尚未解决。 澄清一下、DAC 至 ADC 环回测试已在工作、但我想解决 DAC 何时输出 ADC 信号的问题。然后 ADC 对该信号进行采样并将结果输出到多个结果寄存器、这与实施发生冲突。我尝试执行此操作时、仅希望 ADC 在一个 ADC 结果寄存器(ADCRESULTREGISTER0)上输出该值、因为使用的 SOC 是 SOC0  

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

    尊敬的 Mazen:

    与专家核实时、结果应仅出现在相应的寄存器中、而不是出现在所有结果寄存器中。

    您可以将整个项目发送给我、我将尝试在最后进行复制

    谢谢!

    Susmitha

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

    下面是寄存器配置的屏幕截图:

    下面是进行 DAC 测试时结果寄存器的屏幕截图:

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

    尊敬的 Mazen:

    其他 SOC 配置到了什么?

    上述寄存器信息不能帮助我重现问题。 最好在我结束时在这里重现整个项目文件

    谢谢!

    Susmitha

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

    Susmitha、您好!

    我正在与 Mazen 合作、我也有同样的问题。

    我们不能与客户分享整个项目、因为该项目对客户保密。

    但我可以和您分享更多有关 ADC 配置的信息。

    • 我们正在使用外部 VREF 并使用 AnalogSubsysRegs.ANAREFCTL.bit.ANAREFSEL = 1对其进行配置
    • 我们将使用 ADCA 和 ADC、但我们仅对 ADCA 执行 DAC 环回测试、ADCC 不受该测试的影响。
    • 在 ADCA 中、我们使用 SOC0至 SOC8。
    • 我们所有 SOC 的采集窗口均为35
    • ADC 时钟为50MHz、我们使用预分频器/2。
    • SYS 时钟为100MHz。
    • 所有 SOC 触发源都基于计时器。
    • 我们将在20us 使用 TIMER0、在100us 使用 TIMER1、在1ms 使用 TIMER2。
    • ADC 不使用中断、在相应的定时器中读取结果寄存器。

    对于 SOC 到通道的映射、我们具有以下选项  

    1. SOC0 -> CH4 ->由 TIMER0触发
    2. SOC1 -> CH9 ->由 TIMER0触发
    3. SOC2 -> CH10 ->由 TIMER0触发
    4. SOC3 -> CH16 ->由 Timer1触发
    5. SOC4 -> CH3 ->由 Timer1触发
    6. SOC5 -> CH17 ->由 TIMER2触发
    7. SOC6 -> CH1 ->由 TIMER2触发
    8. SOC7 -> CH11 ->由 TIMER2触发
    9. SOC8 -> CH12 ->由 TIMER2触发

    对于 DAC 配置(如 Mazen 所述)、我们具有以下配置

    • ADCSOC9CTL 寄存器中的 CH0用于 DAC SOC9通道选择
    • 触发为 TIMER2 (1ms)
    • ACQPS 与其余 SOC 相同

    我认为这些配置足以描述重现问题所需的所有细节。

    敬请注意、ADC 配置已在我们的项目中进行了整整一年的测试、而 DAC 转 ADC 测试至关重要、它会阻碍我们的开发。

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

    您好!

    启用 ADC/DAC 环回模式后、 任何触发的 SOC 都将对 DAC 进行采样。 如果您触发 SOC5、那么无论 SOC5配置用于何种通道、它都会对 DAC 进行采样并将结果存储在 ADCxRESULT5寄存器中。 如果触发 SOC7、则无论 SOC7配置的是哪个通道、它都将采样 DAC 并将结果存储在 ADCxRESULT7寄存器中。 为了避免在多个结果寄存器中获得结果、请 确保 禁用所有 SOC 的触发器、但要用于环回测试的触发器除外。 在环回模式关闭后、可以重新启用触发条件。

    此致、
    Ibukun

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

    感谢您的回复、这对您有所帮助。  

    还有一个问题是、《安全手册》未规定是在启动时还是在运行时运行 DAC 到 ADC 环回测试。

    那么、在启动时运行测试是否足够呢? 这是否能满足安全机制的要求?  

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

    Hanna、您好!

    DAC 至 ADC 环回测试可在启动或运行时运行。 无论哪种方法都有效。

    如果您有任何其他问题、敬请告知。 如果没有、请继续并关闭该主题。

    谢谢!

    Susmitha

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

    尊敬的 Susmitha:

    我知道它可以在启动或运行时运行、但我的问题是、它只会在启动满足安全机制实现的要求时运行?  

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

    Hanna、您好!

    通常只能在启动时执行此操作。  

    谢谢!

    Susmitha

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

    在启动时运行 DAC 至 ADC 环回测试只能满足安全机制的要求。