微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 模拟DAC10芯片TLC5615输出不了电压

模拟DAC10芯片TLC5615输出不了电压

时间:10-02 整理:3721RD 点击:

拜托各位专家和大神给我指点下迷津 我用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;

}

}

上面都 i是等于12 不是6  贴程序的时候弄错了 不好意思

代码看不懂,不过可以给你两个建议,一是看看从DOUT能不能把你写进去的数字输入读出来,看看读出来的值是否正确;二是按照图1给的时序写一组最简单的SPI时序,SDI写进去一个直流值就行,然后看看输出是不是对应的直流电压。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top