基于eBox的LTC1446驱动

2019-07-14 21:34发布

本帖最后由 cat_li 于 2015-11-9 20:54 编辑

      LTC1446 是linear出品的双通道12bit轨对轨DAC芯片,采用SPI接口,内部基准电压,满量程输出4.095v,单电源供电(4.5-5v).8Pin封装。
      详细的介绍可以看下面链接,论坛发帖上传图片有点麻烦
      http://www.cnblogs.com/cat-li/p/4949689.html            附件是打包好的代码。工程需要自己建立

     
  1. class LTCX
  2. {
  3.         public:
  4.                 LTCX(GPIO* p_cs_pin,SPI* p_SPI)   // 构造函数,初始化cs和spi pin(指针形式)
  5.                 {
  6.                         cs  = p_cs_pin;
  7.                         spi = p_SPI;
  8.                 }
  9.                 void begin(uint8_t dev_num);      // 初始化相关参数
  10.                 void write(uint16_t _DACA,uint16_t _DACB);    // 将需要输出的值分别写入_DACA和DACB
  11.         private:
  12.                 SPI_CONFIG_TYPE spi_dev_LTC1446;  // 声明结构,配置SPI参数
  13.                 GPIO* cs;
  14.                 SPI* spi;
  15. };
复制代码
  1. void LTCX::begin(uint8_t dev_num)
  2. {
  3.         spi_dev_LTC1446.dev_num = dev_num;             // 用来区分多个spi设备
  4.         spi_dev_LTC1446.mode = SPI_MODE0;              // spi模式
  5.         spi_dev_LTC1446.prescaler = SPI_CLOCK_DIV256;  // spi速度
  6.         spi_dev_LTC1446.bit_order = SPI_BITODER_MSB;   // 发送顺序
  7.        
  8.         spi->begin(&spi_dev_LTC1446);                  // 初始化spi
  9.         cs->mode(OUTPUT_PP);                           // cs设置为输出模式
  10.         cs->set();
  11. }
复制代码
  1. void LTCX::write(uint16_t _DACA,uint16_t _DACB)   
  2. {
  3.         uint32_t _DAC_volue = _DACA<<12 | (_DACB & 0x0fff);    // 合并数据
  4.         spi->take_spi_right(&spi_dev_LTC1446);                 // 获取spi使用权限,并配置spi参数
  5.         cs->reset();                                           // 片选,准备写数据
  6.         // 将_DAC_volue的值从24-->0的顺序写入设备,每次8bit
  7.         spi->write(((uint8_t *)(&(_DAC_volue)))[2]);
  8.         spi->write(((uint8_t *)(&(_DAC_volue)))[1]);
  9.         spi->write(((uint8_t *)(&(_DAC_volue)))[0]);
  10.         cs->set();                                             // 写数据结束,更新dac out
  11.         spi->release_spi_right();                                   // 释放spi使用权
  12. }
复制代码



      对于ebox我想说用起来真心很简单方便,虽然牺牲了一部分灵活性以及STM32的高级特性,但这部分可以使用官方库来弥补。

edriver.zip 下载积分: 积分 -1 分
1.59 KB, 下载次数: 14, 下载积分: 积分 -1 分
0条回答

一周热门 更多>