• 数模转换DACTLC5615的说明


    1、TLC5615转换精度10bit,转换后输出为电压,最大输出电压为VDD-0.4V,逻辑电压输入5V(+-5%),若采用5V的逻辑电平,其最大输入电压为4.6V,故参考电压Vref输入必须在0~2.3V范围之内,本仿真实验中取Vref=2.048V;

    2、输出电压计算式:

    3、TLC5615面向CPU的接口采用SPI串行传输,其最大传输速度为1.21Mhz,DA转换时间为12.5us,故一次写入数据(CS引脚从低电平至高电平跳跃)后,必须延时15us左右才可第二次刷入数据再次启动DA转换,参见TLC5615-DATASHEET:

    ....which is a 1.21 MHz update rate. However, the DAC settling time to 10 bits of 12.5 us
    limits the update rate to 80 kHz for full-scale input step transitions.

    4、DOUT引脚作为MISO引脚或者多个TLC5615级联的串行数据输出;

    5、写入转换数据可为12bits格式或者16bits格式(当级联输出时),数据传输高位先发:

    /******************************************************************************/
    /**
    /** 模 块 名: -------------------TLC5615.C---------------------------------
    /**            -----------------数模转换子模块-----------------------------*/
    /** 功能描述:
    /**
    /** 创 建 人: huangtiexiong    日期:2006-11-28   */
    /** 修 改 人:                  日期:2006-11-28   */
    /** 其他说明:
    /******************************************************************************/

    #include "Includes.h"   //文件包含

    /*************************************************
        模块级变量申明                
    *************************************************/
    int8u bdata gBitMsb;
    sbit m7 = gBitMsb^7;

    int8u bdata gBitLsb;
    sbit l7 = gBitLsb^7;


    static void TLC5615_Write_12Bits();

    /*************************************************
        子函数定义                 
    *************************************************/

    /*******************************************************************************
    *** 函 数 名: static void TLC5615_Write_12Bits()
    *** 功能描述: 一次向TLC中写入12bit数据;
    *** 全局变量: gBitMsb:待转换10bit高两位;gBitLsb:10bits的低8位;
    *** 输  入: NO !
    *** 输  出: NO !
    *** 创 建 人:huangtiexiong     日期:2006-11-28
    *** 修 改 人:           日期:2006-11-28
    *** 函数说明: 内部函数;
    /******************************************************************************/
    static void TLC5615_Write_12Bits()
    {
     int8u i;
     SCL = 0;    //置零SCL,为写bit做准备;
     CS = 0;
     for(i=0;i<2;i++)//循2次,发送高两位;
     {
      if(m7)    //高位先发;
       {
        SDA = 1; //将数据送出;
        SCL = 1; //提升时钟,写操作在时钟上升沿触发;
        SCL = 0; //结束该位传送,为下次写作准备;
        }
      else
       {
        SDA = 0;
        SCL = 1;
        SCL = 0;
        }
      gBitMsb <<= 1;
      }
     
     for(i=0;i<8;i++)//循环八次,发送低八位;
     {
      if(l7)
       {
        SDA = 1; //将数据送出;
        SCL = 1; //提升时钟,写操作在时钟上升沿触发;
        SCL = 0; //结束该位传送,为下次写作准备;
        }
      else
       {
        SDA = 0;
        SCL = 1;
        SCL = 0;
        }
      gBitLsb <<= 1;
      }
     
     for(i=0;i<2;i++)//循环2次,发送两个虚拟位;
     {
      SDA = 0;
      SCL = 1;
      SCL = 0;
      }
     
     CS = 1;
     SCL = 0;
     }
    /*******************************************************************************
    *** 函 数 名: extern void TLC5615_Start(int16u dacDat)
    *** 功能描述: 启动DAC转换;
    *** 全局变量: gBitMsb:待转换10bit高两位;gBitLsb:10bits的低8位;
    *** 输  入: dacDat:int16u;
    *** 输  出: NO !
    *** 创 建 人:huangtiexiong     日期:2006-11-28
    *** 修 改 人:           日期:2006-11-28
    *** 函数说明: 外部函数;
    /******************************************************************************/
    extern void TLC5615_Start(int16u dacDat)
    {
     dacDat %= 1024;
     gBitMsb = dacDat/256;
     gBitLsb = dacDat%256;
     gBitMsb <<= 6;
     
     TLC5615_Write_12Bits();
     }
    /*******************************************************************************
    ****                              End Of File
    *******************************************************************************/

  • 相关阅读:
    解析Javascript事件冒泡机制(转)
    JavaScript事件处理的三种方式(转)
    javaScript中"=="和"==="运算符的区别
    博客
    基础知识巩固二
    基础知识巩固
    知识小结(浮点数问题)
    关于电脑桌面图标消失并且右键无法点击的情况
    JS随笔(二)
    关于JS学习笔记
  • 原文地址:https://www.cnblogs.com/hnrainll/p/1912458.html
Copyright © 2020-2023  润新知