基于eBox的LTC1446驱动
LTC1446 是linear出品的双通道12bit轨对轨DAC芯片,采用SPI接口,内部基准电压,满量程输出4.095v,单电源供电(4.5-5v).8Pin封装。




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;
};begin函数中,对spi和cs进行初始化。将CS->mode放在spi初始化后面的好处。可以将spi没有用到的pin设置成普通io使用,在本应用中,将PA6(spi miso)作为cs pin 使用
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();
}
关于SPI_MODE,从下图可以看到,mode0为上升沿采样送数据到从设备

void LTCX::write(uint16_t _DACA,uint16_t _DACB)
{
uint32_t _DAC_volue = _DACA<<|(_DACB &0x0fff); // 合并数据
spi->take_spi_right(&spi_dev_LTC1446); // 获取spi使用权限,并配置spi参数
cs->reset(); // 片选,准备写数据
// 将_DAC_volue的值从24-->0的顺序写入设备,每次8bit
spi->write(((uint8_t*)(&(_DAC_volue)))[]);
spi->write(((uint8_t*)(&(_DAC_volue)))[]);
spi->write(((uint8_t*)(&(_DAC_volue)))[]);
cs->set(); // 写数据结束,更新dac out
spi->release_spi_right(); // 释放spi使用权
}
使用例子
#include"ebox.h"
#include"ltc1446.h" #define ADCA PC0
#define ADCB PC1 LTCX ltc1(&PA6,&spi1); int main(void){
uint32_t i =,t =;
ltc1.begin();
uart1.printf("init ok \r\n");
uart1.printf("%d \r\n",i);
while(){
ltc1.write(-i,i);
uart1.printf("OUTA = %d; OUTB= %d \r\n",analog_read_voltage(&ADCA),analog_read_voltage(&ADCB));
}
}
}
基于eBox的LTC1446驱动的更多相关文章
- 基于MTD的NAND驱动开发、K9F1G08 2K page、Yaffs2 Files System
转载:http://hi.baidu.com/cui1206/item/1d4119e376132513585dd886 基于MTD的NAND驱动(linux-2.6.22.10内核),目前已可以在该 ...
- 基于Mvc3,Ef,领域驱动电子商务系统的EShop开发
分享自己从代码小工一步步走向搭架子,ING... 简单了解UnitOfWork 摘要: UnitOfWorkUnit Of Work模式,即工作单元,它是一种数据访问模式.它是用来维护一个由已经被业务 ...
- 基于MongoDb官方C#驱动封装MongoDbCsharpHelper类(CRUD类)
近期工作中有使用到 MongoDb作为日志持久化对象,需要实现对MongoDb的增.删.改.查,但由于MongoDb的版本比较新,是2.4以上版本的,网上已有的一些MongoDb Helper类都是基 ...
- 详解Linux2.6内核中基于platform机制的驱动模型 (经典)
[摘要]本文以Linux 2.6.25 内核为例,分析了基于platform总线的驱动模型.首先介绍了Platform总线的基本概念,接着介绍了platform device和platform dri ...
- 基于OMAPL138的字符驱动_GPIO驱动AD9833(三)之中断申请IRQ
基于OMAPL138的字符驱动_GPIO驱动AD9833(三)之中断申请IRQ 0. 导语 学习进入到了下一个阶段,还是以AD9833为例,这次学习是向设备申请中断,实现触发,在未来很多场景,比如做用 ...
- 适用于app.config与web.config的ConfigUtil读写工具类 基于MongoDb官方C#驱动封装MongoDbCsharpHelper类(CRUD类) 基于ASP.NET WEB API实现分布式数据访问中间层(提供对数据库的CRUD) C# 实现AOP 的几种常见方式
适用于app.config与web.config的ConfigUtil读写工具类 之前文章:<两种读写配置文件的方案(app.config与web.config通用)>,现在重新整理一 ...
- 基于Linux ALSA音频驱动的wav文件解析及播放程序 2012
本设计思路:先打开一个普通wav音频文件,从定义的文件头前面的44个字节中,取出文件头的定义消息,置于一个文件头的结构体中.然后打开alsa音频驱动,从文件头结构体取出采样精度,声道数,采样频率三个重 ...
- C#基于Mongo的官方驱动手撸一个Super简易版MongoDB-ORM框架
C#基于Mongo的官方驱动手撸一个简易版MongoDB-ORM框架 如题,在GitHub上找了一圈想找一个MongoDB的的ORM框架,未偿所愿,就去翻了翻官网(https://docs.mongo ...
- 基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则
目录 前言 聚合 聚合和聚合根原则 包含业务原则 单个单元原则 事务边界原则 可序列化原则 聚合和聚合根最佳实践 只通过ID引用其他聚合 用于 EF Core 和 关系型数据库 保持聚合根足够小 聚合 ...
随机推荐
- php 实现推技术comet(转)
实现实时通信一般有两种方式:socket或comet.socket是比较好的解决方案,问题在于不是所有的浏览器都兼容,服务器端实现起来也稍微有点麻烦.相比之下,comet(基于HTTP长连接的&quo ...
- jQuery常用方法验证
验证邮箱: $('input[data-name="email"]').keyup(function () { var em; em = $(this).val(); if (!e ...
- oracle中number类型的数据使用as string 得到的值为null
1,如果数据的运行时类型(和数据库字段类型相同)不是字符串类型,比如number/date等,将ds.Tables[0].Rows[i][j] 调用 as string 时,不管 这个字段是否有值,这 ...
- hdu1241 dfs
链接改天再补 杭电又崩了... 题意:求“@”组成了多少个联通区域,每个点的8个方向都认为是相连的 思路:对每一个点进行搜索 当Map == @ && vis == 0 时 可进入搜索 ...
- SurfaceView的简单使用
package com.example.administrator.mystudent.surfaceView; import android.content.Context; import andr ...
- ArcGIS 使用点滴记录
(1)ArcGIS Shapefile数据text类型字段最长为254.若想更长,使用GeoDatabase (2)ArcGIS中出现一些奇奇怪怪的问题,找不到解决方法时,一般考虑是不是空间参考的问题 ...
- JS移动客户端--触屏滑动事件 banner图效果
JS移动客户端--触屏滑动事件 移动端触屏滑动的效果其实就是图片轮播,在PC的页面上很好实现,绑定click和mouseover等事件来完成.但是在移动设备上,要实现这种轮播的效果,就需要用到核心的t ...
- 论meta name= viewport content= width=device-width initial-scale=1 minimum-scale=1 maximum-scale=1的作用
一.先明白几个概念 phys.width: device-width: 一般我们所指的宽度width即为phys.width,而device-width又称为css-width. 其中我们可以获取ph ...
- lightetreeview
http://www.16css.com/menu/905.html 其他树形菜单:很好--1.http://www.cnblogs.com/zhhh/archive/2011/11/25/22637 ...
- javascript通过时区获取时间
/* 描述:时区的换算 参数:offset时区位置 使用:东八区calcTime(”+8"); */ function calcTime(offset) { // 创建一个本地日期 var ...