从零阅读数据手册

编程入门 行业动态 更新时间:2024-10-07 03:15:31

从零阅读数据<a href=https://www.elefans.com/category/jswz/34/1769120.html style=手册"/>

从零阅读数据手册

  1. 模块来源
    采购链接:.54FyFCS?tk=R4sNdA5qWuW
    ADS1118 16位模数转换模块 ADC开发板/SPI通信接口
    资料下载:.pdf?ts=1695121210267&ref_url=https%253A%252F%252Fwww.ti%252Fproduct%252Fzh-cn%252FADS1118%253FkeyMatch%253DADS1118%2526tisearch%253Dsearch-everything%2526usecase%253DGPN-ALT

  1. 规格参数
    工作电压:2-5.5V
    工作电流:连续模式 150μA
    通信方式:SPI
    引脚数量:12 Pin(2.54mm间距排针)
    暂时无法在飞书文档外展示此内容
    产品数据手册

  2. 模块原理(资料讲解)
    ADS1118 是一款精密、低功耗、16 位模数转换器 (ADC),提供 测量 采用超小型无引线 X2QFN-10 封装 或 VSSOP-10 封装的传感器最常见信号所需的所有功 能。ADS1118 集成了可编程增益放大器 (PGA)、电压 基准、振荡器和高精度温度传感器。这些 功能以及 2V 至 5.5V 的宽电源电压范围,使得 ADS1118 非常适合 功率受限和空间受限的传感器测量 应用。 ADS1118 数据转换速率最高可达每秒 860 次采样 (SPS)。PGA 的输入范围为 ±256mV 至 ±6.144V,能 够以高分辨率测量大信号和小信号。该器件通过输入多 路复用器 (MUX) 测量双路差分输入或四路单端输入。 高精度温度传感器用于系统级温度监控或对热电偶进行 冷结点补偿。 ADS1118 可选择以连续转换模式或单次模式运行。该 器件在单次模式下完成一次转换后自动断电。在空闲状 态下,单次模式会显著降低流耗。所有数据均通过串行 外设接口 (SPI™) 进行传输。ADS1118 的额定工作温 度范围为 -40°C 至 +125°C。

  3. 移植工程
    我们的目标是在梁山派GD32F470上能够实现16bit模式1路ADC采集电压功能,和检查温度。首先要获取资料,查看数据手册应如何实现,再移植至我们的工程。
    查看资料
    (1)ADS1118是SPI协议的,首先要知道ADS1118支持的SPI模式,根据数据手册可知ADS1118位SPImode1。

(2)读取ADS1118数据,根据数据手册介绍可以知ADS1118读取数据和写入数据是同时进行的(符合SPI协议支持全双工模式),只需要配置寄存器的SS位即可启动转换,通过mode位可以设置单次模式和连续模式。

(3)读取ADS1118数据方式,根据数据手册ADS1118数据传输方式有两种模式32bit和16bit。
32bit:SPI一次性发送32位数据,既发送两次相同的寄存器配置(ADS1118 控制寄存器为16位),读取的数据也为32位,前16位为ADS1118数据寄存器的值(ADC转换的值),后16位配置的控制寄存器的值。
16bit:SPI发送一次16位的控制寄存器用于配置ADS1118,这个时候因为全双工模式这一时刻交换的数据没有用,之后拉高片选(CS)后等待DOUT下降沿(数据转换完成DOUT从高变低),在发送相同的转换寄存器配置用于交换数据,这次得到的数据真正的ADC值。
本次主要使用16bit模式进行数据交换。

(4)寄存器说明
ADS1118有两个寄存器一个是控制寄存器( Config Register)和转换寄存器(Conversion Register )

  • 这两个寄存器都是16位,读写都要16位操作

控制寄存器说明
控制寄存器有16位,用于控制工作模式、输入选择、数据速率、满量程范围等。
第15位:SS,读操作时可以知道当前设备的工作状态,写1可以开始工作

第14-12位:MUX为输入多路复用器,对输入模式进行选择,如下图有八种输入模式,分别是四种差分与四种单端输入,(单端输入就是测量的数据有两个引脚,一个输出一个地。差分输入就是测量两个引脚的电压差)

MUX位既配置下图连接。

第11-9位:PGA为可编程增益放大器,设置FSR(满量程范围)。

第8位:MODE选择持续转换模式或单次转换模式。

第7-5位:DR配置数据传输速率,数据传输率越低采样数据越准。

