分享

8通道16位DAC芯片LTC2600编程使用

 tyam1422 2020-08-26

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代码

  1. //channel=0-7分别代表通道A-H,15代表全部通道。data代表输出电压,范围0-65535
  2. void SendDA_LTC2600(uint8_t channel,uint16_t data)
  3. {
  4. uint32_t xkdata=0,i;
  5. xkdata|=0x03<<20;//命令位c1和c0写为1:写至输入寄存器n,更新所有寄存器。
  6. xkdata|=(channel&0x0f)<<16;//通道地址
  7. xkdata|=data&0xffff;//防止data数据过大,最大支持16bit
  8. xkdata<<=8;//数据左移8位,低八位为空
  9. CS_0();//片选(引脚7),片选为低时,sck被使能,数据转移至寄存器
  10. //LTC2600 SCLK时钟高达50M,因此可以不延迟
  11. for(i=0;i<24;i++)
  12. {
  13. SCK_0();
  14. if(xkdata&0x80000000)//对xkdat的31位到8位按位与
  15. {
  16. DIO_1();//SDI(引脚9)
  17. }
  18. else
  19. {
  20. DIO_0();
  21. }
  22. SCK_1();//sck(引脚8)上升沿,数据转移至器件。
  23. xkdata<<=1;
  24. }
  25. CS_1();//片选拉高,sck禁能,执行规定的命令
  26. }

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多