This repository has been archived on 2024-12-31. You can view files and clone it, but cannot push or open issues or pull requests.
mfps/App/Inc/ads1220.h

200 lines
8.1 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _ADS1220_H_
#define _ADS1220_H_
#include "stm32f1xx_hal.h"
extern unsigned char PolarFlag;
void Swap(float* pa, float* pb);
int PartSort(float* a, int left, int right);
void QuickSort(float* a, int begin, int end);
#define RESET 0X03
#define START 0X08
#define POWERDOWN 0X02
#define RDATA 0X10
#define RREG 0X20
#define WREG 0X40
/*-----------输入多路复用器配置 -------------------------
**这些位配置输入多路复用器。
**对于 AINN = AVSS 的设置PGA 必须禁用 (PGA_BYPASS = 1)
**并且仅可使用 增益 1、2 和 4。
-------------------------------------------------------*/
#define MUX_0 0X00//0000AINP = AIN0AINN = AIN1默认设置
#define MUX_1 0X10//0001AINP = AIN0AINN = AIN2
#define MUX_2 0X20//0010AINP = AIN0AINN = AIN3
#define MUX_3 0X30//0011AINP = AIN1AINN = AIN2
#define MUX_4 0X40//0100AINP = AIN1AINN = AIN3
#define MUX_5 0X50//0101AINP = AIN2AINN = AIN3
#define MUX_6 0X60//0110AINP = AIN1AINN = AIN0
#define MUX_7 0X70//0111AINP = AIN3AINN = AIN2
#define MUX_8 0X80//1000AINP = AIN0AINN = AVSS
#define MUX_9 0X90//1001AINP = AIN1AINN = AVSS
#define MUX_10 0XA0//1010AINP = AIN2AINN = AVSS
#define MUX_11 0XB0//1011AINP = AIN3AINN = AVSS
#define MUX_12 0XC0//1100(V(REFPx) V(REFNx)) / 4 监视(旁路 PGA
#define MUX_13 0XD0//1101(AVDD AVSS) / 4 监视(旁路 PGA
#define MUX_14 0XE0//1110AINP 和 AINN 短接至 (AVDD + AVSS) / 2
//1111保留
/*------------增益配置----------------------------------
**这些位用于配置器件增益。 在不使用 PGA 的情况下,
**可使用增益 1、2 和 4。在这种情况下通过开关电容结 构获得增益。
------------------------------------------------------*/
#define PGA_0 0X00//000增益 = 1默认设置//FS=6.144V
#define PGA_1 0X02//001增益 = 2//FS=4.096V
#define PGA_4 0X04//010增益 = 4//FS=2.048V
#define PGA_8 0X06//011增益 = 8//FS=1.024V
#define PGA_16 0X08//100增益 = 16//FS=0.512V
#define PGA_32 0X0A//101增益 = 32//FS=0.256V
#define PGA_64 0X0C//110增益 = 64//FS=0.256V
#define PGA_12 0X0E//111增益 = 128//FS=0.256V
/*-----------------禁用和旁路内部低噪声 PGA----------------------
**禁用 PGA 会降低整体功耗,并可将共模电压范围 (VCM) 扩展为 AVSS 0.1V 至AVDD + 0.1V。
**只能针对增益 1、2 和 4 禁用 PGA。
无论 PGA_BYPASS 设置如何,都始终针对增益设置 8 至 128 启用 PGA。
**0PGA 已启用(默认设置)
**1PGA 已禁用和旁路
---------------------------------------------------------------------*/
#define PGA_BYPASS_Enable 0x00//PGA 已启用(默认设置)
#define PGA_BYPASS_Disable 0x01//已禁用和旁路
/*----------------------数据速率----------------------------------
**这些位控制数据速率设置,取决于所选工作模式。
**表 18 列出了正常模式、占空比 模式和 Turbo 模式对应的位设置。
-----------------------------------------------------------------*/
#define DR_20SPS 0X00
#define DR_45SPS 0X20
#define DR_90SPS 0X40
#define DR_175SPS 0X60
#define DR_330SPS 0X80
#define DR_600SPS 0XA0
#define DR_1000SPS 0XC0
/*-----------------工作模式 ---------------------------------------
**这些位控制器件所处的工作模式。
00正常模式256kHz 调制器时钟,默认设置)
01占空比模式内部占空比 1:4
10Turbo 模式512kHz 调制器时钟)
11保留
------------------------------------------------------------------*/
#define MODE_0 0x00 //正常模式256kHz 调制器时钟,默认设置)
#define MODE_1 0x08 //占空比模式(内部占空比 1:4
#define MODE_2 0x10 //Turbo 模式512kHz 调制器时钟)
/*------------------转换模式----------------------------------------
此位用于为器件设置转换模式。
0单次模式默认设置
1连续转换模式
-------------------------------------------------------------------*/
#define ConverMode_0 0x00//单次模式(默认设置)
#define ConverMode_1 0x04//连续转换模式
/*--------------------温度传感器模式------------------------------
此位用于启用内部温度传感器以及将器件置于温度传感器模式下。
启用温度传感器模式后,配置寄存器 0 的设置不会产生任何影响,
器件会使用内部 基准进行测量。
0禁用温度传感器默认设置
1启用温度传感器
--------------------------------------------------------------------*/
#define TS_Disable 0x00//禁用温度传感器(默认设置)
#define TS_Enable 0x02//启用温度传感器
/*---------------------烧毁电流源-----------------------------------
此位用于控制 10μA 烧毁电流源。
烧毁电流源可用于检测传感器故障(例如,传感器断路和短路)。
0电流源关断默认设置
1电流源接通
-------------------------------------------------------------------*/
#define BCS_Disable 0x00//电流源关断(默认设置)
#define BCS_Enable 0x01//电流源接通
/*--------------------基准电压选择---------------------------------
这些位用于选择转换所使用的基准电压源。
00选择 2.048V 内部基准电压(默认设置)
01使用专用 REFP0 和 REFN0 输入选择的外部基准电压
10使用 AIN0/REFP1 和 AIN3/REFN1 输入选择的外部基准电压
11用作基准的模拟电源 (AVDD AVSS)
--------------------------------------------------------------------*/
#define VREF_0 0X00//选择 2.048V 内部基准电压(默认设置)
#define VREF_1 0X40//使用专用 REFP0 和 REFN0 输入选择的外部基准电压
#define VREF_2 0X80//使用 AIN0/REFP1 和 AIN3/REFN1 输入选择的外部基准电压
#define VREF_3 0XC0//用作基准的模拟电源 (AVDD AVSS)
/*----------------------FIR 滤波器配置------------------------------
这些位用于为内部 FIR 滤波器配置滤波器系数。
在正常模式下,这些位仅与 20SPS 设置结合使用;
在占空比模式下,这些位仅与
5SPS 设置结合使用。对于所有其他数据速率,这些位均设置为 00。
00无 50Hz 或 60Hz 抑制(默认设置)
01同时抑制 50Hz 和 60Hz
10只抑制 50Hz
11只抑制 60Hz
------------------------------------------------------------------*/
#define FIR_Mode0 0x00//无 50Hz 或 60Hz 抑制(默认设置)
#define FIR_Mode1 0x10//同时抑制 50Hz 和 60Hz
#define FIR_Mode2 0x20//只抑制 50Hz
#define FIR_Mode3 0x30//只抑制 60Hz
/*----------------------低侧电源开关配置 --------------------------
此位用于配置 AIN3/REFN1 和 AVSS 之间连接的低侧开关的行为。
0开关始终处于断开状态默认设置
1开关会在发送 START/SYNC 命令时自动闭合,并在发出 POWERDOWN 命令 时自动断开。
------------------------------------------------------------------*/
#define PSW_ON 0X00//开关始终处于断开状态(默认设置)
#define PSW_OFF 0X08//开关会在发送 START/SYNC 命令时自动闭合,并在发出 POWERDOWN 命令 时自动断开。
/*---------------------IDAC 电流设置-----------------------------
这些位用于为 IDAC1 和 IDAC2 激励电流源设置电流。
----------------------------------------------------------------*/
#define IDAC_0 0X00 //000关断默认设置
#define IDAC_1 0X00 //00110μA
#define IDAC_2 0X02 //01050μA
#define IDAC_3 0X03 //011100μA
#define IDAC_4 0X04 //100250μA
#define IDAC_5 0X05 //101500μA
#define IDAC_6 0X06 //1101000μA
#define IDAC_7 0X07 //1111500μA
/*------------------------IDAC1 路由配置-------------------------
这些位用于选择 IDAC1 将路由到的通道。
111保留
----------------------------------------------------------------*/
#define IDAC1_0 0X00 //000IDAC1 已禁用(默认设置)
#define IDAC1_1 0X20 //001IDAC1 已连接至 AIN0/REFP1
#define IDAC1_2 0X40 //010IDAC1 已连接至 AIN1
#define IDAC1_3 0X60 //011IDAC1 已连接至 AIN2
#define IDAC1_4 0X80 //100IDAC1 已连接至 AIN3/REFN1
#define IDAC1_5 0XA0 //101IDAC1 已连接至 REFP0
#define IDAC1_6 0XC0 //110IDAC1 已连接至 REFN0
/*------------------------IDAC2 路由配置-------------------------
这些位用于选择 IDAC2 将路由到的通道。
111保留
----------------------------------------------------------------*/
#define IDAC2_0 0X00 //000IDAC2 已禁用(默认设置)
#define IDAC2_1 0X04 //001IDAC2 已连接至 AIN0/REFP1
#define IDAC2_2 0X08 //010IDAC2 已连接至 AIN1
#define IDAC2_3 0X0c //011IDAC2 已连接至 AIN2
#define IDAC2_4 0X10 //100IDAC2 已连接至 AIN3/REFN1
#define IDAC2_5 0X14 //101IDAC2 已连接至 REFP0
#define IDAC2_6 0X18 //110IDAC2 已连接至 REFN0
/*-----------------------DRDY 模式 -----------------------------
该位用于控制新数据就绪时 DOUT/DRDY 引脚的行为。
---------------------------------------------------------------*/
#define DRDY_Mode0 0x00 //0仅专用 DRDY 引脚用于指示数据何时就绪(默认设置)
#define DRDY_Mode1 0x02 //1同时通过 DOUT/DRDY 和 DRDY 指示数据就绪。
void ADS1220_Init(void);
float GetAD(unsigned char channel);
void ADS1220_GPIOInit(void);
float Xads1220_filter(char head, char tail);
void Xads1220_record(void);
#endif