虽然一开始打算做的是四位半万用表,但是,我们的终极目标是用高档表—— 六位半,向经典表王——安捷伦34401A学习。所以,我思前想后,LT2440无疑是最好的选择,因为其是积分型ADC,温漂够小,但是其价格昂贵,所以我打算在后期六位半中使用,四位半试验阶段就用TI的ADS1232,同是24位ADC,但ADS1232的淘宝价格是12元,与LT2440的几十个大洋想比,还是很便宜的。
关键字:DMM 电阻测量 ADS1232 驱动程序
引用地址:DMM电阻测量分析笔记三~ADS1232驱动程序
下面是ADS1232的STM32驱动程序。
#include"stm32f10x.h"
#include"delay.h"
#include"ads1232.h"
extern unsigned char flag;
#define DOUT GPIO_Pin_0
#define SCLK GPIO_Pin_1
#define PDWN GPIO_Pin_2
#define SPEED GPIO_Pin_3
#define GAIN0 GPIO_Pin_4
#define GAIN1 GPIO_Pin_5
#define A0 GPIO_Pin_6
#define ADPORT GPIOB
#define DOUT_H GPIO_SetBits(ADPORT,DOUT)
#define DOUT_L GPIO_ResetBits(ADPORT,DOUT)
#define SCLK_H GPIO_SetBits(ADPORT,SCLK)
#define SCLK_L GPIO_ResetBits(ADPORT,SCLK)
#define SPEED_H GPIO_SetBits(ADPORT,SPEED)
#define SPEED_L GPIO_ResetBits(ADPORT,SPEED)
#define PDWN_H GPIO_SetBits(ADPORT,PDWN)
#define PDWN_L GPIO_ResetBits(ADPORT,PDWN)
#define A0_H GPIO_SetBits(ADPORT,A0) //AIN 2
#define A0_L GPIO_ResetBits(ADPORT,A0) //AIN 1
#define GAIN_1 GPIO_ResetBits(ADPORT,GAIN0|GAIN1);
/****************************************************
*function name: void AD_InitIO(void)
*description : AD GPIO Initialization,PB0-DOUT,PB1-SCLK
*input : null
*output : null
*return £ºnull
******************************************************/
void AD_InitIO(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin=SCLK;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(ADPORT,&GPIO_InitStructure);
}
/****************************************************
*function name: void DOUT_IN(void)
*description : ADS1232's DOUT PB0 config input
*input : null
*output : null
*return £ºnull
******************************************************/
void DOUT_IN(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin=DOUT;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //ÉÏÀÊäÈë
GPIO_Init(ADPORT,&GPIO_InitStructure);
}
/****************************************************
*function name: void DOUT_OUT(void)
*description : ADS1232's DOUT PB0 config input
*input : null
*output : null
*return £ºnull
******************************************************/
void DOUT_OUT(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin=DOUT;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(ADPORT,&GPIO_InitStructure);
}
/****************************************************
*function name: unsigned long AD_read(void)
*description : read AD data
*input : null
*output : null
*return £ºnull
******************************************************/
unsigned long AD_read(unsigned char channel)
{
int i=0;
unsigned long ad_value=0;
AD_InitIO();
SCLK_L;
PDWN_L;
delay_us(20);
if(channel == 1)
{
A0_L; //AIN1
}
else
{
A0_H; //AIN2
}
GAIN_1;
SPEED_H; //80SPS
PDWN_H;
delay_us(20);
// DOUT_OUT();
// DOUT_H;
// delay_us(1);
DOUT_IN();
while(GPIO_ReadInputDataBit(ADPORT,DOUT)==1);
//delay_ms(200);
flag=1;
for(i=0;i<24;i++)
{
ad_value=ad_value<<1;
SCLK_H;
delay_us(2);
if(GPIO_ReadInputDataBit(ADPORT,DOUT)==1)
{
ad_value|=0x00000001; //or ad_value+=1;
}
else
SCLK_L;
delay_us(2);
}
SCLK_H;
delay_us(2);
SCLK_L;
delay_ms(1);
return ad_value;
}
上一篇:DMM电阻测量分析笔记四~ 模拟开关和运放选型
下一篇:DMM电阻测量分析笔记二~ 电流源输出保护
推荐阅读最新更新时间:2024-03-30 22:58
PCI设备Windows通用驱动程序设计
摘 要: 结合“通用高速PCI总线目标模块”的驱动程序设计,全面地讨论了Windows设备(特别是PCI设备)驱动程序编写时所面临的主要问题及解决方案,并提出了封装设备驱动的方法。
关键词: PCI 设备驱动程序 端口 内存 中断 封装
在设计和使用 PCI 设备时,经常要在PC机的软件中访问和控制硬件设备,但Windows操作系统(包括Windows95/98、Windows NT、Windows 2000为了保证系统的安全性、稳定性和可移植性,对应用程序访问硬件资源加以限制,这就要求设计设备驱动程序以实现PC机的软件对 PCI 设备的访问。
Windo
[应用]
恩智浦发布适用于AUTOSARTM和非AUTOSAR的汽车实时驱动程序(RTD)软件
恩智浦半导体(NXP Semiconductors N.V.,纳斯达克股票代码:NXPI)发布的实时驱动程序(RTD)软件,为带有Arm® Cortex®-M或Cortex-R52内核的所有S32汽车处理器提供支持,恩智浦履行承诺,解决了汽车软件开发的成本和复杂性问题。RTD是S32软件支持平台中的多个新产品之一,通过一系列旨在简化AUTOSAR和非AUTOSAR应用开发的生产级安全合规型软件驱动程序,为新推出的S32K3和现有S32K1/S32G系列提供支持。使用通用代码库和软件API有助于最大程度提高处理器平台之间的软件重复利用率,而在芯片价格中包含生产许可费能够扩大大众市场开发人员对AUTOSAR的访问。 随着现代汽车向
[汽车电子]
MAX5712的AVR驱动程序
/*********************************************************************************** 相关寄存器设置参照M16单片机 初始化写: SPI_Masterinit(); init_DA(); ***********************************************************************************/ /****************************SPI片选硬件宏定义*************************************/ //各芯片的片选脚自行修改 #define
[单片机]
基于ARM9芯片的S3C2440和Linux操作系统设计SPI驱动程序
在嵌入式开发过程中,许多系统通常使用串口驱动来满足通信要求,但在实际应用中,使用SPI通信方式会更加高效和快捷[2]。SPI接口是一种高速、高效的串行接口技术,因而SPI设备在数据通信应用中十分方便[3]。本文基于ARM9芯片的S3C2440和Linux操作系统,设计了一种SPI驱动程序,该驱动程序功能可靠灵活、易于移植,可应用于多种嵌入式平台,实现ARM与设备之间的通信。 1 硬件说明 1.1 S3C2440开发平台 采用三星公司的SoC芯片S3C2440[4]作为核心处理器,主频为400 MHz,并与64 MB SDRAM和64 MB NAND Flash共同组成核心部分。此外,该平台也为用户提供了大量的通
[单片机]
配电变压器的电阻测量及分析
GB/T6451-1999 中规定: 对于1600kVA及以下的 变压器 ,直流 电阻 不平衡率相为4%,线为2%;2000kVA及以上的 变压器 ,直流电阻不平衡率相(有中性点引出时)为2%,线(无中性点引出时)为1%。如果由于 线材 及引线结构等原因而使直流电阻不平衡率超过上述规定时,除应在生产记录中记录实测值外,尚应写明引起这一偏差的原因。使用单位应与同温度下的出厂实测值进行比较,其偏差应不大于2%。 众所周知,测景直流电阻的目的是验证绕组和引线的材质及焊点质量的好坏,而三相电阻的不平衡率主要是检验引线焊接的质量和 开关 、套管等载流组部件联结和接触是否良好。GB6451-1999中做了严格的规定,标准中规定的直流电
[测试测量]
基于驱动程序的
摘要: 介绍一种集计算机、网络、射频卡技术于一体的“一卡通”邮政综合服务系统。邮政客户只需持一张射频卡,即可在邮政营业厅获得各种邮政服务。给出了系统的总体方案,营业厅局域网软、硬件与功能模块设计,以及确保安全、保密等指标的技术措施。
关键词: 邮政业务 网络 射频卡 邮政业务自动化
随着电信业务与邮政业务的分离,邮政已开始自食其力。提高工作效率、降低营业成本是邮政事业走向兴旺发达的重要方面。邮政业虽然已应用一些新技术手段开通了若干新服务项目,如邮政储蓄的异地存取等,带来了一定的经济和社会效益,但综观整个邮政服务的全过程,可以迅速应用现代化技术之处比比皆是。一卡通邮政综合服务系统
[应用]
我在ARM板上写的第一个驱动程序
摘要:搞嵌入式有两个方向,一个是嵌入式软件开发(MCU方向),另一个是嵌入式软件开发(Linux方向)。其中,MCU方向基本是裸机开发和RTOS开发,而Linux开发方向又分为驱动开发和应用开发。相较于驱动开发,应用开发相对简单一些,因为搞驱动你要和Linux内核打交道。而我们普通的单片机开发就是应用开发,和Linux开发没多大区别,单片机你去调别人写好的库,Linux应用你也是调别人的驱动程序。 很多人学习的路线是:单片机到RTOS,再到Linux,这个路线其实是非常好,循序渐进。因为你学了单片机,所以你对RTOS的学习会很容易理解,单片机+RTOS在市面上也可以找到一个很好的工作。因为你学了RTOS,你会发现Linux驱动开发
[单片机]
吉时利最新系统开关提供高通道数信号、符合LXI B和集成DMM
美国俄亥俄州克利夫兰市2007年9月17日讯 ——新兴测量需求解决方案的领导者吉时利仪器公司(NYSE:KEI),今日发布了其3700系列系统开关/万用表和插卡系列产品,这是吉时利基于新一代平台的开关和集成数字万用表(DMM)测试解决方案。该产品实现了高品质、仪器级的开关功能,适用于包括需要大量通道的高性能应用在内的多种应用领域,可控制多达576个多路复用通道,外形尺寸采用业界领先的六槽、2U风格。其高性能的集成DMM选件具有快速、低噪声的测量能力,分辨率高达七位半,而价格却低于普通六位半的DMM设备。若想了解关于3700系列产品更详细的信息并观看产品演示短片,敬请点击 www.keithley.com/pr/076 . 3700
[新品]