19 adc模数转换实验adc模数转换实验.pptxVIP

  • 82
  • 0
  • 约2.13千字
  • 约 26页
  • 2021-03-22 发布于北京
  • 举报
ADC模数转换实验;本讲主要内容;1.AD转换原理介绍;将采样电平(模拟值)转换为数字值时,主要有两类方法:直接比 较型与间接比较型。 --直接比较型:就是将输入模拟信号直接与标准的参考电压比较,从而得到数字量。常见的有并行 ADC 和逐次比较型 ADC。 --间接比较型:输入模拟量不是直接与参考电压比较,而是将二者变为中间的某种物理量在进行比较,然后将比较所得的结果进行数字编码。常见的有双积分型 ADC。 ;(1)逐次逼近型 ADC ;(2)双积分型 ADC ;(1)分辨率(Resolution) (2)转换速率(Conversion Rate) (3)量化误差(Quantizing Error) (4)偏移误差(Offset Error) (5)满刻度误差(Full Scale Error) (6)线性度(Linearity);2.F28335的ADC介绍;F28335 的 ADC 模块主要包括以下特点: --12 位模数转换 --2 个采样保持器(S/H) --同时或顺序采样 --模拟电压输入范围 0-3V --ADC 转换时钟频率最高可配置为 25MHz,采样带宽 12.5MHz --16 通道模拟输入 --排序器支持 16 通道独立循环“自动转换”,每次转换通道可以软件编程选择。 --16 个结果寄存器存放 ADC 转换的结果,转换后的数字量表示为: 数字值=4095*(输入模拟值-ADCLO)/3,输入模拟值在 0-3V 之间。 ;--多个触发源启动 ADC 转换(SOC): ①S/W--软件立即启动 ②外部引脚 ③ePWMx SOCA 启动 ④ePWMx SOCB 启动 --灵活的中断控制,允许每个或者每隔一个序列转换结束产生中断请求 --排序器可工作在启动/停止模式 --采样保持(S/H)采集时间窗口有独立的预定标控制 ; ;2.1 ADC 时钟控制;AD采用保持量化编码过程: S/H模式:顺序、同步;(1)级联操作方式;结果寄存器不与输入通道完全对应,而是结果寄存器与转换次序对 应。16 通道对应结果寄存器如下: ;(2)双排序器操作方式;(1)参考电压选择 ;(2)低功耗模式 ADC 支持 3 种不同的供电模式,分别为:ADC 上电、ADC 断电、 ADC 关闭。这3 种模式由 ADCTRL4 寄存器控制。 (3)ADC 校验 ADC 校验子程序 ADC_cal()由生产商嵌入 TI 保留的 OTP 存储内。 根据设备的具体校验数据,boot ROM 自动调用 ADC_cal()子程序 来初始化 ADCREFSEL 和ADCOFFTRIM 寄存器。在通过运行过程中, 该校验过程是自动完成的,用户无需进行任何操作。;(4)DMA 接口 位于外设 0 地址单元的 ADC 结果寄存器(0x0B00-0x0B0F)支持 DMA 直接访问模式,由于 DMA 访问无需通过总线,所以这些寄存 器同时支持 CPU 访问。位于外设 2 地址单元的 ADC 结果寄存器 (0x7108-0x710F)不支持 DMA 访问。;(1)ADC 模块控制寄存器 1(ADCTRL1) (2)ADC 模块控制寄存器 2(ADCTRL2) (3)ADC 模块控制寄存器 3(ADCTRL3) (4)最大转换通道数(ADCMAXCONV) (5)自动排序状态寄存器(ADCASEQSR) (6)ADC 状态和标志寄存器 (7)ADC 输入通道选择排序控制寄存器 (8)结果寄存器(ADCRESULTn) ;3.ADC配置步骤;(2)ADC 初始化设置,包括对 ADCREFSEL 和 ADCOFFTRIM 寄存器 设置等。 void InitAdc(void); (3)ADC 工作方式设置,包括采样方式、工作频率、采样通道数 等。 AdcRegs.ADCTRL1.bit.ACQ_PS = 0x0f;//顺序采样方式 AdcRegs.ADCTRL3.bit.ADCCLKPS = 1;//ADC 工作 25M 下不分频 AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;// 1 通道模式 AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;//A0 为采样通道 AdcRegs.ADCTRL1.bit.CONT_RUN = 1;//连续采样模式 AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x0;//最大采样通道数,因为只用 到 A0,所以只有 1 个,即数值为 0。;(4)选择 ADC 触发方式,开启转换 AdcRegs.ADCTRL2.all = 0x2000; (5)读取 ADC 转换值 Uint16 Read_ADCValue(void) { while (AdcRegs.ADCST

文档评论(0)

1亿VIP精品文档

相关文档