微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于ARM-Linux的MAX1303接口与驱动程序设计

基于ARM-Linux的MAX1303接口与驱动程序设计

时间:10-10 来源:互联网 点击:

摘要:针对数据采集与处理系统的应用需求,设计了嵌入Linux的ARM9处理器LPC3250与16位AD采样芯片MAX1303的硬件接口和驱动程序。首先,描述了LPC3250和MAX1303的性能、特点以及硬件接口电路设计方案。然后,在硬件平台的基础上,详细地阐述了嵌入式Linux下MAXl303驱动程序的组成模块和具体实现方法,并给出了部分源代码以及对设备驱动的测试方法。测试结果表明,系统工作正常、稳定,采样结果正确,具有实际工程应用价值。
关键词:LPC3250;MAX1303;SPI;嵌入式Linux;设备驱动

在数据采集系统中,通常是通过传感器将自然世界的物理量转化成电量,电量是模拟量,必须经过模/数转换才能被系统的处理器读取。现在的很多微处理器都有片内AD,但这些AD多数是8位、10位或者12位,有时候很难满足精度要求。所以需要利用处理器的接口资源外扩精度较高的AD芯片。然而精度越高,价格越贵。所以在选择AD芯片时,必须充分考虑这两个方面。本系统在对采样精度和价格进行权衡后,决定选择16位模/数转换器。由于设计的数据采集系统放置于环境恶劣的野外,所以全部器件都要满足工业级标准,所以最终选择了MAXIM公司的MAX1303。处理器选用了恩智普公司的ARM9微处理器LPC3250。在此基础上,设计了硬件连接,以及Linux2.6.29内核下的设备驱动程序,并通过编写的应用程序对驱动程序进行了测试。

1 芯片介绍
1.1 LPC3250简介
LPC3250是恩智普公司推出的、采用RISC结构、基于ARM926EJ-S内核的32位工业级处理器,可工作于-40~+85℃的范围内。它的最高工作频率可达266 MHz,具有完整的存储管理单元(MMU),可以嵌入Linux/Wince等需要MMU支持的操作系统;高达256 kB的内部SRAM可用于数据和代码存储;32 kB数据高速缓存和32 kB指令高速缓存;矢量浮点协处理器具有硬件浮点计算功能。另外,片内有SD/MMC卡主机控制器和以太网控制器使系统实现文件存储和以太网功能变得简单,这对于数据采集系统非常有用。
1.2 AD芯片MAX1303简介
MAX1303是MAXIM公司推出的工业级、低功耗、多量程、16位精度的模/数转换芯片,采用+5 V单电源供电,最高采样率可达115kbps。可使用+4.096 V片上基准或者3.800到4.136 V之间的外部电压基准。采用20引脚的TSOP封装。它的引脚如图1所示。

从引脚图可以看出,芯片外部有多种电源引脚,这些引脚对应芯片内部独立的功能模块。对芯片采用独立的电源供电可以尽可能的使工作环境保持低噪声。第16、17引脚在使用外部电压基准时分别连接AVDD和基准电压,在使用芯片内部基准时,分别通过0.01μF和1μF的电容旁路到AGND1即可。其他引脚功能如表1所示。
CH0-CH4支持4路单端输入,或者2路差分输入。SSTRB在AD转换器的某些工作模式下可指示转换状态。另外4种数字接口可通过SPI/OSPI /MICROWIRE兼容的串行接口与2.7 V至5.25 V的系统连接。
MAX1303支持7种单端输入范围或者3种差分输入范围,有7种工作模式。这些都可以通过输入控制字进行配置。

2 系统硬件设计
已提到,模/数转换器MAX1303可以通过SPI/QSPI/MICROWIRE兼容的串行接口进行控制。由于SPI比较常见,并且协议简单,本系统使用SPI协议控制此AD芯片。然而,虽然LPC3250有内置的SPI控制器,但本系统选择使用LPC3250的GPI/O口模拟SPI接口对MAX1303进行控制。下面分析原因。
已提到,MAX1303有7中工作模式,其中,有3种用于数据采集。这3种工作模式是:外部时钟模式;外部采集模式;内部时钟模式。这3种采集模式各有优缺点。外部时钟模式的吞吐率最高,同时,给处理器带来的负担也最高;内部时钟模式吞吐率次之,能适当减轻处理器的负担;外部采集模式的吞吐率最低,但却能最大限度的减轻处理器负担。由于LPC3250性能强大,所以系统在采集数据时,使用吞吐率高的外部时钟模式。然而,使用外部时钟模式时,不像使用内部时钟模式和外部采集模式,处理器向MAX1303写完控制字和转换启动字后,只需等待MAX1303的SSTRB引脚输出的转换结束信号,然后就可以读取转换结果。使用外部时钟模式,需要精确的控制时钟个数,这使得在驱动程序中,要经常修改SPI的相关控制器,而且还要通过查询来确定时钟的个数。如果使用LPC3250的GPI/O口模拟SPI协议控制AD芯片就简单的多。控制GPO口不断翻转输出电平就可以产生时钟信号,而且可随意控制时钟个数。对于发送数据,只需要简单的把数据字节的每个位根据时钟变化通过GPI口输出给AD芯片。读取数据与发送数据是一个相反的过程,但类似。

所以,用GPI/O口模拟SPI总线控制MAX1303非常

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top