有调过DAC8532的大神没?紧急求助 我今天调了一天没有数据转换出来,感觉和TLV5818差不多,驱动程序这些没什么错啊 望各位大神帮我看看程序 谢谢 非常感谢了
/****************************************************
引脚初始化定义 时间:2011-4-11
****************************************************/
#define uint unsigned int
#define uchar unsigned char
#define DIN_OUT P1DIR |= BIT0
#define DIN_0 P1OUT &= ~BIT0 //芯片1脚
#define DIN_1 P1OUT |= BIT0
#define SCK_OUT P1DIR |= BIT1
#define SCK_0 P1OUT &= ~BIT1 //芯片2脚
#define SCK_1 P1OUT |= BIT1
#define SYNC_OUT P1DIR |= BIT2
#define SYNC_0 P1OUT &= ~BIT2 //芯片3脚
#define SYNC_1 P1OUT |= BIT2
#define Channal_A 1
#define Channal_B 2
#define Channal_AB 3
//******************初始化函数***********************
void Init_8532()
{
DIN_OUT;
SCK_OUT;
SYNC_OUT;
}
/****************************************************
函数名称:DA_conver
描 述:送入数据转换
参 数:Digital
返 回 值:无
****************************************************/
void DA_conver(uint Digital)
{
uint Dig = 0;
uchar i ;
SCK_1;
SYNC_0; //使能片选
for(i = 0;i < 24; i++)
{
Dig = Digital & 0x800000; //送高位判断"1"或"0"
if(Dig)
DIN_1;
else
DIN_0;
SCK_0; //下降沿锁定数据
_NOP();
Digital <<= 1; //送入下一位
SCK_1;
_NOP();
}
SCK_1;
SYNC_1; //片选无效
}
/*************************************************************
函数名称:DA_write
描 述:模式、通道的选择并进行DA转换
参 数:data_A ,data_B , Channal, Model
返 回 值:无
说 明:data_A data_B 的范围:0~0xfff;
本程序若只选通道A或B 则另一个通道值可任意但不可缺省
**************************************************************/
void DA_write(uint data_A,uint data_B,char Channal)
{
switch (Channal)
{
case Channal_A:
DA_conver(0x100000 | (data_A & 0x00ffff));
break;
case Channal_B:
DA_conver(0x240000 | (data_B & 0x00ffff));
break;
case Channal_AB:
DA_conver(0x000000 | (data_A & 0x00ffff));
DA_conver(0x340000 | (data_B & 0x00ffff));
break;
default: break;
}
}
这是配置芯片相关资料
此帖出自
小平头技术问答
一周热门 更多>