2246|0

67

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

D/A驱动的实现 [复制链接]

前面已经向您介绍过D/A转换器MAX504,接下来将由卓跃教育继续为您介绍D/A驱动是如何实现的。
  目前嵌入式系统为了更好的适应高效,稳定,可移植的需要,广泛地应用了嵌入式操作系统进行资源管理。Linux因其开放性特点,成为在嵌入式系统中应用最为广泛的操作系统。嵌入式Linux包括RT-linux,µClinux以及ARM处理器使用的ARM-Linux等多种适应不同应用需要的版本。
  D/A驱动的实现
  考虑到一个嵌入式应用系统中,不仅仅包含A/D,D/A转换,还包括其他,如通信,显示,输入等等功能,所以在实现D/A转换功能时,是基于嵌入式操作系统的,以嵌入式Linux作为操作系统。嵌入式Linux在操作外设时,将外设分为三种类型的设备进行操作,即:字符型、块设备和网络设备。在支持D/A操作时,将D/A设备作为字符型设备,需要编写相应的驱动程序。
  驱动程序<s3c2410-da.h>主要包含的内容就是对文件结构体open,ctrl,realse的重定向函数的编写,即定向为s3c2410_da_open,s3c2410_da_ctrl,s3c2410_da_close。这三个函数的作用分别为:
  1.s3c2410_da_open:所做的工作非常简单,就是增加模块使用的计数值,通过该值可以体现逻辑上当先打开da端口的任务数。
  2.s3c2410_da_close:该函数进行的处理与open刚好相反,将模块使用计数值减一,表明使用结束。
   3.s3c2410_da_ctrl:该函数为核心函数,函数定义为
staticints3c2410_exio_ioctl(structinode*inode,structfile*filp,unsignedintcmd,unsignedlongarg),函数功能为:由cmd参数指出D/A操作类型,arg为操作使用的参数,根据cmd和arg,可以根据通道号,对多个D/A通道进行清空操作和数据写入操作。
  应用程序进行系统调用后,进入内核态,运行该函数实现对DA的操作,DA_ENABLE,使能s3c2410用于控制Max504的外部I/O,使CS低电平有效,选中D/A。之后,根据cmd指定的操作类型,对不同的D/A设备进行数据传送操作和寄存器清空操作。对D/A的数据写入,这里是通过s3c2410的SPI口进行的,s3c2410的两个SPI口,在D/A应用中,需要操作的SPI寄存器主要是SPICON和SPITDAT,设置SPICON,使s3c2410工作于主模式,将发送给MAX504进行转换的数据写入SPITDAT,SPITDAT为8位的寄存器,而MAX504是10位D/A转换器,所以需要发送两次,并且MAX504接收的16位数据,要求最低两位一定为00。
  数据经SPI传送后,MAX504并不立即进行数据转换,而是在CS片选上升沿才开始数据转换,DA_DISABLE的作用就是使s3c2410连接MAX504-CLR管脚的外部I/O端失效,此时D/A开始进行数据转换,系统调用结束。将写好的驱动程序库,进行加载,加载到Linux核中,应用程序就可以像操作文件一样操作D/A设备了。
 

 

此帖出自信息发布论坛
点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 2/10 下一条
TI 处理器AM62L深度讲解,报名直播赢【双肩包、充电器、胶囊伞】
【直播要点】• 如何实现安全节能设计;• 开箱体验和demo;• 软件和硬件
【直播时间】3月21日(周五)上午10:00

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表