0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DAC7714转换器在嵌入式Linux环境下的开发应用

电子设计 作者:电子设计 2018-10-12 08:22 次阅读

设备驱动程序在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所示。

DAC7714转换器在嵌入式Linux环境下的开发应用

图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所示。

DAC7714转换器在嵌入式Linux环境下的开发应用

图2 DAC7714工作时序图

3.2 驱动程序组成

DAC7714驱动程序作为设备文件,同样分为open、write、release等几个操作。对于内核来说,DAC7714属于字符型设备,并为该设备命名为Name[]="DAC7714drv".该模块在使用时采用insmod命令进行动态加载,使用rmmod命令进行动态卸载。DAC7714驱动程序主要由注册函数、注销函数、初始化函数、DA输出函数构成。

用户在使用insmod命令加载模块时,实际调用的是以下注册函数:

DAC7714转换器在嵌入式Linux环境下的开发应用

应用程序中使用open函数打开DAC7714设备时,实际调用以下函数完成对控制器相应引脚的初始化操作(以PA0连接RESET为例介绍):

DAC7714转换器在嵌入式Linux环境下的开发应用

应用程序使用write函数操作DAC7714时,实际调用如下函数对其输出进行控制:

DAC7714转换器在嵌入式Linux环境下的开发应用

在DAC7714_write函数中,控制AT91RM9200的PA0-PA5引脚电平,模拟图2的时序完成DA输出,其流程图3所示。

DAC7714转换器在嵌入式Linux环境下的开发应用

图3 DAC7714工作流程图

4 测试程序设计

在测试程序中,实现对DAC7714的4路输出分别进行测试。测试方法是,对于指定的数字量,通过万用表示波器测量DAC7714相应通道的电压输出值,若该值与理论值一致,则表明驱动程序正确。

首先调用open函数打开DAC7714设备,然后控制数字量从0依次加1,并结合通道号生成DAC7714所能识别的控制数字量,然后调用write函数控制输出,当控制数字量达到最大值时,切换下一通道。测试程序主要代码如下。

DAC7714转换器在嵌入式Linux环境下的开发应用

5 结论

文中给出了DAC7714硬件设计方案,在AT91RM9200+嵌入式Linux环境下,详细介绍了基于其驱动程序和测试程序的设计方法,揭示了嵌入式开发的一般规律。在实际测试过程中,将4路通道的实际输出电压与理论电压进行了比较,误差最大为0.1%,完全能够满足激光跟踪的要求。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 转换器
    +关注

    关注

    27

    文章

    8694

    浏览量

    147091
  • 嵌入式
    +关注

    关注

    5082

    文章

    19104

    浏览量

    304829
  • Linux
    +关注

    关注

    87

    文章

    11292

    浏览量

    209335
收藏 人收藏

    评论

    相关推荐

    DAC7714DAC7715有区别吗?DAC7714支持最大的SPI通信速率是多大?

    我有几个关于DAC7714的疑惑想请教一~ 1.DAC7714DAC7715这两款芯片有区别么? 2.有几个参数我不太明白是什么意思(1)settling time 指的是什么时
    发表于 11-19 07:31

    DAC7714应用于MCBSP模块,clk与cs都是模块内部产生的,LD信号不知道怎么给出?

    DAC7714应用于MCBSP模块,clk与cs都是模块内部产生的,但是LD信号不知道怎么给出,才能与cs同步,符合datasheet的时序。 我本身是用判断XRDY标志位是否为1来决定LD信号,但是LD信号总是与CS信号有错位,转换错误.希望哪位大神指导一
    发表于 12-19 08:09

    DAC7714的SPI直接接FPGA的3.3VIO,这样用长时间会不会随器件损耗接口通信出现不正常?

    DAC7714 的输入逻辑高电平手册中说明最大3.325V。由于使用的DAC7714 芯片较多,受板面积限制没有加电平转换芯片,DAC7714的SPI直接接FPGA的3.3VIO。使
    发表于 12-20 16:19

    dac7714驱动无法获得正确电压

    DAC7714四通道,用dsp的spi控制,245电平转换,对四通道均进行驱动,总是程序的最后一个通道才可以驱动,程序的前三个通道无法获得正确的电压
    发表于 02-25 13:49

    Linux嵌入式开发环境有哪些?

    Linux嵌入式系统的对常见的几种嵌入式开发环境一定不会默生,由于主要接触网络相关产品的一些系统设计,因此,将可能用到的嵌入式开发
    发表于 10-29 08:05

    如何搭建嵌入式Linux开发环境

    关于嵌入式Linux开发环境搭建,请参考以下帖子:嵌入式Linux
    发表于 12-16 08:31

    嵌入式Linux嵌入式Linux开发环境

    嵌入式Linux开发 图1是一个典型的嵌入式Linux开发
    发表于 09-10 10:22 119次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>和<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>开发</b><b class='flag-5'>环境</b>

    嵌入式Linux嵌入式Linux开发环境说明

    嵌入式Linux嵌入式Linux开发环境说明
    发表于 03-28 09:49 30次下载

    DAC7714,pdf(Quad, Serial Input

    The DAC7714 is a quad, serial input, 12-bit, voltage output Digital-to-Analog Converter (DAC
    发表于 06-08 11:06 21次下载

    串行数模转换器DAC7714及基于FPGA的应用

    DAC7714是美国TI公司推出的D/A转换器。它包括4通道12位串行数/模转换器和4个精密输出放大器。介绍了DAC7714的结构、功能及其
    发表于 12-07 14:11 50次下载

    嵌入式LINUX开发基础知识

    嵌入式LINUX简介,嵌入式LINUX开发平台简介,嵌入式L
    发表于 07-31 21:34 261次下载

    DAC7714嵌入式激光跟踪仪中的应用

    阐述了嵌入式Linux 环境该芯片驱动程序开发过程,说明了该驱动程序与测试程序及内核的之间关
    发表于 05-09 15:52 55次下载
    <b class='flag-5'>DAC7714</b><b class='flag-5'>在</b><b class='flag-5'>嵌入式</b>激光跟踪仪中的应用

    基于DAC7714嵌入式激光跟踪仪中的应用

    基于DAC7714嵌入式激光跟踪仪中的应用
    发表于 10-31 10:11 4次下载
    基于<b class='flag-5'>DAC7714</b><b class='flag-5'>在</b><b class='flag-5'>嵌入式</b>激光跟踪仪中的应用

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

    摘要: 某型激光跟踪仪的设计中,通过实时控制俯仰、方位两路电机,实现目标的快速、平稳跟踪。使用AT91RM9200处理,扩展12位DA转换器DAC7714,完成2路直流电机的控制。
    发表于 01-17 20:58 423次阅读

    linux 嵌入式开发

    记录linux 嵌入式开发,学习的点点滴滴!
    发表于 11-03 10:21 14次下载
    <b class='flag-5'>linux</b> <b class='flag-5'>下</b><b class='flag-5'>嵌入式开发</b>