1.简介
LTC2600是亚德诺公司的单极性八通道16位轨至轨DAC,体积小,分辨率高。使用SPI驱动方式编程控制。
2.引脚功能
先上一张手册里面的引脚功能描述,重点关注片选引脚CS,时钟引脚SCK,数据输入SDI。
2.1 片选CS引脚:如引脚介绍上所说,当片选CS为低电平时,SCK被使能,SDI的数据转移到寄存器,CS为高时,SCK禁能,系统执行规定的命令。所以我们在写数据时先把CS拉低,等到数据写完再把CS拉高即可。
2.2 时钟SCK引脚:具体的使用逻辑参照SDI的引脚介绍和本文第三节的时序图,SCK上升沿时SDI发送一个bit的数据。
2.3 数据输入SDI:串行接口数据输入,单片机控制输出各个bit的值。
3.时序图
通过这张时序图,可以看出LTC2600的读写逻辑,和其他SPI读写大同小异。片选为低时才能发送数据,SDI在时钟SCK的上升沿发送数据。
4.数据位
LTC2600一组输入数据共24个bit。低16位为数据信息,16-19位为通道地址,20-23位为命令类型。通道地址和命令类型定义见下表1.
5.代码实现
代码使用模拟SPI实现控制。具体的代码参照以下链接,已经封装好文件,直接调用即可。
LTC2600代码
//channel=0-7分别代表通道A-H,15代表全部通道。data代表输出电压,范围0-65535 void SendDA_LTC2600(uint8_t channel,uint16_t data) xkdata|=0x03<<20;//命令位c1和c0写为1:写至输入寄存器n,更新所有寄存器。 xkdata|=(channel&0x0f)<<16;//通道地址 xkdata|=data&0xffff;//防止data数据过大,最大支持16bit xkdata<<=8;//数据左移8位,低八位为空 CS_0();//片选(引脚7),片选为低时,sck被使能,数据转移至寄存器 //LTC2600 SCLK时钟高达50M,因此可以不延迟 if(xkdata&0x80000000)//对xkdat的31位到8位按位与 SCK_1();//sck(引脚8)上升沿,数据转移至器件。 CS_1();//片选拉高,sck禁能,执行规定的命令
|