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:ADC1 "增强通道选择模式"CAN#39;t 读取一个组中超过24个通道

Guru**** 2442090 points
Other Parts Discussed in Thread: RM46L852, LAUNCHXL2-RM46

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/623607/rm46l852-adc1-enhanced-channel-selection-mode-can-t-read-more-than-24-channels-in-a-group

器件型号:RM46L852
主题中讨论的其他器件: LAUNCHXL2-RM46

部件:RM46L852 PGE
使用开发板 LAUNCHXL2-RM46

数据表中
www.ti.com/.../spnu514b.pdf


使用"增强型通道选择模式"
该模式允许使用外部5位多路复用器、因此 ADC1的可能测量通道数为24个通道 x 32 = 768个通道
在整个开发工作中、似乎无法一次测量一组中超过24个 A/D 通道、期望能够测量数据表中的32个通道。我在尝试测量26个通道时发现了这一点、最后两个通道不起作用。

我交换了通道的顺序、最后两个通道仍然不测量。 它们作为0计数进行测量。
按照923页的说明、使用"直接从转换结果存储器中读取测量值"


第927页22.4.2.2节"查找表、这是一个32字的深度存储器映射区域、用于定义要转换的模拟输入通道编号"
这一寄存器和涉及的其他寄存器意味着可以在一个组中一次转换多达32个通道。

已测试读取寄存器 ADG1CHNSELMODECTRL 以使能"增强型通道选择模式"、这是正常的(回读预期的0x0000000A)
正确设置 BNDA、BNDB、BNDEND (如第924页所述)并对其进行试验也无效。
正确设置 ADG1MAXCOUNT 和 ADG1SEL、并使用它们进行实验、但也没有结果。
读回不起作用的通道的查找表值时、有两个正确的值。

因此、我认为该器件存在故障、或者文档应指出、一个组中的24个通道一次只能转换。


寄存器:
ADG1SEL
第994页的数据表表明仅允许选择低24位(对于非"增强型通道选择模式"为真、没有提到允许选择高达32位的"增强型通道选择模式"。
第927页引号将位29和31设置为"例如、设置 ADG1SEL 中的位0、1、29和31 "
第929页引用了设置位0和31的示例


在侧面问题上、可能是926页的数据表中出现错误
ADG1MAXCOUNT (及其他)
第926页有4位=16的值
页1050有5位=32的值

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

    您好、Shaun、

    我相信这里的问题是对增强信道选择功能的误解。 我将逐一阐述以上各点。

    [报价用户="Shaun Dawson">使用"增强型通道选择模式"
    该模式允许使用外部5位多路复用器、因此 ADC1的可能测量通道数为24个通道 x 32 = 768个通道[/报价]

    如数据表中所述、器件中存在24个物理通道 (不考虑与一些 ADC1通道配对的冗余 ADC2输入)。我认为 您的困惑在于器件中包含的 ADC 模块的整体功能设计为支持多达31个通道、但在这种情况下、器件只有24个通道。 TRM 章节中的示例是通用的、因为它们引用了完整功能、但示例中使用的通道有些任意。

    可以使用正常操作和 ADGRPSEL 寄存器选择24个通道中的每一个进行顺序转换。 该方法始终按顺序转换、这意味着通道0将依次转换、通道1和通道2、最高转换为通道 23、具体取决于选择寄存器中启用的特定通道。

    增强型通道选择选项可控制每个通道的转换序列、还可选择向您的设计中添加外部模拟多路复用器、从而在理论上增加最多24个物理 ADC 通道/组选择 X 32:1模拟多路复用器选择=向上的可能性 到768个通道。  

    如果您不使用任何外部模拟多路复用器、 只需使用 LUT 即可根据应用的要求订购转换、从而在应用 中更自由地分配通道。 即、如果您需要在通道1上执行5次序列转换、然后在通道5上执行2次转换、然后在 通道0、2、4、3、 16上执行1次转换、 12、10和23在该序列中、 您可以使用 TRM 和数据表中定义的 LUT (查找表)对该序列进行编程。 从 LUT 的基址开始、您将将 内部多路复用器选择器配置为  1、1、1、5、0、2、2、4、3、16、12、10、23、同时将外部多路复用器选择器保持未连接状态、并将 LUT 中的条目配置为"无关"。

    如果实施外部模拟多路复用器、LUT 中的 EXT 多路复用器选择器将输出到外部多路复用器、并将所需的外部模拟输入选择到由 LUT 的内部多路复用器选择器字段选择的指定内部通道

    [引用用户="Shaun Dawson"]

    在整个开发工作中、似乎无法一次测量一组中超过24个 A/D 通道、期望能够测量数据表中的32个通道。我在尝试测量26个通道时发现了这一点、最后两个通道不起作用。

    我交换了通道的顺序、最后两个通道仍然不测量。 它们作为0计数进行测量。
    按照923页的说明、使用"直接从转换结果存储器中读取测量值"

    [/报价]

    我想、如果您在 TRM 中回顾这些陈述、您将会看到这些评论的含义是、尽管模块的全部功能是支持多达32个通道、 该器件上仅实施了24个通道、因此只应使用低24个通道。 它还指出、如果您选择未实现的通道、它不会提供错误、即使该通道没有物理输入到 IP、ADC 也会尝试转换该通道。 未实现通道上转换返回的结果是不确定的。

    [引用用户="Shaun Dawson"]

    第927页22.4.2.2节"查找表、这是一个32字的深度存储器映射区域、用于定义要转换的模拟输入通道编号"
    这一寄存器和涉及的其他寄存器意味着可以在一个组中一次转换多达32个通道。

    已测试读取寄存器 ADG1CHNSELMODECTRL 以使能"增强型通道选择模式"、这是正常的(回读预期的0x0000000A)
    正确设置 BNDA、BNDB、BNDEND (如第924页所述)并对其进行试验也无效。
    正确设置 ADG1MAXCOUNT 和 ADG1SEL、并使用它们进行实验、但也没有结果。
    读回不起作用的通道的查找表值时、有两个正确的值。

    因此、我认为该器件存在故障、或者文档应指出、一个组中的24个通道一次只能转换。


    寄存器:
    ADG1SEL
    第994页的数据表表明仅允许选择低24位(对于非"增强型通道选择模式"为真、没有提到允许选择高达32位的"增强型通道选择模式"。
    第927页引号将位29和31设置为"例如、设置 ADG1SEL 中的位0、1、29和31 "
    第929页引用了设置位0和31的示例

    [/报价]

    请参阅前面有关 IP 功能与实施的评论。 我理解这可能会有点混淆、但这就是为什么 TRM 是参考文档、而数据表是规格文档。 这两个文档必须以补充方式使用。 这样做的原因是不必为特定于器件的选项创建多个版本的文档。 即、由于维护原因、它是这样做的。 不过、我相信寄存器定义中注意到、器件只有24个通道可供选择。

    请注意、LUT 最多有32个条目、可以是外部和内部多路复用器选择器的任意组合。 在增强型通道选择模式下、我相信组选择寄存器中选定的位数表示给定触发事件发生的转换数。 即、组选择寄存器或最大计数寄存器中设置的位数将限制给定触发事件的转换数、具体取决于哪个更小。 这在 TRM 中提供的示例中进行了说明、其中 GRP1SEL 寄存器中设置了2个位、但最大计数= 4。