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.

[参考译文] RM46L852:ADC 将不启动。 ADSMSTATE = 0x0A、#39;WAIT_SW1'这意味着?

Guru**** 2482225 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/718751/rm46l852-adc-will-not-start-adsmstate-0x0a-wait_sw1-meaning

器件型号:RM46L852
主题中讨论的其他器件:HALCOGEN

我们正在尝试使用组1使用高级转换组转换24个通道。

我们以前能够在单触发模式下读取一些值。

这是一个轮询系统、不涉及中断或 DMA。

MCU 正在运行许多其他外设。 HalCoGen 用于最小值、其余的是手动编码的汇编器、因为我们需要节省代码大小和执行时间。

主要问题是、在初始化并通过设置 ADG1SEL 中的最低24位来启动转换后、转换不会启动、ADSMSTATE 寄存器显示0x0A、Lauterback Trace32将其解释为'WAIT_sw1'。 原因可能是什么?

我的初始化序列是:

ADRSTCR = 1 //开始复位

等待100us

ADRSTCR = 0 //使 ADC 退出复位状态

以专有顺序使用值0-23在0xFF3F2080 (Grp1部分)处初始化 LUT 表-调试器显示它们已正确到达

ADOPMODECR = 0x8000000001 //选择12位并启用 ADC (也尝试等待启用到更高版本)

ADCLOCKCR = 3 // VCLK 为96MHz、除以(3+1)= 24MHz ADCLK -也尝试了低得多的时钟

ADG1MODECR = 0x10012 //连续转换模式、忽略 buf.overwrite、NoAutoBufferReset

ADG1SAMP = 22 // Gp1转换时间=(22+2) ADCLK = 1us

ADBNDCR = 0x0C000C //分配(2 * 12)=结果 RAM 中事件和组1的24个缓冲区(也尝试过更高的缓冲区)

ADBNDEND = 2 //缓冲区总数= 64 (最大值)

ADG1CHNSELMODECTRL = 0x0A //为组1启用增强型通道选择模式

ADG1CURRCOUNT = 0

ADG1MAXCOUNT = 23

(可选 ADOPMODECR = 0x8000000001、如果开头未启用、请参阅上文)

然后将0x00FFFFFF 写入 ADG1SR 以开始转换(设置24位)。

观察结果:

- ADG1SR = 0x0C 意思:空、未完成、忙、未冻结

- ADG1CURRCOUNT 保持为零(根据调试器)

- ADSMSTATE = 0x0A

当通过 FIFO 读取结果时、每个值的欠载高位都会被置位。

此外、当直接读取结果 RAM 时、似乎不会发生可见的变化。

那么、什么原因会阻止 ADC 开始采样????

另外:在哪里可以找到有关 ADSMSTATE 值的更多信息-在 TRM 中被称为"保留用于 TI 调试"?

此致

Niels

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

    ADSMSTATE = 0xA 表示一个转换已经开始、但是模数转换器内核从未完成转换。 您能否检查 ADREFHI / ADREFLO 和 VCCAD/ VSSAD 连接是否正常?

    另一个提示是在分配的器件引脚上启用 AWM1_EXT_ENA 和 AWM1_EXT_SELx 输出。 这些信号可用于指示何时启用内部 ADC 采样。 因此、如果 ADC 正在转换连续通道、您将看到这些信号切换(取决于 EXT_CHANNEL 的配置)。

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

    您认为 PCB 上的硬件供应和相关信号存在问题是对的。
    然后-非常适合安全控制器-它停止工作而不是仅仅返回垃圾数据(正如我所期望的)。

    因此、我们学到了一些经验教训、对于可能阅读此内容的其他人也是如此:在等待 ADC 转换完成时以及初始化期间实施超时。 如果发生超时、请将其标记为唯一的硬件错误、以便通知用户和/或服务人员并检查您提到的四个信号。

    此致、
    Niels