51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机技术文章 > MSP430单片机 > 详细内容
MSP430与ADC LC549/1549的接口技术
发布时间:2009/7/28  阅读次数:743  字体大小: 【】 【】【

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。电路原理图如下所示。

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位数据的位数.

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号