DAC7714在嵌入式激光跟踪仪中的应用[图]

摘要:在某型激光跟踪仪的设计中,通过实时控制俯仰、方位两路电机,实现目标的快速、平稳跟踪。使用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%,完全能够满足激光跟踪的要求。
如何使用一些评估套件来安全探索USB新技术的功能?
Imagination 分享 MIPS 的正面进展
超融合一体机是什么,它的优势都有哪些
恩智浦发布两款多协议无线MCU,具有多种低功耗和低无线电功耗模式
康泰瑞影重新定义超声图像增强功能
DAC7714在嵌入式激光跟踪仪中的应用[图]
慧拓荣登中国领先汽车科技企业50榜单
物联网应用设计时需要注意的连接器要求
AMD台式机CPU份额首次超过Intel
吉方工控推出Elkhart Lake新品:GM-J6412D16产品系列
mcu芯片是指什么芯片
生活中常用的节电技巧
华为IPv6+百校合作计划助力数字人才培养
AI新业务正成为百度新的增长引擎
结合S/4HANA和云迁移:企业如何受益
.NET基于虹软人脸识别SDK 快速开发身份验证和自助发卡应用
索尼已经正式发布了其Wena系列智能手环的改进版
智锐CAN-BUS智能门禁管理系统方案
集成电路的代换与检测方法
采用32位ARM处理器实现现场数据采集器的设计方案