一、ADC概述
这一部分不是我们的重点,原理分类啥的这里简要说明!
步骤:采样、保持、量化、编码
将采样电平(模拟值)转换为数字值的方法:直接比较型(并行ADC、逐次逼近型ADC);间接比较型(双积分型ADC)
关键技术指标:分辨率、转换速率、量化误差、偏移误差、满刻度误差、线性度。
其他技术指标:绝对精度、相对精度、微分非线性、单调性和无错码、总谐波失真和积分非线性。
TMS320F2806x系列的ADC模块的主要参数:
- 12位模数转换
- 2个采样保持器(S/H)
- 同步采样或顺序采样
- 模拟电压输入范围0~3.3V
- 16通道模拟输入
- 16个结果模拟输入
- 16个结果寄存器存放ADC转换的结果
- 多个触发源:S/W。软件立即启动;ePWM1~ePWM8;外部中断2脚;定时器0、1、2;A/D中断1、2。
二、基于Simulink平台的ADC实验
1、ADC_NORMAL模式
ADC_NORMAL模式配置先从配置时钟开始,ADC模块是挂在高速外设时钟线上的外设,Clocking配置为系统90MHz时钟2分频。
在ADC配置中,使用默认的分频系数ADCLK=2,得到ADC模块时钟为45MHz,其他使用默认配置。
在simulink中搜索“ADC c2802x”模块,采样模式为单个采样模式,SOC触发数为SOC0,采样窗口7,SOCx触发源为软件触发,输出数据类型为uint16,输入通道配置为A0,此模块数据基本为默认。
配置完成后,对ADC采样的值进行转换。由于ADC转换结果寄存器是16位的,且数值是左对齐的12位数据,所以要进行左移4位操作,官方支持包考虑到了这一点,只需直接对输出的结果进行转换就可以得到实际的采样值。
下面的模型采集的是外部电位器的0~3.3V电压,所以直接进行转换(12位的ADC满量程为4096,即4096对应实际参考电压3.3V)。这里加入了LED灯,当采集到的模拟量少于2048时,LED2灯闪烁,否则LED1闪烁。其中“Rate Transition”模块为高采样速率向低采样速率转换。
搭建完成后将模型编译下载到主控板(小编由于成本也是先纸上谈兵了,重在熟悉步骤)。将电位器中间引脚接在主控板的AD0引脚上,其他两个引脚分别接在主控板的3.3V和GND引脚,顺时针和逆时针调节电位器,两个LED灯都发生了变化。
2、ADC_EXTERNAL模式
按照GPIO_EXTERNAL外部模式的配置方法将模型配置为外部模式,见上期博客:
上期博客外部模式配置http://t.csdnimg.cn/qV7bF
在Simulink中搭建模型,首先将ADC输出值通过一个增益模块赋给PWM的占空比输入,并显示在scope模块上。Gain的输出数据为uint16,ePWM模块选择ePWM1,这里WA相当于占空比的大小,相关配置详细见后续ePWM期博客。
完成上述配置后,用USB转TTL线,分别将USB的RX、TX接在F28069主控板的TXA、RXA引脚上。启动仿真,调节电位器便可观察到scope示波器的变化。
往期精彩
STM32专栏(付费9.9)http://t.csdnimg.cn/E2F88
OpenCV-Python专栏(付费9.9)http://t.csdnimg.cn/zK1jV
AI底层逻辑专栏(付费9.9)http://t.csdnimg.cn/zic0f
机器学习专栏(免费)http://t.csdnimg.cn/FaXzAFreeRTOS专栏(免费)http://t.csdnimg.cn/SjIqU电机控制专栏(免费)http://t.csdnimg.cn/FNWM7