AD转换和DA转换苦心收集.ppt
嵌入式系统-使用HCS12微控制器的设计与应用,1,第8章 A/D转换和D/A转换,嵌入式系统-使用HCS12微控制器的设计与应用,2,本章目录,8.1 A/D和D/A转换的基本问题8.2 DG128内部A/D转换模块8.3 DG128内部A/D转换编程实例8.4 高位AD扩展接口8.5 扩展实现DA转换8.6 常用传感器,嵌入式系统-使用HCS12微控制器的设计与应用,3,8.1 A/D和D/A转换的基本问题,8.1.1 A/D转换,1采样精度2采样速率3滤波4物理量回归,数字控制系统框图,嵌入式系统-使用HCS12微控制器的设计与应用,4,8.1 A/D和D/A转换的基本问题,8.1.2 A/D转换器积分型A/D转换器逐次逼近型A/D转换器,嵌入式系统-使用HCS12微控制器的设计与应用,5,8.1 A/D和D/A转换的基本问题,8.1.3 D/A转换D/A转换器的转换精度 分辨率转换误差D/A转换器的转换速度 建立时间tset转换速率SR,嵌入式系统-使用HCS12微控制器的设计与应用,6,8.1 A/D和D/A转换的基本问题,8.1.4 D/A转换器D/A转换器的组成 开关网络电阻网络集成运放组成比例求和电路倒T型电阻网络D/A转换器,嵌入式系统-使用HCS12微控制器的设计与应用,7,8.1 A/D和D/A转换的基本问题,4位R-2R倒T型D/A转换器,嵌入式系统-使用HCS12微控制器的设计与应用,8,8.2 DG128内部A/D转换模块,8.2.1 DG128内部A/D转换模块寄存器A/D转换控制寄存器2 A/D转换控制寄存器3 A/D转换控制寄存器4 A/D转换控制寄存器5 A/D转换状态寄存器0,嵌入式系统-使用HCS12微控制器的设计与应用,9,8.2 DG128内部A/D转换模块,8.2.1 DG128内部A/D转换模块寄存器A/D转换测试寄存器1 A/D转换状态寄存器1 A/D转换输入使能寄存器 A/D转换端口数据寄存器 A/D转换结果寄存器,嵌入式系统-使用HCS12微控制器的设计与应用,10,8.2 DG128内部A/D转换模块,8.2.2 A/D转换模块的基本编程方法1A/D转换初始化,ATDCTL2=0b11000000;/ATDCTL2.ADPU=1为打开转换电源开关/ATDCTL2.AFFC=1为A/D转换CCF自动清0位 ATDCTL3=0b00001011;/ATDCTL3.S1C=1表示序列长度为1/ATDCTL3.FIFO=0为非FIFO模式/ATDCTL3.FRZ0FRZ1=11表示立刻进入冻结模式 ATDCTL4=0b00000111;/ATDCTL4.PRS4PRS0=00111表示总线频率16分频 ATDCTL4/ATDCTL4.SRES8=0表示10位转换精度,嵌入式系统-使用HCS12微控制器的设计与应用,11,8.2 DG128内部A/D转换模块,8.2.2 A/D转换模块的基本编程方法2启动A/D转换,ATDCTL5=0b00100000;/ATDCTL5.DJM=0,结果寄存器数据采用左调整方式/ATDCTL5.SCAN=1,连续转换序列/ATDCTL5.CCCA=000,启动0通道转换,嵌入式系统-使用HCS12微控制器的设计与应用,12,8.2 DG128内部A/D转换模块,8.2.2 A/D转换模块的基本编程方法3获A/D转换结果,while(1)/判断ATDSTAT0的第7位是否为1 if(ATDSTAT0/返回10-bit的转换结果,嵌入式系统-使用HCS12微控制器的设计与应用,13,8.3 DG128内部A/D转换编程实例,8.3.1 A/D转换C语言头函数(ADC.h),/AD转换寄存器及标志位定义#define SCFBit 7/转换完成标志位/串行通信相关函数声明/A/D转换初始化void ADCInit(void);/1路10位A/D转换INT16U ADCvalue(INT8U channel);/1路10位A/D转换(中值滤波)INT16U ADCmid(INT8U channel);/1路10位A/D转换(平均值滤波)INT16U ADCave(INT8U n,INT8U channel);,嵌入式系统-使用HCS12微控制器的设计与应用,14,8.3 DG128内部A/D转换编程实例,8.3.2 A/D转换的C语言子函数(ADC.c)A/D转换初始化 void ADCInit(void)1路10位A/D转换函数 INT16U ADCvalue(INT8U channel)1路A/D转换函数(中值滤波)INT16U ADCmid(INT8U channel)1路A/D转换函数(均值滤波)INT16U ADCave(INT8U n,INT8U channel),嵌入式系统-使用HCS12微控制器的设计与应用,15,8.3 DG128内部A/D转换编程实例,8.3.3 A/D转换测试实例主函数(main.c)第1步:禁止总中断第2步:芯片初始化第3步:串口初始化第4步:A/D转换初始化第5步:在通道0做A/D转换,200次中值滤波第6步:发送高8位数据第7步:发送低8位第8步:延迟第9步:转第5步,嵌入式系统-使用HCS12微控制器的设计与应用,16,8.4 高位AD扩展接口,8.4.1 A/D芯片TLC2543概述 引脚说明 编程要点 控制字的格式内部寄存器转换过程与MCU的接口方法,嵌入式系统-使用HCS12微控制器的设计与应用,17,8.4 高位AD扩展接口,8.4.2 SPI模块与TLC2543的接口扩展 扩展电路设计,PTA0,嵌入式系统-使用HCS12微控制器的设计与应用,18,8.4 高位AD扩展接口,8.4.2 SPI模块与TLC2543的接口扩展 编程方法SPI头函数(SPI.h)SPI通信寄存器及标志位定义 SPI通信相关函数声明 TLC2543驱动函数(TLC2543_Driver.c)1路AD转换函数 INT16U TLC2543(INT16U cs,INT8U channel)n路AD均值滤波函数 void ADCP(INT8U n,INT8U cs,INT8U channel,INT16U*Values),嵌入式系统-使用HCS12微控制器的设计与应用,19,8.4 高位AD扩展接口,8.4.2 SPI模块与TLC2543的接口扩展 应用举例:利用上述子程序实现n路A/D数据的采集,并进行平均值滤波。每一路取n次求平均。,void ADCP(INT8U n,INT8U cs,INT8U channel,INT16U*Values)n:均值滤波次数cs:片数Channel:每片的通道数Values:AD平均值,嵌入式系统-使用HCS12微控制器的设计与应用,20,8.5 扩展实现DA转换,8.5.1 DA芯片TLV5608概述 引脚说明TLV5608的控制寄存器 控制寄存器0(CTRL0)控制寄存器1(CTRL1)TLV5608工作原理,嵌入式系统-使用HCS12微控制器的设计与应用,21,8.5 扩展实现DA转换,8.5.2 SPI模块与TLV5608的接口实现,嵌入式系统-使用HCS12微控制器的设计与应用,22,8.5 扩展实现DA转换,8.5.3 扩展DA的程序实现D/A转换中的SPI初始化void DA_SPIInit(void)D/A转换程序void DAC(INT16U*value)TLV5608芯片D/A转换初始化子程序(TLV5608Init.c)void TLV5608Init(void)TLV5608芯片D/A转换子程序(TLV5608Z.c)void TLV5608Z(INT16U channel,INT16U buf),嵌入式系统-使用HCS12微控制器的设计与应用,23,8.6 常用传感器,8.6.1 热敏电阻温度传感器,嵌入式系统-使用HCS12微控制器的设计与应用,24,8.6 常用传感器,8.6.2 灰度传感器,嵌入式系统-使用HCS12微控制器的设计与应用,25,8.6 常用传感器,8.6.3 超声波传感器 8.6.4 红外线传感器,嵌入式系统-使用HCS12微控制器的设计与应用,26,谢 谢,Ver 1.0,