
TMS320F2812的ADC采样配置.pdf
10页1 TMS320F2812 的 ADC 是一个 12 位的 实际只有一个 AD 的转换器 但是有 16 个输入通道 通过内部模拟开关选择 这16个通道可以分为两个8通道的 也可以级联为一个16通道的 ADC 主要功能包括 1 ADC 时钟时钟 外部高速时钟 HSPCLK 经过变换后作为 AD 的时钟 HSPCLK 先要被控制寄存器 3ADCTRL3 寄存器中的 ADCCLKPS 3 0 位除 随后经过 2 分频 当 ADCTRL1 寄存器中的位 CPS 1 或不分频 当 ADCTRL1 寄存器中的位 CPS 0 就得到 ADC 的 时钟基准 但是最大为 25M ADCCLKPS 0 时 ADCCLK HSPCLK ADCTRL1 7 1 ADCCLKPS 0 时 ADCCLK HSPCLK 2x ADCCLKPS x ADCTRL1 7 1 例如 外部晶振时钟 30M PLL 倍频后为 150M HSPCLK 25M ADCCLKPS 5 ADCTRL1 7 1 则 ADCCLK 25 2X5x 1 1 1 25M 2 采样采样频率频率 ADC 转换包括采样 保持 量化 编码四个阶段 他把连续的模拟量量化为开关数字量 就 相当于在模拟量和 AD 引脚中间有一个开关 开关闭合 模拟量就输入到 AD 采样引脚 开 关断开 ADC 引脚上的模拟量就没有了 采样频率就是采样和保持的时间 就是这个开关闭 合的时间 采样时间长短不影响其他操作 这个采样时间控制 SOC 脉冲宽度 由 ADC 时钟 和 ADC 控制寄存器 1ADCTRL1 中的 ACQ PS 11 8 位决定 Fsoc ADCCLK ACQ PS 11 8 1 3 ADC 采样模式采样模式 ADC 采样有顺序采样和同时采样两种模式 顺序采样就是按照自动排序器的设置一个通道一个通道采样 而同时采样是按照顺序排序器 的设置一对一对的采样 但是这一对的编号要一样 即 ADCINA0 与 ADCINB0 ADCINA1 和 ADCINB1 同时采样 2812 的 ADC 是 12 位 16 通道的 可以分两个 8 通道的也可以级联为一个 16 通道的 这样的 话就有 4 种工作模式 即 a 双通道顺序采样 b 双通道同步采样 c 级联模式顺序采样 d 级联模式同步采样 就每种工作模式进行介绍 不对 C 代码进行详解 在讲这些之前 先说一下涉及到的比较重 要而且难理解的寄存器 第一个 最大转换通道寄存器 ADCMAXCONV ADCMAXCONV 中能用的位是最后七位 在双通道采样模式下 自动排序寄存器 SEQ1 A 通 道 用到的是 MAXCONV1 2 0 就是低三位 采样的通道数 MAXCONV1 2 0 1 自动排序寄 存器 SEQ2 B 通道 用到的是 MAXCONV2 2 0 就是高三位 采样的通道数 MAXCONV2 2 0 1 在级联模式下 自动排序器 SEQ 用到的是 MAXCONV1 3 0 采样的通道数 MAXCONV1 3 0 1 第二个 自动排序器 SEQ1 SEQ2 SEQ 自动排序器就是管理在什么时间 A B 通道的哪一个通道进行采样 就是把这 16 个通道排 列顺序 在双通道模式下 SEQ1 管理的是 A 通道的那 8 个输入 SEQ2 管理的是 B 通道的那 8 个输入 在级联模式下 SEQ 即 SEQ1 管理 16 个通道 2 第三个 四个输入通道选择排序寄存器 ADCCHSELSEQx X 1 2 3 4 都是 16 位的寄存器 每个寄存器中的 4 位确定一个采样通道 因为 4 位最大值正好是 16 这样每个 4 位就可以 确定 16 个通道的任一个 这样一个寄存器确定 4 个通道 4 个寄存器正好是确定 16 个通 道 每个寄存器可以确定 4 个通道 这 4 个通道可以是一样的 甚至 4 个寄存器确定的都是 一样的 这样就实现了过采样技术 a 双通道顺序采样 双通道顺序采样 用到的自动排序器是 SEQ1 SEQ2 其中 SEQ1 将用到 ADCADCCHSELSEQ1 和 ADCADCCHSELSEQ2 ADCCHSELSEQx 中的每 4 位的最高位设置为 0 SEQ2 将用到 ADCADCCHSELSEQ3 和 ADCADCCHSELSEQ4 ADCCHSELSEQx 中的每 4 位的最高位设置为 1 用 到 ADCMAXCONV 中最后七位的低三位和高三位 低三位 MAXCONV1 2 0 决定 SEQ1 中的采 样次数 高三位 MAXCONV2 2 0 决定 SEQ2 中的采样次数 转换顺序是从 ADCADCCHSELSEQ1 的最低 4 位开始一直到 ADCADCCHSELSEQ4 的最高 4 位这个顺序来的 C 代码分析 这个是 16 个顺序采样的 每个通道都采样一次 AdcRegs ADCTRL1 bit SEQ CASC 0 AdcRegs ADCTRL3 bit SMODE SEL 0 AdcRegs MAX CONV all 0 x0077 AdcRegs ADCCHSELSEQ1 bit CONV00 0 x0 AdcRegs ADCCHSELSEQ1 bit CONV01 0 x1 AdcRegs ADCCHSELSEQ1 bit CONV02 0 x2 AdcRegs ADCCHSELSEQ1 bit CONV03 0 x3 AdcRegs ADCCHSELSEQ2 bit CONV04 0 x4 AdcRegs ADCCHSELSEQ2 bit CONV05 0 x5 AdcRegs ADCCHSELSEQ2 bit CONV06 0 x6 AdcRegs ADCCHSELSEQ2 bit CONV07 0 x7 AdcRegs ADCCHSELSEQ3 bit CONV08 0 x8 AdcRegs ADCCHSELSEQ3 bit CONV09 0 x9 AdcRegs ADCCHSELSEQ3 bit CONV10 0 xA AdcRegs ADCCHSELSEQ3 bit CONV11 0 xB 3 AdcRegs ADCCHSELSEQ4 bit CONV12 0 xC AdcRegs ADCCHSELSEQ4 bit CONV13 0 xD AdcRegs ADCCHSELSEQ4 bit CONV14 0 xE AdcRegs ADCCHSELSEQ4 bit CONV15 0 xF 转换完成后 结果存放在结果缓冲寄存器 ADCRESULTn x 1 16 中 结果排序如下 如果 SEQ1 和 SEQ2 两者都已经完成了转换 那么 结果如图 8 所示 ADCINA0 ADCRESULT0 ADCINA1 ADCRESULT1 ADCINA2 ADCRESULT2 ADCINA3 ADCRESULT3 ADCINA4 ADCRESULT4 ADCINA5 ADCRESULT5 ADCINA6 ADCRESULT6 ADCINA7 ADCRESULT7 ADCINB0 ADCRESULT0 ADCINB1 ADCRESULT8 ADCINB2 ADCRESULT9 ADCINB3 ADCRESULT10 ADCINB4 ADCRESULT11 ADCINB5 ADCRESULT13 ADCINB6 ADCRESULT14 ADCINB7 ADCRESULT15 b 双通道同步采样 双通道同步采样 就是一次有一对通道采样 像上面说的这一对是对应的 用到的自动排序 器是 SEQ1 SEQ2 其中 SEQ1 将用到 ADCADCCHSELSEQ1 ADCADCCHSELSEQ1 中的每 4 位的 最高位设置为 0 SEQ2 将用到 ADCADCCHSELSEQ3 ADCADCCHSELSEQ3 中的每 4 位的最高位 设置为 1 用到 ADCMAXCONV 中最后七位的低 2 位和高 2 位 低 2 位 MAXCONV1 1 0 决定 SEQ1 中的采样次数 每一次是一对 列如 MAXCONV1 1 0 3 那么就是 4 对 高 2 位 MAXCONV2 1 0 决定 SEQ2 中的采样次数 转换顺序是从 ADCADCCHSELSEQ1 的最低 4 位开始 一直到 ADCADCCHSELSEQ3 的最高 4 位这个顺序来的 C 代码分析 这个是 8 对同步采样的 每个通道都采样一次 AdcRegs ADCTRL1 bit SEQ CASC 0 AdcRegs ADCTRL3 bit SMODE SEL 1 AdcRegs MAX CONV all 0 x0033 AdcRegs ADCCHSELSEQ1 bit CONV00 0 x0 4 AdcRegs ADCCHSELSEQ1 bit CONV01 0 x1 AdcRegs ADCCHSELSEQ1 bit CONV02 0 x2 AdcRegs ADCCHSELSEQ1 bit CONV03 0 x3 AdcRegs ADCCHSELSEQ3 bit CONV08 0 x4 AdcRegs ADCCHSELSEQ3 bit CONV09 0 x5 AdcRegs ADCCHSELSEQ3 bit CONV10 0 x6 AdcRegs ADCCHSELSEQ3 bit CONV11 0 x7 如果 SEQ1 和 SEQ2 两者都已经完成了转换 那么 结果如图 8 所示 ADCINA0 ADCRESULT0 ADCINB0 ADCRESULT1 ADCINA1 ADCRESULT2 ADCINB1 ADCRESULT3 ADCINA2 ADCRESULT4 ADCINB2 ADCRESULT5 ADCINA3 ADCRESULT6 ADCINB3 ADCRESULT7 ADCINA4 ADCRESULT8 ADCINB4 ADCRESULT9 ADCINA5 ADCRESULT10 ADCINB5 ADCRESULT11 ADCINA6 ADCRESULT12 ADCINB6 ADCRESULT13 ADCINA7 ADCRESULT14 ADCINB7 ADCRESULT15 c 级联模式顺序采样 级联模式顺序采样 就是两个 8 通道的合并为一个 16 通道的 只用到一个排序器 SEQ 顺序 采样 就是一次采一个通道 最多采样 16 通道 SEQ 将用到 ADCADCCHSELSEQ1 ADCADCCHSELSEQ2 ADCADCCHSELSEQ3 ADCADCCHSELSEQ4 用到 ADCMAXCONV 中最后 七位的低 4 位 转换顺序是从 ADCADCCHSELSEQ1 的最低 4 位开始一直到 ADCADCCHSELSEQ3 的最高 4 位这个顺序来的 C 代码分析 这个是顺序采样 16 通道 AdcRegs ADCTRL1 bit SEQ CASC 1 AdcRegs ADCTRL3 bit SMODE SEL 0 AdcRegs MAX CONV all 0 x000F 5 AdcRegs ADCCHSELSEQ1 bit CONV00 0 x0 AdcRegs ADCCHSELSEQ1 bit CONV01 0 x1 AdcRegs ADCCHSELSEQ1 bit CONV02 0 x2 AdcRegs ADCCHSELSEQ1 bit CONV03 0 x3 AdcRegs ADCCHSELSEQ2 bit CONV04 0 x4 AdcRegs ADCCHSELSEQ2 bit CONV05 0 x5 AdcRegs ADCCHSELSEQ2 bit CONV06 0 x6 AdcRegs ADCCHSELSEQ2 bit CONV07 0 x7 AdcRegs ADCCHSELSEQ3 bit CONV08 0 x8 AdcRegs ADCCHSELSEQ3 bit CONV09 0 x9 AdcRegs ADCCH。