TI中文支持网
TI专业的中文技术问题搜集分享网站

【求助】用MSP430G2452控制的DAC10芯片输出不了电压

拜托各位专家和大神给我指点下迷津 我用430单片机控制一款德仪公司的TLC5615串行数据DAC10芯片  参照官方资料以及一些网上资料写了一段程序  却怎么也输出不了电压  我参考电压用的2.02V   下面是我的程序

#include <msp430g2452.h>

/****************定义IO口**************/

/****P2.3 CS**P2.4 SCLK**P2.5 DIN****/

/*参考电压接3.6V VCC,再经比例放大电路放大至10V**/

#define CS_SET BIT3

#define CS_CLR ~BIT3

#define SCLK_SET BIT4

#define SCLK_CLR ~BIT4

#define DIN_SET BIT5

#define DIN_CLR ~BIT5

int data = 2044; //初始化  输出电压为  5V

void Key_UD(void);

void main(void)

{

//BCSCTL1 &= ~XT2OFF; //开启XT2时钟

//BCSCTL2 |= SELM_2 + SELS; //MCLK = SCLK = XT2 = 32768Hz

while(BCSCTL2 & XT2OF); //判断是否起振    未起振则等待

P2DIR |= BIT3 + BIT4 + BIT5; //设置 P2.3 P2.4 P2.5 为输出模式

// P2OUT |= BIT3 + BIT4 + BIT5; //上拉电阻

// P2REN |= BIT3 + BIT4 + BIT5;

P2OUT |= BIT3;   //CS置位

while(1)

{

Key_UD();

P1OUT |= BIT3;

P1REN |= BIT3;

while(P1IN & BIT3);

unsigned int i;

unsigned j = 0x8000;

P2OUT &= ~BIT4; //SCLK复位

P2OUT &= ~BIT3; //CS复位

for(i = 6;i > 0;i–)

{

if(data & j)

P2OUT |= BIT5; //DIN = 1

else

P2OUT &= ~BIT5; //DIN = 0

_NOP();

P2OUT |= BIT4; //SCLK置位

_NOP();

P2OUT &= ~BIT4; //SLCK复位

j >>= 1;

}

P2OUT |= BIT3; //CS置位  数据写入DA寄存器

_NOP();

P2OUT &= ~BIT3;

}

//for(i = 1000;i > 0;i–)

}

void Key_UD(void)

{

P1OUT |= BIT4 + BIT3;

P1REN |= BIT4 + BIT3;

if(!(P1IN & BIT4)) //这里假设 P1.4为 UP独立键

{

data += 400; //步进1V

if(data > 4096)

data = 0;

}

if(!(P1IN & BIT3)) //假设 P1.5为DOWN独立键

{

data -= 400;

if(data < 0)

data = 4096;

}

}

Andy Chi:

for 循环的 i = 12 不是 6   贴过来的时候弄错了 不好意思

Triton Zhang:

回复 Andy Chi:

TLC5615的数据手册上写的很清楚,在时序图的注释C Sixteenth SCLK falling edge,

你的代码只有12个循环,这样咋个可能正确了.

编程之前一定要仔细看数据手册啊。

Andy Chi:

回复 Triton Zhang:

不是有有两种方式么 一种12个时钟  一种16个时钟 我用的十二个时钟   10个数据位 + 2位填充位

Andy Chi:

回复 Triton Zhang:

不是有有两种方式么 一种12个时钟  一种16个时钟 我用的十二个时钟   10个数据位 + 2位填充位

赞(0)
未经允许不得转载:TI中文支持网 » 【求助】用MSP430G2452控制的DAC10芯片输出不了电压
分享到: 更多 (0)