微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 14位A/DMAX194在ARM单片机系统中的设计

14位A/DMAX194在ARM单片机系统中的设计

时间:12-23 来源:互联网 点击:

止SPI中断,SPI接口速率为1 MHz,CPOL=0、CPHA=0在SCLK下降沿触发。

2、MAX194转换部分:通过向MAX194的CONV引脚发低脉冲启动A/D转换,转换开始后MAX194的EOC引脚变为高电平,可通过检测EOC引脚是否变为低电平来判断A/D转换的完成。

3、MAX194数据读取部分:首先置低MAX194的CS片选引脚,将无效数据0XFF送至SPI_SPDR以启动SPI总线,通过判SPIF位的置位来判断SPI总线传输是否完成,读取SPI_SPDR后,获得A/D转换结果的第一个字节(BIT13-BIT6)并调整数据;将无效数据0XFF再送至SPI_SPDR,然后再启动SPI总线,仍通过判SPIF位的置位来判断SPI总线传输的完成情况,读取SPI_SPDR后,获得A/D转换结果的第二个字节(BIT13-BIT6)并调整数据,最后将MAX194 的14位A/D转换数据存储在16位无符号变量rcv_data中。

#include “LPC2104.H”// 调用LPC2104寄存器头文件
#define MAX194_CS 0x00000100 // P0.8口为MAX194的片选和信号
#define MAX194_EOC 0x00000100 // P0.9口为MAX194的转换结束信号
#define MAX194_UP 0x00000400 //P0.10口为MAX194的三态选择信号
#define MAX194_CONV 0x00000800 //P0.10口为MAX194的转换启动信号
int main(void)
{ uint16 rcv_data; //存储A/D 转换后的14位数据的变量
PINSEL0 = 0x00005500; //设置SPI管脚连接
PINSEL1 = 0x00000000;
IODIR = MAX194_CS|MAX194_UP|MAX194_CONV;// 设置P0.8,P0.10,P0.11为输出
……
MSpiIni( ); // 初始化SPI接口
MSendData(0xFF,rcv_data); // 进行A/D转换病读取数据
……
}
void MSpiIni(void)
{ SPI_SPCCR = 0x0B; // 设置SPI时钟分频, SPI时钟为1 MHz
SPI_SPCR = 0x20; // 设置SPI接口模式,MSTR=1,CPOL=0,CPHA=0,LSBF=0
IOCLR = MAX194_UP; //关断输入
}
uint8 MSendData(uint8 s_data,uint16 r_data)
{ uint32 temp;
IOSET=Max194_UP; // 打开输入
IOCLR = MAX194_CONV; // 启动转换
Delay(10); // 延时 10us
IOSET = MAX194_CONV;
do
{ temp=IOPIN;}
while(tempMAX194_EOC) ; // 转换结束
IOCLR = MAX194_CS;// 片选
SPI_SPDR = s_data; // 发送数据0xFF
while( 0==(SPI_SPSR0x80) ); // 等待SPIF置位,即等待数据发送完毕
r_data= (uint16)SPI_SPDR; //读取第一个字节数据
r_data=6; //调整数据
SPI_SPDR = s_data; // 发送数据0xFF
while( 0==(SPI_SPSR0x80) ); // 等待SPIF置位,即等待数据发送完毕
r_data= r_data|(SPI_SPDR>>2); //读取第二个字节数据并调整
IOSET = MAX194_CS;
IOCLR = MAX194_UP; //关断输入
}

4 结束语

在使用MAX194中应尽可能把数字地和模拟地分开。如果模拟电源和数字电源来自同一个电源,那么用一低值电阻(10 Ω)将数字电源和模拟电源隔离。MAX194内部的高速比较器对VDDA和VSSA的高频噪声很敏感,应该用0.1 μF与1 μF或10 μF的并联电容将电源旁路接到模拟地。

用于数据采集系统的A/D转换芯片有很多,新品更是层出不穷,数据采集的速度和精度等性能也在不断提高,在应用中不但应根据实际情况采用性价比较高的A/D转换芯片,而且应选用高性价比的处理器(如本文所选LPC2104),这样才能提高整个系统的性能。

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

网站地图

Top