第4位:本位选取ADC读取内部温度传感器或外部通道。

第3位:本位配置DOUT是否内部上拉,推荐使能上拉。

第2-1位:本位配置是否更新控制寄存器,推荐配置位01。

第0位:只读寄存器,总是1。

转换寄存器说明
16位转换寄存器以二进制的补码格式保存结果,其中最高位为1为负数,最高位为0为正数。

4.1 引脚选择(接线方式)
使用硬件SPI0接口。

4.2 移植步骤

/********************************************************************************* 测试硬件:立创·梁山派开发板GD32F470ZGT6    使用主频200Mhz    晶振25Mhz* 版 本 号: V1.0* 修改作者: gugugu* 修改日期: 2022年04月19日* 功能介绍:          ******************************************************************************* 梁山派软硬件资料与相关扩展板软硬件资料官网全部开源  * 开发板官网:www.lckfb   * 技术支持常驻论坛,任何技术问题欢迎随时交流学习  * 立创论坛:club.szlcsc   * 其余模块移植手册:* 关注bilibili账号:【立创开发板】,掌握我们的最新动态!* 不靠卖板赚钱,以培养中国工程师为己任*********************************************************************************/
#include "gd32f4xx.h"
#include "SPI.h"
/******************************************************************* 函 数 名 称:MySPI_W_SS* 函 数 说 明:写片选脚* 函 数 形 参:BitValue = 设置的高低电平* 函 数 返 回:无* 作       者:gugugu* 备       注:无
******************************************************************/
void MySPI_W_SS(uint8_t BitValue)
{gpio_bit_write(SPI_Port,SPI_NSS,BitValue);
}
/******************************************************************* 函 数 名 称:MySPI_Init()* 函 数 说 明:初始化SPI* 函 数 形 参:BitValue = 设置的高低电平* 函 数 返 回:无* 作       者:gugugu* 备       注:无
******************************************************************/
void MySPI_Init()
{spi_parameter_struct spi_structure = {0};rcu_periph_clock_enable(RCU_GPIO);      //使能SPI_Port时钟rcu_periph_clock_enable(RCU_SPI);   //使能SPI0时钟gpio_af_set(SPI_Port,GPIO_AF_5,SPI_SCLK);//复用SPI0_SCLKgpio_af_set(SPI_Port,GPIO_AF_5,SPI_MOSI);//复用SPI0_MOSIgpio_af_set(SPI_Port,GPIO_AF_5,SPI_MISO);//复用SPI0_MISOgpio_mode_set(SPI_Port,GPIO_MODE_AF,GPIO_PUPD_NONE,SPI_SCLK);//SPI0_SCLKgpio_mode_set(SPI_Port,GPIO_MODE_AF,GPIO_PUPD_NONE,SPI_MOSI);//SPI0_M0SIgpio_mode_set(SPI_Port,GPIO_MODE_OUTPUT,GPIO_PUPD_NONE,SPI_NSS);//SPI0_NSSgpio_mode_set(SPI_Port,GPIO_MODE_AF,GPIO_PUPD_NONE,SPI_MISO);//SPI0_MISOgpio_output_options_set(SPI_Port,GPIO_OTYPE_PP,GPIO_OSPEED_25MHZ,SPI_SCLK);//SPI0_SCLKgpio_output_options_set(SPI_Port,GPIO_OTYPE_PP,GPIO_OSPEED_25MHZ,SPI_MOSI);//SPI0_MOSIgpio_output_options_set(SPI_Port,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,SPI_NSS);//SPI0_NSSgpio_output_options_set(SPI_Port,GPIO_OTYPE_PP,GPIO_OSPEED_25MHZ,SPI_MISO);//SPI0_MISOspi_structure.nss = SPI_NSS_SOFT;                            //软件片选spi_structure.endian = SPI_ENDIAN_MSB;  spi_structure.prescale = SPI_PSC_128;                        //时钟分频120M/128=937.5Kspi_structure.device_mode = SPI_MASTER;                      //主机模式spi_structure.trans_mode = SPI_TRANSMODE_FULLDUPLEX;         //双线全双工spi_structure.frame_size = SPI_FRAMESIZE_16BIT;              //数据16位spi_structure.clock_polarity_phase = SPI_CK_PL_LOW_PH_2EDGE; //SPImode1spi_init(SPI0,&spi_structure);                               //初始化SPI0spi_enable(SPI0);                                            //使能SPI0MySPI_W_SS(1);                                               //拉高片选
}
/******************************************************************* 函 数 名 称:MySPI_SwapByte* 函 数 说 明:向从机交换16位数据,并从从机读取16位数据* 函 数 形 参:ByteSend = 发送的16位数据* 函 数 返 回:从机数据* 作       者:gugugu* 备       注:无
******************************************************************/
uint16_t MySPI_SwapByte(uint16_t ByteSend)
{while (spi_i2s_flag_get(SPI0, SPI_FLAG_TBE) != SET);   //读取发送缓冲区空标志spi_i2s_data_transmit(SPI0, ByteSend);                 //发送数据while (spi_i2s_flag_get(SPI0, SPI_FLAG_RBNE) != SET);  //读取接收缓冲区非空标志return spi_i2s_data_receive(SPI0);                     //接收数据
}
/******************************************************************* 函 数 名 称:MySPI_Start()* 函 数 说 明:拉低片选脚开始通信* 函 数 形 参:无* 函 数 返 回:无* 作       者:gugugu* 备       注:无
******************************************************************/
void MySPI_Start()
{MySPI_W_SS(0);
}
/******************************************************************* 函 数 名 称:MySPI_STOP()* 函 数 说 明:拉高片选脚结束通信* 函 数 形 参:无* 函 数 返 回:无* 作       者:gugugu* 备       注:无
******************************************************************/
void MySPI_STOP()
{MySPI_W_SS(1);
}

