STM32驱动16位精度A/D转换芯片ADS1120

发布者:二进制游侠最新更新时间:2015-09-22 来源: eefocus关键字:STM32  转换芯片  ADS1120 手机看文章 扫描二维码
随时随地手机看文章
一.电路连接
STM32驱动16位精度A/D转换芯片ADS1120,使用两个转换通道

STM32驱动16位精度A/D转换芯片ADS1120,使用两个转换通道
原理图中使用了两个通道。
 
二.相关寄存器
见ADS1120官方手册
 
三.代码编写顺序实例(官方伪代码)
STM32驱动16位精度A/D转换芯片ADS1120,使用两个转换通道
[page]
 
四.STM32程序
void ADC_1120_AIN1_CONVER()
{
    
    //**********************************************
    //ADC初始化
    //**********************************************
    
    Delay_N_ms(1);//延时
    ADC_CS_LOW;//选中ADC芯片
    Delay_N_ms(1);//延时
    SPI1_SendByte(0x06);//复位ADC命令
    Delay_N_ms(1);//延时
    SPI1_SendByte(0x43);//0x43--01000011,写四个寄存器,从00-11开始写
    SPI1_SendByte(0x91);//写00寄存器----AIN1为模拟输入管脚,无增益,PGA失能
    SPI1_SendByte(0xc4);//写01寄存器----数据传输率1000SPS,单次转换模式
    SPI1_SendByte(0x00);//写10寄存器----内部2.048V参考源
    SPI1_SendByte(0x00);//写11寄存器----DRAY提示转换结束
    //SPI1_SendByte(0x23);//读寄存器,查看是否正确
    //Delay_N_ms(1);//延时
    //UART2_PutChar(SPI1_ReadByte(0x00));
    //UART2_PutChar(SPI1_ReadByte(0x00));
    //UART2_PutChar(SPI1_ReadByte(0x00));
    //UART2_PutChar(SPI1_ReadByte(0x00));
    SPI1_SendByte(0x08);//打开ADC转换使能,开始ADC转换
    Delay_N_ms(1);//延时
    ADC_CS_HIGN;
    
    
    
    
    
    //**********************************************
    //ADC结果读取并进行数据处理后通过RS485发送至计算机
    //**********************************************
    
    u16 ADC_HIGN_DATA=0,ADC_LOW_DATA=0;
    unsigned char counter,a,b,c,d,e;
    u16 ADC_DATA=0;
    u32 ADC_8TIMES_DATA=0;
  
     for(counter=0;counter<8;counter++)
     
     while(!(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_10) == RESET));//判断DRAY管脚点平是否变低,数据是转换完成准备
          ADC_CS_LOW;
          Delay_N_ms(1); 
          ADC_HIGN_DATA=SPI1_ReadByte(0x00);//读取ADC结果高8位
          ADC_LOW_DATA=SPI1_ReadByte(0x00);//读取ADC结果低8位
          Delay_N_ms(1);
          ADC_CS_HIGN;
          //UART2_PutChar(ADC_HIGN_DATA);
          //UART2_PutChar(ADC_LOW_DATA);
          ADC_DATA = ADC_HIGN_DATA*256 + ADC_LOW_DATA;//得到16位AD数据
          ADC_8TIMES_DATA += ADC_DATA;//累加八次做滤波处理
          ADC_DATA=0;
     }
          ADC_DATA = ADC_8TIMES_DATA >> 3;//取八次平均值  
          ADC_8TIMES_DATA=0;//清零累加器
          ADC_DATA = (unsigned int)(((unsigned long)ADC_DATA)*2*20480/65536);//电压值*10000,用以下来分离各个数字,取小数点后4位
          //ADC_DATA = Real_ADC * 10000;
          a = ADC_DATA /10000;
          b = ADC_DATA % 10000 / 1000;
          c = ADC_DATA % 1000 / 100;
          d = ADC_DATA % 100 / 10;
          e = ADC_DATA % 10;
          UART2_PutChar(0x56);//V
          UART2_PutChar(0x4C);//L
          UART2_PutChar(0x3D);//=
          UART2_PutChar(a+48);
          UART2_PutChar(0x2E);//.
          UART2_PutChar(b+48);
          UART2_PutChar(c+48);
          UART2_PutChar(d+48);
          UART2_PutChar(e+48);
          //UART2_PutChar(0x0D);//回车
          //UART2_PutChar(0x0A);//换行
          Delay_N_ms(5);
          ADC_CS_HIGN;
          
          
    
    //**********************************************
    //结束后使ADC进行掉电模式
    //**********************************************
    
          ADC_CS_LOW;//选中ADC芯片
          Delay_N_ms(1);//延时
          SPI1_SendByte(0x02);//POWERDOWN掉电命令
          Delay_N_ms(1);//延时
    
  
}

关键字:STM32  转换芯片  ADS1120 引用地址:STM32驱动16位精度A/D转换芯片ADS1120

上一篇:关于stm32f1ox.h头文件启动代码与编译器里的宏定义
下一篇:STM32系统嘀嗒时基定时器应用

推荐阅读最新更新时间:2024-03-16 14:32

