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复用关系
模拟外设系统框图
模拟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的复用关系如下:
以上图中的 A10_B1_C10 和 B0_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);
同理,查看
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的复用关系如下:
以上图中的 A3_B9_C7、 A14_B14_C4、 A11_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_DACA 和 A1_B16_C16_DACB。
备注
此处DAC命名从A开始,为适应编程习惯,在代码中DAC命名从0开始。即DAC_A在代码中为DAC0以此类推。