4路8位DA转换器TLC5620驱动程序_单片机学习网,电子产品设计,单片机开发 ...

TLC5620是串联型8D/A转换器(DAC),他有4路独立的电压输出D/A 转换器,具备各自独立的基准源,其输出还可以编成为2倍或1倍,在控制TLC5620时,只要对该芯片的DATACLKLDACLOAD端口控制即可,TLC5620控制字为11位,包括8位数字量,2位通道选择,1位增益选择。其中命令格式第1位、第2位分别为A1A0,第3位为RNG,即可编程放大输出倍率,第411位为数据位,高位在前,低位在后。通道与输出关系如下

管脚DATA为芯片串行数据输入端,CLK为芯片时钟,数据在每个时钟下降沿输入DATA端,数据输入过程中LOAD始终处于高电平,一旦数据输入完成,LOAD置低,则转换输出,实验中LDAC一直保持低电平,DACADACBDACCDACD为四路转换输出,REFAREFBREFCREFD为其对应的参考电压

10cdb818bf8.jpg

#include "config.h"

#define DAC_RNG    1                               // 幅值选择

/* TLC5620由P0口控制,控制I/O定义如下 */
#define CLK1           (1<<21)
#define DAT1           (1<<22)
#define LOAD           (1<<23)
#define LDAC           (1<<24)
#define DAC5620CON     (CLK1 | DAT1 | LOAD | LDAC)

/* I/O输出操作函数 */
#define CCLK1()    IO1SET = CLK1
#define SCLK1()    IO1CLR = CLK1

#define CDAT1()    IO1SET = DAT1
#define SDAT1()    IO1CLR = DAT1

#define CLOAD()    IO1SET = LOAD
#define SLOAD()    IO1CLR = LOAD

#define CLDAC()    IO1SET = LDAC
#define SLDAC()    IO1CLR = LDAC

void DAC5620_Data(uint8 no, uint8 dat);
void PIN_Init(void);
void Delay(void);

int main(void)
{   uint8 i;
  
    PIN_Init();                                     // 初始化CPU的IO口

while(1)                                        // 发生锯齿波
{
        DAC5620_Data(1, i);
        DAC5620_Data(2, i);
        DAC5620_Data(3, i);
        DAC5620_Data(4, i);
        i++;
}

return(0);
}

/****************************************************************************
* 名    称:IRQ_Eint3()
* 功    能:外部中断EINT3服务函数,取反B1控制口。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void PIN_Init(void)                                // CPU的IO口初始化函数       
{  
    PINSEL0 = 0x00000000;
    PINSEL1 = 0x00000000;
    IO1DIR = DAC5620CON;
   
    CCLK1();                                        // CLK1 = 0
CDAT1();                                        // DAT1 = 0
SLOAD();                                        // LOAD = 1
SLDAC();                                        // LDAC = 1
}

/****************************************************************************
* 名    称:DAC5620_Data()
* 功    能:DAC芯片TLC5620的控制函数
* 入口参数:uint8 no 通道选择 uint8 dat 输出数值
* 出口参数:无
****************************************************************************/
void DAC5620_Data(uint8 no, uint8 dat)
{   uint16 bak;
    uint8 m;
   
#if DAC_RNG==0   
    bak = (dat<<5) | ((no&0x03)<<14);
#else
    bak = (dat<<5) | ((no&0x03)<<14) | (1<<13);
#endif   

for(m=0; m<11; m++)
{
     SCLK1();        // CLK1 = 1
     Delay();
    
     if((bak&0x8000) == 0)
     {  
         CDAT1();    // DAT1 = 0
     }
     else
     {  
         SDAT1();    // DAT1 = 1
     }   
     Delay();
      
   CCLK1();        // CLK1 = 0
   Delay();
  
   bak <<= 1;
}
CLOAD();            // LOAD = 0
Delay();
SLOAD();            // LOAD = 1
Delay();
CLDAC();            // LDAC = 0
Delay();
SLDAC();            // LDAC = 1
Delay();
}

void Delay(void)
{   uint32 i;

    for(i=0; i<1; i++);
}



郑重声明:资讯 【4路8位DA转换器TLC5620驱动程序_单片机学习网,电子产品设计,单片机开发 ...】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——