Analog MUX 配置指南

一、简介

ET6001上的模拟模块包括3个ADC,1个温度传感器,2个缓冲DAC,和8个ACMP。

模拟子系统具有以下特性:

  • 灵活的电压基准,ADC基准通过VREFHI管脚和VREFLO管脚提供。

    • VREFHI可以通过内部带隙基准,提供0V至2.5V;

    • VREFHI由外部驱动,支持2.4V至3.3V。

  • 缓冲DAC基准通过VREFHI管脚和VSSA管脚提供,也支持以VDAC管脚和VSSA为基准。

  • ACMP内部的DAC以VDDA和VSSA为基准,也支持以VDAC管脚和VSSA为基准。

  • 灵活地使用引脚,缓冲DAC输出、CMP输入、ADC输入可以通过多路复用电路进行互连。

为了便于不同封装的灵活选用,使用时部分信号加了模拟开关,用户在初次接触时可能无法理清楚这之间的联系,因此针对模拟IO的复用关系做以下详细说明。

二、模拟IO复用关系

../_images/analog_io1.png

模拟外设系统框图

../_images/analog_io2.png

模拟IO复用关系示意简图

ET6001 模拟IO和模拟开关复用关系映射表

小技巧

查看 模拟IO和模拟开关复用关系映射表 时,可根据使用芯片的 pin_num 隐藏其他 pin_num 的列信息和ADC/ACMP的列信息,方便查看。

三、复用关系详解

ACMP 复用关系

通过 模拟外设系统框图 可以看出:芯片内置 4 个 Dual-CMP 比较器模块,每个 Dual-CMP 比较器模块包含 2 个 ACMP(CMPx_H、CMPx_L), 1个CMP 和对应的 CMP 数字模块。 例如:系统框图中的CMP1中包含ACMP0、ACMP1,其中ACMP0为CMP1_H,ACMP1为CMP1_L,其余同理。 每个ACMP包含1个内部DAC连接到ACMP负端,其中CMPx_H还包含一个下斜波(ramp)产生器,输入到CMPx_H内部的DAC。

通过 模拟IO复用关系示意简图 可以看出:部分ACMP需配置模拟开关方能连接的模拟IO。下面将结合 模拟IO和模拟开关复用关系映射表 详解ACMP的复用关系。

以100P封装为例,CMPx与模拟IO的复用关系如下:

../_images/analog_io3.png

以上图中的 A10_B1_C10B0_C11 这两个引脚为例:

1. 横向查看 A10_B1_C10 所在行,开关控制寄存器描述为 直连,比较器信息有 CMP2_HP3、CMP2_HN0 等。 这表示 A10_B1_C10 引脚不经过模拟开关,直接连接 CMP2_HP3、CMP2_HN0 等内部接口。

以上述比较器信息 CMP2_HP3 的命名为例:

CMPx_[H/L]_[P/N]_[src]
  • CMPx: 比较器编号,x=1,2,3,4

  • H/L: H = 高电平 ACMP; L = 低电平 ACMP

  • P/N: P = ACMP正端输入; N = ACMP负端输入

  • src: 输入源选择, 高电平ACMP时src = 0,1,2,3,4,5;低电平ACMP时src = 0,1,2

备注

此处CMP命名从1开始,为适应编程习惯,在代码中ACMP命名从0开始。即CMP2在代码中为ACMP1以此类推。

软件配置示例如下:

/******** 配置A10_B1_C10作为ACMP1_H 的负端输入*********/
ACMP_Comparator config;
// 选择外部信号作为正端输入 A9
config.cmpPositiveInputSelect = ACMP_INPUT_MUX_SELECT_2;
// 选择外部信号作为负端输入 A10_B1_C10
config.cmpNegativeInputSelect = ACMP_REF_MUX_SELECT_0;
ACMP_configComparator(ACMP1, ACMP_CHANNEL_H, &init);
  1. 同理,查看 B0_C11 所在行,发现此引脚为非直连,表示需要配置模拟开关方能连接到 CMP2_HP4、CMP2_LP4 等内部接口。

软件配置示例如下:

