本帖最后由 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 附件是打包好的代码。工程需要自己建立
- class LTCX
- {
- public:
- LTCX(GPIO* p_cs_pin,SPI* p_SPI) // 构造函数,初始化cs和spi pin(指针形式)
- {
- cs = p_cs_pin;
- spi = p_SPI;
- }
- void begin(uint8_t dev_num); // 初始化相关参数
- void write(uint16_t _DACA,uint16_t _DACB); // 将需要输出的值分别写入_DACA和DACB
- private:
- SPI_CONFIG_TYPE spi_dev_LTC1446; // 声明结构,配置SPI参数
- GPIO* cs;
- SPI* spi;
- };
复制代码- void LTCX::begin(uint8_t dev_num)
- {
- spi_dev_LTC1446.dev_num = dev_num; // 用来区分多个spi设备
- spi_dev_LTC1446.mode = SPI_MODE0; // spi模式
- spi_dev_LTC1446.prescaler = SPI_CLOCK_DIV256; // spi速度
- spi_dev_LTC1446.bit_order = SPI_BITODER_MSB; // 发送顺序
-
- spi->begin(&spi_dev_LTC1446); // 初始化spi
- cs->mode(OUTPUT_PP); // cs设置为输出模式
- cs->set();
- }
复制代码- void LTCX::write(uint16_t _DACA,uint16_t _DACB)
- {
- uint32_t _DAC_volue = _DACA<<12 | (_DACB & 0x0fff); // 合并数据
- spi->take_spi_right(&spi_dev_LTC1446); // 获取spi使用权限,并配置spi参数
- cs->reset(); // 片选,准备写数据
- // 将_DAC_volue的值从24-->0的顺序写入设备,每次8bit
- spi->write(((uint8_t *)(&(_DAC_volue)))[2]);
- spi->write(((uint8_t *)(&(_DAC_volue)))[1]);
- spi->write(((uint8_t *)(&(_DAC_volue)))[0]);
- cs->set(); // 写数据结束,更新dac out
- spi->release_spi_right(); // 释放spi使用权
- }
复制代码
对于ebox我想说用起来真心很简单方便,虽然牺牲了一部分灵活性以及
STM32的高级特性,但这部分可以使用官方库来弥补。
-
-
edriver.zip
下载积分: 积分 -1 分
1.59 KB, 下载次数: 14, 下载积分: 积分 -1 分
一周热门 更多>