基于SH69P42 PWM的10位D/A转换器
时间:07-24
来源:互联网
点击:
1 引言
提高单片机片内资源的利用率;缩小最终产品的体积,降低功耗,减轻重量,提高集成度,提高可靠性,是单片机应用系统设计的基本原则。
在单片机选型时,由于内部资源针对不同应用有多种组合,从而形成了单片机系列。例如:片内程序存储器的大小、RAM的大小、A/D精度及通道数、D/A精度及通道数、是否有LCD驱动、I/O数、是否有PWM、精度、中断数量及嵌套、定时器数及精度等。但在实际应用中,也很难做到单片机的配置完全符合应用要求。因为应用是多样化的,而单片机的型号、系列毕竟有限。因此,如果能方便地将单片机所提供的内部功能元件转为另一功能,将大大拓展单片机的应用领域。
当应用需要模拟量输出时,就需要有D/A转换器,一般地,还需有专门的元件以及外围电路。这里阐述一种基于SH69P42的一路PWM实现D/A转换器的方法。
SH69P42是中颖公司基于SH6610D内核的4位RISC指令集的单片机,内部集成有四通道8位SAR A/D转换器,两通道10位PWM输出,三种两级中断(A/D中断、端口中断和定时器中断)、两个8位定时器,16个I/O引脚,内有OTP型ROM:3072×16位,RAM:
192×4位,内置低电压监视复位和看门狗电路,振荡器工作频率从32 768 Hz至8 MHz,可编程选择片内RC振荡、片外RC振荡、外接晶体振荡等形式。 SH69P42共有43条指令,每条指令的执行时间均等,是振荡器周期的4倍。
SH69P42符合工业规格,适用于对系统抗干扰能力要求极高的场合。
3 SH69P42的PWM编程
3.1 SH69P42的RAM编址
SH69P42的内部寄存器除累加器A、进位标志CY、程序计数器PC之外,端口、定时器、A/D、PWM中断、WDT与通用RAM一起统一编址。其地址由10位组成,源操作数的有效位为7位,因此采用了BANK概念,每128单元为一个BANK,用BANK值给出高3位地址。
例如:LDA Mx,bbb
其中,Mx为取数单元地址的低7位,BANK值bbb为取数单元地址的高3位。
LDA 10H,01H表示将RAM单元90H的内容送至累加器A。
3.2 SH69P42的PWM编程
SH69P42具有两通道10位PWM输出,分别由三个寄存器控制。
系统寄存器PWMC控制PWM输出,系统寄存器PWMP设置PWM输出信号周期,系统寄存器PWMD设置PWM输出信号的占空比。如表1、表2、表3所列。
4 PWM实现D/A转换
4.1 实现电路及参数计算
图1为基于SH69P42 PWM1的D/A转换的原理图。
(1) 振荡选择
由于PWM的周期、占空比与SH69P42的振荡周期密切相关,为保证高精度。尤其是避免温度影响,采用外接晶体振荡器的方法,而不采用内部或外部RC振荡方式。因为后者受工作环境温度影响较大。
4.1.2 10位D/A的实现方法
从表2、表3看出,SH69P42的PWM输出时,先设定周期再设定占空比,周期确定后,占空比其实就是在本周期内有效高电平(正向,反之同理)脉冲的数量与周期电平数量的比。
SH69P42允许最大的周期设定是10位,因此,采用周期固定,也就是3FFH,将待转换数直接对应为占空比的数值,就可以实现10位的D/A转换。
4.1.3 输出满量程的分辨率
假定输出电压为SH69P42的工作电压为5 V,10位数字量的数字分辨率为1/1 024,转换为模拟量为5 V/1024=4.8 mV,这就是模拟输出的分辨率。
4.1.4 输出端RC网络的参数选择
输出端根据后续电路的需要,可以采取一阶RC积分网络或二阶RC低通网络。图1所示为二阶RC低通网络,一方面可滤除高频杂波,另一方面可根据PWM的周期频率输出满足需要的不会过滞后随动模拟电压。
当PWM1输出为高电平时,通过电阻R2、R3对电容C5、C4充电,Output电压升高,当PWM1输出低电平时两电容C5、C4通过两电阻R2、R3放电,使得Output电压降低。这样,PWM1输出时,在固定周期下随着占空比的变化,Output电压值上下波动,波动幅度与占空比的数值线性相关。
4.2 程序设计规则
SH69P42单片机的PWM在软件设计时需遵循以下规则:
设置PWMn的周期或占空比时,先设置高四位,然后设置中四位,最后设置低四位;
在PWM输出状态下,只有写入PWMn周期或占空比的第四位数据后,数据才会装入重装入计
数器并在下一个周期开始时计数;
当选择以PWMn输出(PWMC bit0=1)时,PWMn输出的第一个周期和第一个占空比是按
3FFH计数,系统寄存器PWMP和PWMD的数据从第二个周期开始计数;
PWM能在HALT方式下继续工作,并在执行"STOP"指令后自动停止工作。
另外,SH69P42的振荡方式编程不是在程序中实现,而是在对OTP编程之前的烧写设置中按照实际设定的。
4.3 转换结果分析
单片机外接振荡器振荡频率为4 MHz,PWM时钟设定为8倍tOSC($21=0111),周期设定为3FFH($2A$29$28=0011,1111,1111)时,PWM的时钟周期为2.048 ms,占空比(这里相当于D/A转换的数字量)为0FFH($2D$2C$2B=0000 1111 1111)。理论计算输出为1.25 V(0FFH×5/3FFH),波形显示约为1.25 V,基本一致。此时PWM占空比的时间为125μs,周期为2.048 ms,与理论值基本一致。
提高单片机片内资源的利用率;缩小最终产品的体积,降低功耗,减轻重量,提高集成度,提高可靠性,是单片机应用系统设计的基本原则。
在单片机选型时,由于内部资源针对不同应用有多种组合,从而形成了单片机系列。例如:片内程序存储器的大小、RAM的大小、A/D精度及通道数、D/A精度及通道数、是否有LCD驱动、I/O数、是否有PWM、精度、中断数量及嵌套、定时器数及精度等。但在实际应用中,也很难做到单片机的配置完全符合应用要求。因为应用是多样化的,而单片机的型号、系列毕竟有限。因此,如果能方便地将单片机所提供的内部功能元件转为另一功能,将大大拓展单片机的应用领域。
当应用需要模拟量输出时,就需要有D/A转换器,一般地,还需有专门的元件以及外围电路。这里阐述一种基于SH69P42的一路PWM实现D/A转换器的方法。
SH69P42是中颖公司基于SH6610D内核的4位RISC指令集的单片机,内部集成有四通道8位SAR A/D转换器,两通道10位PWM输出,三种两级中断(A/D中断、端口中断和定时器中断)、两个8位定时器,16个I/O引脚,内有OTP型ROM:3072×16位,RAM:
192×4位,内置低电压监视复位和看门狗电路,振荡器工作频率从32 768 Hz至8 MHz,可编程选择片内RC振荡、片外RC振荡、外接晶体振荡等形式。 SH69P42共有43条指令,每条指令的执行时间均等,是振荡器周期的4倍。
SH69P42符合工业规格,适用于对系统抗干扰能力要求极高的场合。
3 SH69P42的PWM编程
3.1 SH69P42的RAM编址
SH69P42的内部寄存器除累加器A、进位标志CY、程序计数器PC之外,端口、定时器、A/D、PWM中断、WDT与通用RAM一起统一编址。其地址由10位组成,源操作数的有效位为7位,因此采用了BANK概念,每128单元为一个BANK,用BANK值给出高3位地址。
例如:LDA Mx,bbb
其中,Mx为取数单元地址的低7位,BANK值bbb为取数单元地址的高3位。
LDA 10H,01H表示将RAM单元90H的内容送至累加器A。
3.2 SH69P42的PWM编程
SH69P42具有两通道10位PWM输出,分别由三个寄存器控制。
系统寄存器PWMC控制PWM输出,系统寄存器PWMP设置PWM输出信号周期,系统寄存器PWMD设置PWM输出信号的占空比。如表1、表2、表3所列。
4 PWM实现D/A转换
4.1 实现电路及参数计算
图1为基于SH69P42 PWM1的D/A转换的原理图。
(1) 振荡选择
由于PWM的周期、占空比与SH69P42的振荡周期密切相关,为保证高精度。尤其是避免温度影响,采用外接晶体振荡器的方法,而不采用内部或外部RC振荡方式。因为后者受工作环境温度影响较大。
4.1.2 10位D/A的实现方法
从表2、表3看出,SH69P42的PWM输出时,先设定周期再设定占空比,周期确定后,占空比其实就是在本周期内有效高电平(正向,反之同理)脉冲的数量与周期电平数量的比。
SH69P42允许最大的周期设定是10位,因此,采用周期固定,也就是3FFH,将待转换数直接对应为占空比的数值,就可以实现10位的D/A转换。
4.1.3 输出满量程的分辨率
假定输出电压为SH69P42的工作电压为5 V,10位数字量的数字分辨率为1/1 024,转换为模拟量为5 V/1024=4.8 mV,这就是模拟输出的分辨率。
4.1.4 输出端RC网络的参数选择
输出端根据后续电路的需要,可以采取一阶RC积分网络或二阶RC低通网络。图1所示为二阶RC低通网络,一方面可滤除高频杂波,另一方面可根据PWM的周期频率输出满足需要的不会过滞后随动模拟电压。
当PWM1输出为高电平时,通过电阻R2、R3对电容C5、C4充电,Output电压升高,当PWM1输出低电平时两电容C5、C4通过两电阻R2、R3放电,使得Output电压降低。这样,PWM1输出时,在固定周期下随着占空比的变化,Output电压值上下波动,波动幅度与占空比的数值线性相关。
4.2 程序设计规则
SH69P42单片机的PWM在软件设计时需遵循以下规则:
设置PWMn的周期或占空比时,先设置高四位,然后设置中四位,最后设置低四位;
在PWM输出状态下,只有写入PWMn周期或占空比的第四位数据后,数据才会装入重装入计
数器并在下一个周期开始时计数;
当选择以PWMn输出(PWMC bit0=1)时,PWMn输出的第一个周期和第一个占空比是按
3FFH计数,系统寄存器PWMP和PWMD的数据从第二个周期开始计数;
PWM能在HALT方式下继续工作,并在执行"STOP"指令后自动停止工作。
另外,SH69P42的振荡方式编程不是在程序中实现,而是在对OTP编程之前的烧写设置中按照实际设定的。
4.3 转换结果分析
单片机外接振荡器振荡频率为4 MHz,PWM时钟设定为8倍tOSC($21=0111),周期设定为3FFH($2A$29$28=0011,1111,1111)时,PWM的时钟周期为2.048 ms,占空比(这里相当于D/A转换的数字量)为0FFH($2D$2C$2B=0000 1111 1111)。理论计算输出为1.25 V(0FFH×5/3FFH),波形显示约为1.25 V,基本一致。此时PWM占空比的时间为125μs,周期为2.048 ms,与理论值基本一致。
单片机 LCD PWM 电路 电压 看门狗 振荡器 电阻 电容 相关文章:
- 单片机智能频率信号装置(11-25)
- 单片机在医学信号检测仪中的应用(02-07)
- 单片机应用编程技巧(02-25)
- DSP与单片机通信的多种方案设计(03-08)
- 单片机与PC机串行通信的实现方法 (02-25)
- 单片机与PC通信的简化接口 (05-11)