您当前的位置:五五电子网电子知识单片机-工控设备MSP430单片机MSP430与ADC LC549/1549的接口技术 正文
MSP430与ADC LC549/1549的接口技术

MSP430与ADC LC549/1549的接口技术

点击数:7714 次   录入时间:03-04 12:01:58   整理:http://www.55dianzi.com   MSP430单片机
MSP430系列的许多型号内部都含有A/D转换器(ADCs),例如MSP430F13x系列和MSP430F14x系列,内部均含有12位的A/D。但在许多应用场合,不需要12位的A/D,只需要8 位或10位的A/D就足够了。这时候用户可能会选择MSP430x11x系列,外部添加模数转换器。在典型应用中,低功耗、易操作的TLC549(8位 A/D)或TLV1549(10位A/D)器件可经很方便地与MSP430连接。本文介绍一个MSP430F1121与TLC549的接口实例。 
1 硬件设计 
MSP430F1121使用三个I/O口与TLC549的接口串行相连,通过串行接口采样。TLC549完成A/D转换的时间小于17μs。电路原理图如下所示。
                 
                       TLC549-MSP430F1121应用电路
2 工作原理 
   利用三个数字I/O接口,MSP430F1121驱动TLC549 A/D转换采用异步串行接口,在实际应用中,MSP430F1120的I/O管脚P2.0和P2.1用P2的方向寄存器(P2DIR)配置为输出,用P2 的输出寄存器(P2OUT)提供相应位的输出缓冲信息。P2.0管脚与TLC549的选片管脚CS相连,P2.1管脚与TLC549的输入/输出时钟 I/O CLK相连。转换数据从TLC549的数据输出管脚DO读出,进入MSP430F1121的P2.3管脚。如上图所示,MSP430F1121选择了 P2.0、P2.1、P2.3三个管脚,实际上任意一个管脚均能够驱动TLC549。当CS为高电平时,DO为高阻状态。转换开始之前,CS必须为低电平,以确保完成转换,MSP430F1121在P2.1管脚上产生总计8个的时钟脉冲应用于TLC549 I/O CLK管脚的输入。当CS为低电平时,最先出现在DO管脚的信号为转换值得最高位。MSP430F1121通过P2.3管脚,从TLC549的DO管脚连续移位读取转换数据进入ADCDATA寄存器。最初的四个脉冲的下降沿分别移出上一次转换值的第6位、5位、4位、3位,其中第四个时钟下降沿启动采样功能,采样TL549模拟输入信号的当前转换值。后续三个时钟脉冲输送给I/O CLK管脚,分别在下降沿把上一次转换值的第2位、1位、0位转换位移出。最终(第八个)时钟脉冲的下降沿芯片,采样/保持功能开始保持操作,保持操作持续到下一个第四时钟的下降沿。转换的周期由TLC549的内部振荡器定时,不受外部时钟的约束。一个转换完成需要17μs。在转换过程中, CS给一个高电平,DO回到高阻状态。下一次转换序列之前,至少延时17μs,否则TLC549的转换代码将被破坏。 

3 软件设计 
   在程序中,在程序MEAS_549需要150 MCLK周期和31个字节的汇编代码包括子程序调用。整个例程需要60个字节,功能包括:关闭看门狗,设置堆栈指针,系统复位以后I/O的初始化,子程序 MEAS_549被调用驱动8位转换代码顺序进入ADCDATA寄存器,一个寄存器(R12)临时用来计算字节的位数。

源代码如下:
NAME fet_549 ; MSP430F1121 - TLC549接口例程; 
--------------------------------------------------------------------------------
#define ADCData R11 
#define Counter R12
 
P2IN      equ 00028h ; P2口输入寄存器 
P2OUT_    equ 00029h ; P2口输出寄存器 
P2DIR_    equ 0002Ah ; P2口方向寄存器 
WDTCTL_   equ 00120h ; 看门狗定时控制器 
WDTHOLD   equ 00080h ; 看门狗保持位 
WDTPW     equ 05A00h ; 看门狗写入控制字 

CS        equ 001h ; P2.0 芯片片选 
CLK       equ 002h ; P2.1 芯片时钟 
DO        equ 008h ; P2.3 数据输出 

;--------------------------------------------------------------------- 
ORG 0F000h ; 编程起始地址 
;--------------------------------------------------------------------- 
RESET      MOV .w #0300h,SP                ; 初始化X112X堆栈 
StopWDT    MOV .w #WDTPW+WDTHOLD,&WDTCTL   ; 关闭看门狗定时器 
SetupP2    MOV .b #CS,&P2OUT               ; /CS设置, P2.X初始化 
bis.b #CS+CLK,&P2DIR                     ; /CS 和 CLK输出 


Mainloop call #Meas_549                  ; 调用Meas_549子程序 
jmp Mainloop                             ; 重复调用Meas_549子程序 

;--------------------------------------------------------------------- 
Meas_549; 采样TLC549的数据,数据移入ADCData(R11), 
;计数器 (R12)记录移位的位数 
;--------------------------------------------------------------------- 
MOV .w #8,Counter                   ; 8位数据的位数 
clr.w ADCData                      ; 清除数据缓冲区 
bIC.b #CS,&P2OUT                   ; /CS复位, 使能ADC 
ADC_Loop bit.b #DO,&P2IN           ; (4) DO移入C (进位) 
bis.b #CLK,&P2OUT                  ; (4) 时钟变高电平 
bic.b #CLK,&P2OUT                  ; (4) 时钟变低电平 
rlc.w ADCData                      ; (1) C移入ADCData 
dec.w Counter                      ; (1) 8位全部移入否? 
jnz ADC_Loop                       ; (2) 如果没有,调用ADC_Loop 
bis.b #CS,&P2OUT                   ; /CS设置, 关闭ADC 
ret ; 调出子程序 
;--------------------------------------------------------------------- 
ORG 0FFFEh ; 
;--------------------------------------------------------------------- 
DW RESET ; MSP430复位向量 
END 

用户可对子程序MEAS_549的其中一行进行修改,目的是达到10位转换的需求。程序中需要10个脉冲量,数据移动10位进入ADCDATA寄存器。  MOV .w #10,Counter ; 10位数据的位数.



本文关键字:技术  接口  MSP430单片机单片机-工控设备 - MSP430单片机