SPI.h

#ifndef __SPI_H
#define __SPI_H
#include "systick.h"
//SPI 端口定义
#define SPI_Port      GPIOA              //SPI端口
#define SPI_NSS       GPIO_PIN_4         //NSS_PIN
#define SPI_MOSI      GPIO_PIN_6         //MOSI_PIN
#define SPI_MISO      GPIO_PIN_7         //MOSI_PIN
#define SPI_SCLK      GPIO_PIN_5         //SCLK_PINPI#define RCU_SPI       RCU_SPI0         
#define RCU_GPIO      RCU_GPIOAvoid MySPI_W_SS(uint8_t BitValue);
void MySPI_Init();
void MySPI_Start();//拉低片选脚开始通信
void MySPI_STOP();//拉高片选脚结束通信
uint16_t MySPI_SwapByte(uint16_t ByteSend);
#endif

ADS1118.c

 /********************************************************************************* 测试硬件:立创·梁山派开发板GD32F470ZGT6    使用主频200Mhz    晶振25Mhz* 版 本 号: V1.0* 修改作者: LCKFB* 修改日期: 2022年04月19日* 功能介绍:          ******************************************************************************* 梁山派软硬件资料与相关扩展板软硬件资料官网全部开源  * 开发板官网:www.lckfb   * 技术支持常驻论坛,任何技术问题欢迎随时交流学习  * 立创论坛:club.szlcsc   * 其余模块移植手册:* 关注bilibili账号:【立创开发板】,掌握我们的最新动态!* 不靠卖板赚钱,以培养中国工程师为己任*********************************************************************************/