/******** 配置B0_C11作为ACMP1_H 的正端输入*********/
ACMP_Comparator config;
// 选择外部信号作为正端输入
config.cmpPositiveInputSelect = ACMP_INPUT_MUX_SELECT_4;
// 选择内部DAC作为负端输入
config.cmpNegativeInputSelect = ACMP_REF_MUX_DAC;
ACMP_configComparator(ACMP1, ACMP_CHANNEL_H, &init);
// 配置模拟开关
SYSCTRL_selectAnalogPinMux(SYSCTL_PINMUX_B0_C11_MUX_C11_CMP1_HP4_LP4);

ADC 复用关系

通过 模拟外设系统框图 可以看出:芯片包含3个ADC,每个ADC具有16个复用通道。

通过 模拟IO复用关系示意简图 可以看出:部分ADC需配置模拟开关方能连接的模拟IO。下面将结合 模拟IO和模拟开关复用关系映射表 详解ADC的复用关系。

以100P封装为例,ADCx与模拟IO的复用关系如下:

../_images/analog_io4.png

以上图中的 A3_B9_C7A14_B14_C4A11_B10_C0 这三个引脚为例:

A3_B9_C7 表示 A3、B9、C7共用此引脚,即ADC_A通道3、ADC_B通道9、ADC_C通道7 共用此引脚,其余同理。

A3_B9_C7 处有三个开关控制寄存器,这表示通过三个模拟开关,可以将 A3、B9、C7 连接到此模拟IO。

/* 配置模拟开关 */
// 模拟开关导通A3到A3_B9_C7引脚
SYSCTRL_selectAnalogPinMux(SYSCTL_PINMUX_A3_B9_C7_MUX_A3_CMP2_HP5_LP5);
// 模拟开关导通B9到A3_B9_C7引脚
SYSCTRL_selectAnalogPinMux(SYSCTL_PINMUX_A3_B9_C7_MUX_B9);
// 模拟开关导通C7到A3_B9_C7引脚
SYSCTRL_selectAnalogPinMux(SYSCTL_PINMUX_A3_B9_C7_MUX_C7);

上述函数中输入参数 SYSCTL_PINMUX_A3_B9_C7_MUX_A3_CMP2_HP5_LP5 的格式说明如下:

SYSCTL_PINMUX_[pin_name]_MUX_[muxed_adc_signal]_[muxed_acmp_signal]
  • SYSCTL_PINMUX: 前缀字符串

  • pin_name: IO管脚名称,参考数据手册4.1章节

  • MUX : 固定连接字符,表示模拟IO和模拟开关复用关系映射表中的连接关系

  • muxed_adc_signal: 连接后的ADC信号名称 格式: Ax_Bx_Cx x= 0~15

  • muxed_acmp_signal: 连接后的ACMP信号名称 格式: CMPx_HPy_HNz_LPy_LNz x= 1,2,3 y=0,1,2,3,4,5 z=0,1,2

与上述同理: A14_B14_C4 表示 A14、B14、C4共用此引脚,即ADC_A通道14、ADC_B通道14、ADC_C通道4 共用此引脚。 A14_B14_C4 处开关控制寄存器的描述为 直连,这表示不通过模拟开关,直接将 A14、B14、C4 连接到此模拟IO。

A11_B10_C0 处开关控制寄存器的描述为 直连d2a_afe_reserve2<6>,这表示A11、B10不经过模拟开关,直接连接到此模拟IO,C0需要配置模拟开关才能连接到此模拟IO。

备注

此处ADC命名从A开始,为适应编程习惯,在代码中ADC命名从0开始。即ADC_A在代码中为ADC0以此类推。

DAC 复用关系

通过 模拟外设系统框图 可以看出:芯片包含2个DAC。

通过 模拟IO复用关系示意简图 可以看出:DAC不经过模拟开关,直接连接到模拟IO。固定连接到引脚 A0_B15_C15_DACAA1_B16_C16_DACB

备注

此处DAC命名从A开始,为适应编程习惯,在代码中DAC命名从0开始。即DAC_A在代码中为DAC0以此类推。