首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
测试测量
» DAC7714在嵌入式激光跟踪仪中的应用
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
DAC7714在嵌入式激光跟踪仪中的应用
发短消息
加为好友
Bazinga
当前离线
UID
1023230
帖子
5213
精华
0
积分
2607
阅读权限
70
在线时间
158 小时
注册时间
2013-12-20
最后登录
2015-10-22
金牌会员
UID
1023230
1
#
打印
字体大小:
t
T
Bazinga
发表于 2015-1-24 11:41
|
只看该作者
DAC7714在嵌入式激光跟踪仪中的应用
嵌入式
,
Linux
,
激光
,
程序
在某型激光跟踪仪的设计中,通过实时控制俯仰、方位两路电机,实现目标的快速、平稳跟踪。使用AT91RM9200处理器,扩展12位DA转换器DAC7714,完成2路直流电机的控制。阐述了在嵌入式Linux环境下该芯片驱动程序开发过程,说明了该驱动程序与测试程序及内核的之间关系。通过驱动程序、测试程序代码的讲解,归纳出嵌入式驱动程序开发的共性及具体开发流程,为嵌入式开发打下基础。
设备驱动程序在Linux内核中占有极其重要的位置,在一个嵌入式系统中,除了CPU、内存以及其他很少的几个部件以外,所有的设备控制操作都必须由驱动程序来完成。系统设计者必须为系统中的每个外设开发相应的驱动程序,否则设备无法在Linux下正常工作。
在基于AT91RM9200处理器的某嵌入式激光跟踪仪中,为了实现目标的快速、平稳跟踪,需要控制两路电机,即:方位电机、俯仰电机。其原理如下:通过不断读取两路角度编码器的数据,计算出两路电机实际角度与期望角度的偏差,利用反馈控制的原理,驱动两路电机跟踪目标。两路电机的控制电压为5V时,电机停止不动;控制电压为0V时,电机以最大速度顺时针旋转;控制电压为10V时,电机以最大速度逆时针旋转。
根据上述控制要求,选择4通道12位的串行DA转换器--DAC7714转换器作为两路电机的控制驱动芯片。该芯片在嵌入式Linux系统下驱动程序的优劣,将直接决定整个仪器的跟踪效果,也是嵌入式开发的需要解决的基本问题之一。
1 概述
DAC7714是美国TI公司推出的一款4通道12位串行输入、电压输出型DA转换器。其供电电压为±15 V,可以实现输出自动保持,采用此串口芯片除了具有节省单片机资源的优点外,还具有同时输出多路0~10 V(参考电压为+10 V和0 V),特别适用于MCU资源紧缺而控制通道比较多的场合。
DAC7714性能特点:
1)12位分辨率,串行接口;
2)功耗仅为250 mW;
3)4个模拟输出通道,电压输出;
4)线性误差±1LSB;
5)支持单极性(0~10 V)或双极性(-10 V~+10 V)输出;
6)自动输出保持;
7)复位信号可选,不同复位方式具有不同初始值。
2 硬件设计
嵌入式激光跟踪仪硬件比较复杂,这里进介绍与电机驱动相关的DAC7714与AT91RM9200的硬件连接部分。由于实际使用时的电机功率较大,需要在DAC7714的两路输出再加一级驱动电路才能真正驱动电机。
2.1 DAC7714引脚及功能
DAC7714为SOJ16封装,具体引脚及功能介绍如下:
VOUTA~VOUTD:4个模拟量输出
CS:片选端,低电平有效
CLK:串行数据时钟端
VCC:正电源,通常为+15 V
VSS:负电源,通常为0或-15 V
GND:地
VREFL:模拟输出电压参考(下限)
VREFH:模拟输出电压参考(上限)
SDI:串行数据输入
LOADDACS:转换结束判断位
RESET和RESETSEL:芯片复位设置位
2.2 DAC7714硬件设计
DAC7714硬件设计比较简单,其可编程引脚RESET、LOADDACS、CS、CLK、SDI分别与AT91RM9200的IO口PA0-PA1、PA3-PA5连接,为下一步驱动程序开发打下基础;其VOUTA、VOUTB接两路电机的控制信号;VREFL接地,VREFH接+10 V,使用单极性接法。其具体连接如图1所示。
图1 DAC7714硬件设计
3 驱动程序设计
驱动程序的目的是驱动硬件正常工作,所以编写驱动程序要针对特定的硬件来进行。在嵌入式激光跟踪仪中,需要编写DAC7714的驱动程序,内核将以设备节点的形式调用、管理该芯片。DAC7714属于串行DA转换器,需要根据其工作时序图,控制AT91RM9200的上述引脚,模拟其工作时序,在内核Linux-2.4.19中完成驱动程序的设计。
3.1 DAC7714工作时序图
DAC7714完成一次数模转换,需要在CS为低电平期间,在CLK的上升沿,串行输出16位数据到SDI.16位数据中,前两位A1和A0的组合将决定对某一通道进行转换输出(00-A通道、01-B通道、10-C通道、11-D通道),接下来两位为无效位,最后的12位数据即真正需要转换的数据。其工作时序图如图2所示。
图2 DAC7714工作时序图
3.2 驱动程序组成
DAC7714驱动程序作为设备文件,同样分为open、write、release等几个操作。对于内核来说,DAC7714属于字符型设备,并为该设备命名为Name[]="DAC7714drv".该模块在使用时采用insmod命令进行动态加载,使用rmmod命令进行动态卸载。DAC7714驱动程序主要由注册函数、注销函数、初始化函数、DA输出函数构成。
用户在使用insmod命令加载模块时,实际调用的是以下注册函数:
应用程序中使用open函数打开DAC7714设备时,实际调用以下函数完成对控制器相应引脚的初始化操作(以PA0连接RESET为例介绍):
应用程序使用write函数操作DAC7714时,实际调用如下函数对其输出进行控制:
在DAC7714_write函数中,控制AT91RM9200的PA0-PA5引脚电平,模拟图2的时序完成DA输出,其流程图3所示。
图3 DAC7714工作流程图
4 测试程序设计
在测试程序中,实现对DAC7714的4路输出分别进行测试。测试方法是,对于指定的数字量,通过万用表或示波器测量DAC7714相应通道的电压输出值,若该值与理论值一致,则表明驱动程序正确。
首先调用open函数打开DAC7714设备,然后控制数字量从0依次加1,并结合通道号生成DAC7714所能识别的控制数字量,然后调用write函数控制输出,当控制数字量达到最大值时,切换下一通道。测试程序主要代码如下。
5 结论
文中给出了DAC7714硬件设计方案,在AT91RM9200+嵌入式Linux环境下,详细介绍了基于其驱动程序和测试程序的设计方法,揭示了嵌入式开发的一般规律。在实际测试过程中,将4路通道的实际输出电压与理论电压进行了比较,误差最大为0.1%,完全能够满足激光跟踪的要求。
收藏
分享
评分
the king of nerds
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议