在本常见问题解答中、我将介绍如何 在增强通道选择模式下执行 ADC 用户定义的通道转换顺序
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.
在本常见问题解答中、我将介绍如何 在增强通道选择模式下执行 ADC 用户定义的通道转换顺序
大家好!
使用 ADC、我们可以按照用户定义的顺序进行通道转换。
我们可以在 ADC 中使用增强型通道选择模式来实现这一设计。
此外、增强通道选择模式的主要目的是在外部通道上进行高达1024的转换。 请参阅以下主题:
但是、如果我们将 EXT_CHN_MUX_SEL 位设置为0、则仅会基于 INT_CHN_MUX_SEL 位的值进行内部通道转换。
下面是按照用户定义的顺序实施 ADC 通道转换的步骤序列。 另请参阅 TRM 中的"使用增强通道选择模式的 ADC 转换序列示例"、以了解更多详细信息。
这里、 我假设我要对 ADC-1中的组1执行以下转换顺序0、5、6、2、1、3和4。
1. 首先、我们要把 LUT 表编程到对应的 ADC 区。
我的意思是 ADC1实例的 LUT 区域将从0xFF3E2000开始、而对于 ADC2实例、则将从0xFF3A2000开始。
从该起始地址开始、该 LUT 表将占用总共96个字、32位字的前32个条目用于事件组、后32个条目32位字用于组1、而32位字的第三个条目用于组2。
例如、如果您的目标是转换 ADC1和组1通道、则查找表应从(0xFF3E2000 + 32 * 4)开始、即 0xFF3E2080地址。
例如、如果您要转换该组1中的0、5、6、2、1、3和4个通道、那么您应该按照以下方式对 LUT 表进行编程:
地址 - 值
0xFF3E2080 - 0x00000000 /*通道0*/
0xFF3E2084 - 0x00000005 /*通道5*/
0xFF3E2088 - 0x00000006 /*通道6*/
0xFF3E208C - 0x00000002 /*通道2*/
0xFF3E2090 - 0x00000001 /*通道1*/
0xFF3E2094 - 0x00000003 /*通道3*/
0xFF3E2098 - 0x00000004 /*通道4*/
2.现在使用我们要转换的通道数量对 ADG1MAXCOUNT 寄存器进行编程、 如果我们要转换7个通道、那么我们应该为该寄存器编程6个通道。
3.现在通过向 ADG1CHNSELMODECTRL 寄存器写入0xA 来启用增强通道选择模式。
4. 现在、通过设置 ADG1SEL 寄存器中7个位中的任何一个来开始 ADC 转换。 此处 ADG1SEL 寄存器中的位不会定义通道编号、原始通道编号将仅来自 LUT 表。 现在、我们想使用右侧的单个触发器转换7个通道、因此我们应该设置 ADG1SEL 寄存器中的7位。 如果您只想转换单个通道和单次转换、则需要在此寄存器中仅设置1个位。
5.现在等待 ADC 转换完成、组1才完成。
6.完成 ADC 转换后、我们可以使用 adcGetData 函数从 ADC RAM 中读取 ADC 数据。
7.在这里我们必须小心一点、RAM 中转换结果的 id 字段将不是通道的实际 ID。 此值是当前计数值。
它始终处于0、1、2等序列中...因此、如果需要、再次使用 LUT 表、我们需要将 id 值替换为正确的 id。
我在此附上一个示例项目、请参考。
e2e.ti.com/.../1033.ADC_5F00_Enhanced_5F00_Channel_5F00_Selection_5F00_Demo_5F00_LC4357.zip
--
谢谢。此致、
Jagadish。