STM32之ADC单通道连续例程
#include stm32f10x.h /* RCC时钟配置 */ void RCC_config(void) { ErrorStatus HSEStartUpStatus; /* RCC寄存器设置为默认配置 */ RCC_DeInit(); /* 打开外部高速时钟 */ RCC_HSEConfig(RCC_HSE_ON); /* 等待外部高速时钟稳定 */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) { /* 设置HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_D
[单片机]
STM32 printf重定向
STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK) 在STM32串口通信程序中使用printf发送数据,非常的方便。可在刚开始使用的时候总是遇到问题,常见的是硬件访真时无法进入main主函数,其实只要简单的配置一下就可以了。 下面就说一下使用printf需要做哪些配置。 有两种配置方法: 一、对工程属性进行配置,详细步骤如下 1、首先要在你的main 文件中 包含“stdio.h” (标准输入输出头文件)。 2、在main文件中重定义 fputc 函数 如下: // 发送数据 int fputc(int ch, FILE *f) { USART_SendData(
[单片机]
基于stm32的蓝牙串口收发系统
本实验利用信驰达的蓝牙模块进行串口的收发任务,stm32f103用的是串口1,手机APP用的是LighntBlue,蓝牙名字为Vence,stm32开发板为中国移动的OneNet开发板 ①连线 蓝牙模块 stm32f103 VCC VCC GND GND EN PC10 RX TX1 TX RX1 BRTS GND P04 PC7 P05 PC8 ②蓝牙模块的工作模式 启动蓝牙模块需要将EN置0,BRTS置0,接上电源,就开始广播模式 当连接成功时,
[单片机]
基于<font color='red'>stm32</font>的蓝牙串口收发系统
STM32内存地址说明
STM32内存分配 在MDK编译过程中,内存的划分如下: Code是存储程序代码的。 RO-data是存储const常量和指令。 RW-data是存储初始化值不为0的全局变量。 ZI-data是存储未初始化的全局变量或初始化值为0的全局变量。 Flash=Code + RO Data + RW Data; RAM=RW-data+ZI-data; 此内存划分暂未包括堆栈,堆栈会在程序运行时,占用RAM。 堆栈的内存占用就是MDK里,RAM分配给RW-data+ZI-data之后的地址开始分配的。
[单片机]
<font color='red'>STM32</font>内存地址说明
STM32两个蓝牙互连进行收发通信
HC05是主从一体化蓝牙模块,可以通过将两个蓝牙配置成一主一从的方式, 主蓝牙开机后会自动去寻找从蓝牙设备,并自动连接。 两个蓝牙模块通信,首先要让两个蓝牙模块进入命令响应工作模式即AT模式(EN接上USB转TTL的VCC或者3.3V,上电,再长按蓝牙模块上的按键,红灯慢闪即表示进入了AT模式) 配置流程 主蓝牙: 1.设置配对码: AT+PINXXXX (XXXX为四位数字,并与从蓝牙的配对码保持一致) 2.设置蓝牙为主机: AT+ROLE=1 (0为从机,1为主机,2为回环角色) 3.设置蓝牙连接模式: AT+CMODE=0 (0是指定蓝牙地址连接模式,设置为0才能自动的连接绑定的地址) 4.设置蓝牙连接地址:
[单片机]
基于STM32的开源简易示波器项目
一、前言 该项目是基于正点原子精英板制作的一个简易示波器,可以读取信号的频率和幅值,并可以通过按键改变采样频率和控制屏幕的更新暂停。 二、硬件接线 将PA6与PA4相连,可观察到正弦波。 将PA6与PA5相连,可观察到三角波/噪声(默认三角波)。 KEY_UP控制波形的更新和暂停。 KEY_1降低采样率。 KEY_0提高采样率。 三、信号的采集 信号的采集主要是依靠ADC(通过定时器触发采样,与在定时器中断中开启一次采样的效果类似,以此来控制采样的间隔时间相同),然后通过DMA将所采集的数据从ADC的DR寄存器转移到一个变量中,此时完成一次采样。 由于设定采集一次完整的波形需要1024个点,即需要连续采集1024次才算一次
[单片机]
基于<font color='red'>STM32</font>的开源简易示波器项目
ucOS学习笔记(6)——一步一步移植ucOS到STM32
之前已经完成了基本的编译工作。 今天早上开始写了几个基本的设备驱动,同时编写了两个简单的测试任务。其间出现几个问题。 第一个问题是代码编译能通过,但是下载到板子上就是跑不动,根本运行不到main函数,估计是初始化系统部分存在一些问题,我也没有深入研究直接将stm32官方的stm32f10x_vector.s和现在的init.s整合得到以下的系统初始化代码,该代码能够保证测试任务LED流水灯正常运行。 ; If you need to use external SRAM mounted on STM3210E-EVAL board as data memory, ; change the following define value
[单片机]
STM32单片机FSMC的使用解析
在做项目的过程中遇到了这个问题,感觉文章写得不错,共享给对FSMC的使用怀有疑惑的同伴们! LCD有如下控制线: CS:Chip Select片选,低电平有效 RS:Register Select寄存器选择 WR:Write写信号,低电平有效 RD:Read读信号,低电平有效 RESET:重启信号,低电平有效 DB0-DB15:数据线 假如这些线,全部用普通IO口控制。根据LCD控制芯片手册(大部分控制芯片时序差不多): 如果情况如下: DB0-DB15的IO全部为1(表示数据0xff),也可以为其他任意值,这里以0xff为例。 CS为0(表示选上芯片,CS拉低时,芯片对传入的数据才会有效) RS为1(表示DB0-15上传
[单片机]
<font color='red'>STM32</font>单片机FSMC的使用解析
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved