基于SH69P42 PWM的10位D/A转换器
扫描二维码
随时随地手机看文章
1引言
提高单片机片内资源的利用率;缩小最终产品的体积,降低功耗,减轻重量,提高集成度,提高可靠性,是单片机应用系统设计的基本原则。
在单片机选型时,由于内部资源针对不同应用有多种组合,从而形成了单片机系列。例如:片内程序存储器的大小、RAM的大小、A/D精度及通道数、D/A精度及通道数、是否有LCD驱动、I/O数、是否有PWM、精度、中断数量及嵌套、定时器数及精度等。但在实际应用中,也很难做到单片机的配置完全符合应用要求。因为应用是多样化的,而单片机的型号、系列毕竟有限。因此,如果能方便地将单片机所提供的内部功能元件转为另一功能,将大大拓展单片机的应用领域。
当应用需要模拟量输出时,就需要有D/A转换器,一般地,还需有专门的元件以及外围电路。这里阐述一种基于SH69P42的一路PWM实现D/A转换器的方法。
SH69P42是中颖公司基于SH6610D内核的4位RISC指令集的单片机,内部集成有四通道8位SARA/D转换器,两通道10位PWM输出,三种两级中断(A/D中断、端口中断和定时器中断)、两个8位定时器,16个I/O引脚,内有OTP型ROM:3072×16位,RAM:192×4位,内置低电压监视复位和看门狗电路,振荡器工作频率从32768Hz至8MHz,可编程选择片内RC振荡、片外RC振荡、外接晶体振荡等形式。SH69P42共有43条指令,每条指令的执行时间均等,是振荡器周期的4倍。
SH69P42符合工业规格,适用于对系统抗干扰能力要求极高的场合。
3SH69P42的PWM编程
3。1SH69P42的RAM编址
SH69P42的内部寄存器除累加器A、进位标志CY、程序计数器PC之外,端口、定时器、A/D、PWM中断、WDT与通用RAM一起统一编址。其地址由10位组成,源操作数的有效位为7位,因此采用了BANK概念,每128单元为一个BANK,用BANK值给出高3位地址。
例如:LDAMx,bbb
其中,Mx为取数单元地址的低7位,BANK值bbb为取数单元地址的高3位。
LDA10H,01H
表示将RAM单元90H的内容送至累加器A。
3。2SH69P42的PWM编程
SH69P42具有两通道10位PWM输出,分别由三个寄存器控制。
系统寄存器PWMC控制PWM输出,系统寄存器PWMP设置PWM输出信号周期,系统寄存器PWMD设置PWM输出信号的占空比。如表1、表2、表3所列。
4PWM实现D/A转换
4。1实现电路及参数计算
图1为基于SH69P42PWM1的D/A转换的原理图。
(1)振荡选择
由于PWM的周期、占空比与SH69P42的振荡周期密切相关,为保证高精度。尤其是避免温度影响,采用外接晶体振荡器的方法,而不采用内部或外部RC振荡方式。因为后者受工作环境温度影响较大。
4。1。210位D/A的实现方法
从表2、表3看出,SH69P42的PWM输出时,先设定周期再设定占空比,周期确定后,占空比其实就是在本周期内有效高电平(正向,反之同理)脉冲的数量与周期电平数量的比。SH69P42允许最大的周期设定是10位,因此,采用周期固定,也就是3FFH,将待转换数直接对应为占空比的数值,就可以实现10位的D/A转换。
4。1。3输出满量程的分辨率假定输出电压为SH69P42的工作电压为5V,10位数字量的数字分辨率为1/1024,转换为模拟量为5V/1024=4。8mV,这就是模拟输出的分辨率。
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输出(PWMCbit0=1)时,PWMn输出的第一个周期和第一个占空比是按3FFH计数,系统寄存器PWMP和PWMD的数据从第二个周期开始计数;
PWM能在HALT方式下继续工作,并在执行"STOP"指令后自动停止工作。
另外,SH69P42的振荡方式编程不是在程序中实现,而是在对OTP编程之前的烧写设置中按照实际设定的。
4。3转换结果分析
单片机外接振荡器振荡频率为4MHz,PWM时钟设定为8倍tOSC($21=0111),周期设定为3FFH($2A$29$28=0011,1111,1111)时,PWM的时钟周期为2。048ms,占空比(这里相当于D/A转换的数字量)为0FFH($2D$2C$2B=000011111111)。理论计算输出为1。25V(0FFH×5/3FFH),波形显示约为1。25V,基本一致。此时PWM占空比的时间为125μs,周期为2。048ms,与理论值基本一致。
5结束语
常温下实际转换结果与理论计算结果基本一致。在45℃时,实际转换结果和理论计算值的偏差为0。15%左右,能够满足大多数场合的需要。如果对振荡系统、二阶RC低通网络的元件参数提高筛选要求的话,可以实现偏差值在0。1%以内。