新闻中心

EEPW首页 > 电源与新能源 > 设计应用 > 基于PowerPC的模拟量输入接口扩展

基于PowerPC的模拟量输入接口扩展

作者: 时间:2008-07-01 来源:网络 收藏

本文引用地址:https://www.eepw.com.cn/article/258663.htm
3 硬件结构

MAX197是一种通用A/D芯片,可以和多种处理器接口,本系统通过MPC8349E的局部总线与MAX197连接。硬件结构如图3所示。图3中使局部总线的LBD7~LBD0与MAX197的D0~D7相连。选择MAX197为软件设置低功耗工作方式,所以置SHDN管脚为高电平,本系统采用内部基准电压,所以REF、REFADJ管脚均通过电容接地。用一路片选信号线做读高、低位数据的选择线, 直接与HBEN管脚相连,因而采用读不同地址的方式分别读取低8位和高4位数据。MAX197的INT管脚与系统的INT相连,作为转换识别信号,当数据转换完毕时,MAX197的INT脚产生中断信号,从而使处理器进入中断处理程序进行一路转换数据的读入操作。

4 驱动软件设计

设备是应用程序和机器硬件之间的接口。设备为应用程序屏蔽了硬件的细节,在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。

本系统采用Linux操作系统,需要编制Linux下的设备。A/D转换设备用作为字符设备,而字符设备驱动程序具有比较固定的结构,即将设备抽象成文件来进行操作,因此要在驱动程序实现Open、Close、Write、Read和Ioctl等操作,其中Ioctl对于执行各种类型的硬件控制应用比较方便,其在内核中的原型为

int(*ioctl)(struct inode *inode,
struct file *filp,
unsigned int cmd,
unsigned long arg);

A/D转换的驱动程序主要是实现了这个函数。其中cmd用来传递通道序号,arg传递指向用户空间的一个指针,用来返回A/D转换结果。

当写入控制字开始转换后,处理器进入其它工作状态,直到转换完成产生中断,处理器在ioctl中读取A/D转换结果,并调用put_user(datum,ptr)宏函数将该结果传递到用户空间。Ioctl函数的流程图如图4所示

用户程序实现数据采集需要先打开设备文件,分配数据空间,决定A/D转换通道序号,然后调用ioctl实现A/D转换并得到结果。
当对MAX197 的控制字开始写操作时,转换就开始了。写操作将选择多路通道,并确定MAX197的输入范围是单极性还是双极性。一个写脉冲( )可以开始一次采集,或者对采样进行初始化并开始转换。对任何时钟模式和采集模式,转换间隔都延时12个时钟周期。若在转换周期写一个新的控制字节将使转换失效, 并启动方式可以更精确地控制采样间隔和转换。在这种方式下,用户通过2个写脉冲控制采集和启动转换。在第一写脉冲中,要使ACQMOD 位=1,它将启动一次采集开始。在第二个写脉冲中,要使ACQMOD 位=0,在 的上升沿开始转换并结束采集。在发第一和第二个写脉冲时, 多路输入通道的地址位值必须一样。在第二个写脉冲中, 低功耗模式位( PD0、PD1)可以设一个新值。当转换结束产生一个正确的结果时,芯片发出一个标准的中断信号INT给处理器。在第一个读周期或者写一个新控制字节时,INT就变为高电平。



评论


相关推荐

技术专区

关闭