#include "gd32f4xx.h"
#include "ADS1118.h"
//ADS1118 supply voltage 2 - 5.5V
//analog input voltage max VDD+0.3V.    VIN<VDD!!!!!
//(VDD-->3v3,PGA-->4096,)无法获得满量程ADC输出代码,这种意味着一些动态范围的丢失./******************************************************************* 函 数 名 称:ADS1118_ADC_Continuous_Init* 函 数 说 明:初始化ADS1118* 函 数 形 参:channel = ADC外部通道选择,PGA = ADC满量程选择,SPS = ADC数据传输率选择* 函 数 返 回:无* 作       者:gugugu* 备       注:连续模式使用前,调用此函数完成初始化,之后调用ADS1118_Get_ADC_Continuous_Data()
******************************************************************/
void ADS1118_ADC_Continuous_Init(uint16_t channel,uint16_t PGA,uint16_t SPS)
{MySPI_Init();ADS1118_ENABLE;//拉低CS开始通信delay_us(1);MySPI_SwapByte(ADS1118_SS_START|channel|PGA|ADS1118_Continuous_MODE|SPS|ADS1118_Temp_MODE|ADS1118_PUUP_EN|ADS1118_NOP_UPDATA);//发送寄存器命令,交换数据delay_us(10);ADS1118_DISABLE;//拉高CS复位ADS1118结束通信delay_1ms(1);}
/******************************************************************* 函 数 名 称:ADS1118_Get_Tempture_Data()* 函 数 说 明:单次获取ADC内部Temp温度* 函 数 形 参:无* 函 数 返 回:返回内部温度传感器温度* 作       者:gugugu* 备       注:无
******************************************************************/
float ADS1118_Get_Tempture_Data()
{uint16_t ADC_Data = 0;float Tempture_data= 0;ADS1118_ENABLE;//拉低CS开始通信delay_us(5);ADC_Data = MySPI_SwapByte(ADS1118_SS_START|ADS1118_MUX_AIN0|ADS1118_PGA_4096|ADS1118_Sigle_SHOT_MODE|ADS1118_DR_8SPS|ADS1118_Temp_MODE|ADS1118_PUUP_EN|ADS1118_NOP_UPDATA);//发送寄存器命令,交换数据delay_us(5);ADS1118_DISABLE;//拉高CS复位ADS1118结束通信delay_1ms(1);ADS1118_ENABLE;//拉低CS开始通信delay_us(5);while(gpio_input_bit_get(GPIOA,GPIO_PIN_6));//DOUT拉低ADC1118数据更新准备完毕ADC_Data = MySPI_SwapByte(ADS1118_SS_START|ADS1118_MUX_AIN0|ADS1118_PGA_4096|ADS1118_Sigle_SHOT_MODE|ADS1118_DR_8SPS|ADS1118_Temp_MODE|ADS1118_PUUP_EN|ADS1118_NOP_UPDATA);//发送寄存器命令,交换数据delay_us(5);ADS1118_DISABLE;//拉高CS复位ADS1118结束通信if(ADC_Data&0X8000)//MSB=1{ADC_Data = (~ADC_Data)+1 ;}else Tempture_data = (ADC_Data >> 2)*0.03125;return Tempture_data;        
}
/******************************************************************* 函 数 名 称:ADS1118_Get_ADC_SIGLE_SHOT_Data* 函 数 说 明:单次获取AD电压值* 函 数 形 参:channel = ADC外部通道选择,PGA = ADC满量程选择,SPS = ADC数据传输率选择* 函 数 返 回:AD电压值* 作       者:gugugu* 备       注:
******************************************************************/
float ADS1118_Get_ADC_SIGLE_SHOT_Data(uint16_t channel,uint16_t PGA,uint16_t SPS)
{uint16_t ADC_Data = 0;float Tempture_data= 0;ADS1118_ENABLE;//拉低CS开始通信delay_us(15);ADC_Data = MySPI_SwapByte(ADS1118_SS_START|channel|PGA|ADS1118_Sigle_SHOT_MODE|SPS|ADS1118_ADC_MODE|ADS1118_PUUP_EN|ADS1118_NOP_UPDATA);//发送寄存器命令,交换数据delay_us(15);ADS1118_DISABLE;//拉高CS复位ADS1118结束通信delay_1ms(1);ADS1118_ENABLE;//拉低CS开始通信delay_us(15);while(gpio_input_bit_get(GPIOA,GPIO_PIN_6));//DOUT拉低ADC1118数据更新准备完毕ADC_Data = MySPI_SwapByte(ADS1118_SS_START|channel|PGA|ADS1118_Sigle_SHOT_MODE|SPS|ADS1118_ADC_MODE|ADS1118_PUUP_EN|ADS1118_NOP_UPDATA);//发送寄存器命令,交换数据delay_us(15);ADS1118_DISABLE;//拉高CS复位ADS1118结束通信if(ADC_Data&0X8000)//MSB=1{ADC_Data = (~ADC_Data)+1 ;if(PGA == ADS1118_PGA_6144)Tempture_data=ADC_Data*0.1875;else if(PGA == ADS1118_PGA_6144)Tempture_data=ADC_Data*0.1875;else if(PGA == ADS1118_PGA_4096)Tempture_data=ADC_Data*0.125;else if(PGA == ADS1118_PGA_2048)Tempture_data=ADC_Data*0.0625;else if(PGA == ADS1118_PGA_1024)Tempture_data=ADC_Data*0.03125;else if(PGA == ADS1118_PGA_0512)Tempture_data=ADC_Data*0.015625;else Tempture_data=ADC_Data*0.0078125;return Tempture_data;}else if(PGA == ADS1118_PGA_6144)Tempture_data=ADC_Data*0.1875;else if(PGA == ADS1118_PGA_6144)Tempture_data=ADC_Data*0.1875;else if(PGA == ADS1118_PGA_4096)Tempture_data=ADC_Data*0.125;else if(PGA == ADS1118_PGA_2048)Tempture_data=ADC_Data*0.0625;else if(PGA == ADS1118_PGA_1024)Tempture_data=ADC_Data*0.03125;else if(PGA == ADS1118_PGA_0512)Tempture_data=ADC_Data*0.015625;else Tempture_data=ADC_Data*0.0078125;return Tempture_data;        
}
/******************************************************************* 函 数 名 称:ADS1118_Get_ADC_Continuous_Data* 函 数 说 明:连续获取AD电压值* 函 数 形 参:channel = ADC外部通道选择,PGA = ADC满量程选择,SPS = ADC数据传输率选择* 函 数 返 回:AD电压值* 作       者:gugugu* 备       注:使用此函数前调用ADS1118_ADC_Continuous_Init()
******************************************************************/
float  ADS1118_Get_ADC_Continuous_Data(uint16_t channel,uint16_t PGA,uint16_t SPS)
{uint16_t ADC_Data = 0;float Tempture_data= 0;ADS1118_ENABLE;//拉低CS开始通信delay_us(1);while(gpio_input_bit_get(GPIOA,GPIO_PIN_6));//DOUT拉低ADC1118数据更新准备完毕ADC_Data = MySPI_SwapByte(ADS1118_SS_START|channel|PGA|ADS1118_Continuous_MODE|SPS|ADS1118_ADC_MODE|ADS1118_PUUP_EN|ADS1118_NOP_UPDATA);//发送寄存器命令,交换数据delay_us(1);ADS1118_DISABLE;//拉高CS复位ADS1118结束通信if(ADC_Data&0X8000)//MSB=1{ADC_Data = (~ADC_Data)+1 ;if(PGA == ADS1118_PGA_6144)Tempture_data=ADC_Data*0.1875;else if(PGA == ADS1118_PGA_6144)Tempture_data=ADC_Data*0.1875;else if(PGA == ADS1118_PGA_4096)Tempture_data=ADC_Data*0.125;else if(PGA == ADS1118_PGA_2048)Tempture_data=ADC_Data*0.0625;else if(PGA == ADS1118_PGA_1024)Tempture_data=ADC_Data*0.03125;else if(PGA == ADS1118_PGA_0512)Tempture_data=ADC_Data*0.015625;else Tempture_data=ADC_Data*0.0078125;return Tempture_data;}else if(PGA == ADS1118_PGA_6144)Tempture_data=ADC_Data*0.1875;else if(PGA == ADS1118_PGA_6144)Tempture_data=ADC_Data*0.1875;else if(PGA == ADS1118_PGA_4096)Tempture_data=ADC_Data*0.125;else if(PGA == ADS1118_PGA_2048)Tempture_data=ADC_Data*0.0625;else if(PGA == ADS1118_PGA_1024)Tempture_data=ADC_Data*0.03125;else if(PGA == ADS1118_PGA_0512)Tempture_data=ADC_Data*0.015625;else Tempture_data=ADC_Data*0.0078125;return Tempture_data;
} 

ADS1118.h

#ifndef __ADS1118_H
#define __ADS1118_H
#include "SPI.h"
#include "systick.h"#define ADS1118_ENABLE           MySPI_Start()  //PULL DOWM CS START ADC
#define ADS1118_DISABLE          MySPI_STOP()  //PULL UP CS STOP ADC#define ADS1118_SS_START        0X8000    //0--》NO effect,1-->start ADC#define ADS1118_MUX_AIN0_AIN1   0X0000    //000 = AINP is AIN0 and AINN is AIN1 (default)
#define ADS1118_MUX_AIN0_AIN3   0x1000    //001 = AINP is AIN0 and AINN is AIN3
#define ADS1118_MUX_AIN1_AIN3   0X2000    //010 = AINP is AIN1 and AINN is AIN3
#define ADS1118_MUX_AIN2_AIN3   0X3000    //011 = AINP is AIN2 and AINN is AIN3
#define ADS1118_MUX_AIN0        0X4000    //100 = AINP is AIN0 and AINN is GND
#define ADS1118_MUX_AIN1        0X5000    //101 = AINP is AIN1 and AINN is GND
#define ADS1118_MUX_AIN2        0X6000    //110 = AINP is AIN2 and AINN is GND
#define ADS1118_MUX_AIN3        0X7000    //111 = AINP is AIN3 and AINN is GND#define ADS1118_PGA_6144        0X0000    //000 = FSR is ±6.144 V
#define ADS1118_PGA_4096        0X0200    //001 = FSR is ±4.096 V
#define ADS1118_PGA_2048        0X0400    //010 = FSR is ±2.048 V (default)
#define ADS1118_PGA_1024        0X0600    //011 = FSR is ±1.024 V
#define ADS1118_PGA_0512        0X0800    //100 = FSR is ±0.512 V
#define ADS1118_PGA_0256        0X0A00    //101 = FSR is ±0.256 V#define ADS1118_Continuous_MODE 0X0000    //0->Continuous
#define ADS1118_Sigle_SHOT_MODE 0X0100    //1->SIGNEL ADC#define ADS1118_DR_8SPS         0X0000    //000 = 8 SPS
#define ADS1118_DR_16SPS        0X0020    //001 = 16 SPS
#define ADS1118_DR_32SPS        0X0040    //010 = 32 SPS
#define ADS1118_DR_64SPS        0X0060    //011 = 64 SPS
#define ADS1118_DR_128SPS       0X0080    //100 = 128 SPS (default)
#define ADS1118_DR_250SPS       0X00A0    //101 = 250 SPS
#define ADS1118_DR_470SPS       0X00C0    //110 = 475 SPS
#define ADS1118_DR_860SPS       0X00E0    //111 = 860 SPS#define ADS1118_ADC_MODE        0x0000    //ADC MODE
#define ADS1118_Temp_MODE       0X0010    //Temperature sensor mode#define ADS1118_PUUP_DIS        0X0000    //inside pullup disabled
#define ADS1118_PUUP_EN         0x0008    //inside pullup enabled#define ADS1118_NOP_UPDATA      0X0002    //update the Config register
void ADS1118_ADC_Continuous_Init(uint16_t channel,uint16_t PGA,uint16_t SPS);
void ADS1118_Temp_Init();
float ADS1118_Get_Tempture_Data();
float ADS1118_Get_ADC_SIGLE_SHOT_Data(uint16_t channel,uint16_t PGA,uint16_t SPS);
float  ADS1118_Get_ADC_Continuous_Data(uint16_t channel,uint16_t PGA,uint16_t SPS);
#endif
  1. 移植验证
    编写的main主函数中,编写如下
 /********************************************************************************* 测试硬件:立创·梁山派开发板GD32F470ZGT6    使用主频200Mhz    晶振25Mhz* 版 本 号: V1.0* 修改作者: LCKFB* 修改日期: 2022年04月19日* 功能介绍:          ******************************************************************************* 梁山派软硬件资料与相关扩展板软硬件资料官网全部开源  * 开发板官网:www.lckfb   * 技术支持常驻论坛,任何技术问题欢迎随时交流学习  * 立创论坛:club.szlcsc   * 其余模块移植手册:* 关注bilibili账号:【立创开发板】,掌握我们的最新动态!* 不靠卖板赚钱,以培养中国工程师为己任*********************************************************************************/
#include "gd32f4xx.h"
#include "systick.h"
#include "stdio.h"
#include "UART.h"
#include "ADS1118.h"
#include "SPI.h"int main(void)
{float AD_value;nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);  // 优先级分组systick_config();                //滴答定时器初始化 1usMySPI_Init();                    //初始化spiADS1118_ADC_Continuous_Init(ADS1118_MUX_AIN0 ,ADS1118_PGA_4096,ADS1118_DR_8SPS);usart_gpio_config(115200);while(1){AD_value = ADS1118_Get_ADC_SIGLE_SHOT_Data(ADS1118_MUX_AIN0 ,ADS1118_PGA_4096,ADS1118_DR_8SPS);//AD_value = ADS1118_Get_Tempture_Data();printf("%f",AD_value);delay_1ms(100);}
}     

案例现象1:
烧录代码,使用debug模式,成功读取返回温度值。

案例现象2:
烧录代码,使用debug模式,成功读取返回单端电压值。


案例现象3:
烧录代码,使用debug模式,成功读取返回差分电压值。

案例现象4:
烧录代码,使用debug模式,连续模式成功读取返回单端电压值。


!](.png)

更多推荐

从零阅读数据手册

本文发布于:2024-03-07 16:27:14,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1718322.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:手册   数据

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!