STM32 ADS1263驱动源码

这篇具有很好参考价值的文章主要介绍了STM32 ADS1263驱动源码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

简介:

ADS1263.c:

ADS1263.h:

测试结果:


简介:

        ADS1262 ADS1263 (ADS126x) 是具有集成 PGA 、 电压基准和内部故障监视器的低噪声、低漂移、 38.4kSPS、Δ - Σ ADC ADS1263 集成了一个 24 位辅助 Δ- Σ ADC 适用于后台测量。这种支持传感器的 ADC 提供了一套完备的高精度、单芯片测量解决方案, 可满足要求极为严苛的传感器应用需求 其中包括称重秤、应变计传感器、热电偶和电阻式温度器件 (RTD)。
                                                                                                ----摘自ADS1263数据手册

主控:STM32H7B0VBT6

平台:STM32CubeIDE

 ADS1263一片:

ads1263,底层驱动,stm32,嵌入式硬件,单片机

SPI配置:时钟极性和相位不要配错,时钟速率直接拉到数据手册规定的最大值8MHz:

ads1263,底层驱动,stm32,嵌入式硬件,单片机

ADS1263.c:

/********************************Copyright (c)**********************************\
**
**                   (c) Copyright 2023, Main, China, 被钢琴支配的悲惨大学生.
**                           All Rights Reserved
**
**                           By(被钢琴支配的悲惨大学生 personally owned)
**                           https://blog.csdn.net/m0_71226271?type=blog
**
**----------------------------------文件信息------------------------------------
** 文件名称: ADS1263.c
** 创建人员: 被钢琴支配的悲惨大学生
** 创建日期: 2023-09-04
** 文档描述:基于STM32H7B0VBT6的HAL库ADS1263驱动源码,使用硬件NSS
\********************************End of Head************************************/
#include "main.h"
#include "ADS1263.h"
#include "SPI.h"
/*************************************************************************************************
*	函 数 名: ADS1263_WREG
*	入口参数: Register_Address寄存器地址,Data_Byte写入的字节
*	返回值:无
*	函数功能: 对寄存器写入数据
*	说    明: 无
*************************************************************************************************/
void ADS1263_Write_Register(uint8_t Register_Address, uint8_t Data_Byte)
{
       uint8_t SPI_Transmit_Data[3];
       SPI_Transmit_Data[0]=0x40 | (Register_Address & 0x1F);//发送寄存器地址
       SPI_Transmit_Data[1]=0x00;//发送需要更改的寄存器数量
       SPI_Transmit_Data[2]=Data_Byte;//发送要写入寄存器的值
       HAL_SPI_Transmit(&hspi2,SPI_Transmit_Data,3,HAL_MAX_DELAY);
}
/*************************************************************************************************
*	函 数 名: ADS1263_RREG
*	入口参数: Register_Address寄存器地址
*	返回值:读取到的寄存器的值
*	函数功能: 对寄存器读出数据
*	说    明: 无
*************************************************************************************************/
uint8_t ADS1263_Read_Register(uint8_t Register_Address)
{
       uint8_t SPI_Transmit_Data[3];
       uint8_t SPI_Receive_Data[3];
       SPI_Transmit_Data[0]=0x20 | (Register_Address & 0x1F);
       SPI_Transmit_Data[1]=0x00;
       SPI_Transmit_Data[2]=0x00;
       HAL_SPI_TransmitReceive(&hspi2,SPI_Transmit_Data,SPI_Receive_Data,3,HAL_MAX_DELAY);
       return   SPI_Receive_Data[2];   //返回读出的数据
}
/*************************************************************************************************
*	函 数 名: ADS1263_Conveision_Start_ADC1
*	入口参数: 无
*	返回值:无
*	函数功能: 启动ADC1的转换
*	说    明: 无
*************************************************************************************************/
void ADS1263_Conveision_Start_ADC1()
{
    uint8_t SPI_Transmit_Data[1];
    SPI_Transmit_Data[0]=ADS1263_CMD_START_ADC1;//发送ADC1开始转换数据命令
    HAL_SPI_Transmit(&hspi2,SPI_Transmit_Data,1,HAL_MAX_DELAY);
}
/*************************************************************************************************
*	函 数 名: ADS1263_Conveision_Start_ADC2
*	入口参数: 无
*	返回值:无
*	函数功能: 启动ADC2的转换
*	说    明: 无
*************************************************************************************************/
void ADS1263_Conveision_Start_ADC2()
{
	  uint8_t SPI_Transmit_Data[1];
	  SPI_Transmit_Data[0]=ADS1263_CMD_START_ADC2;//发送ADC2开始转换数据命令
	  HAL_SPI_Transmit(&hspi2,SPI_Transmit_Data,1,HAL_MAX_DELAY);
}
/*************************************************************************************************
*	函 数 名: ADS1263_Config_Init
*	入口参数: 无
*	返回值:无
*	函数功能: ADS1263寄存器配置初始化
*	说    明: 请根据不同的应用场景更改函数内容
*************************************************************************************************/
void ADS1263_Config_Init()
{
    //GPIO测试
    /*ADS1263_WREG(ADS1263_GPIO_Connection,0x01);
    ADS1263_WREG(ADS1263_GPIO_Direction,0x00);
    ADS1263_WREG(ADS1263_GPIO_Data,0x01); */ //AIN3输出5V
	//电流源测试
    //ADS1263_WREG(ADS1263_IDACMUX,ADS1256_IDAC2_NO_CONNECTION|ADS1263_MUXN_AIN4);//IDAC1连接到AIN0
    //ADS1263_WREG(ADS1263_IDACMAG,ADS1256_IDAC2_CURRENT_OFF|ADS1256_IDAC1_CURRENT_3000uA);//IDAC1输出3000uA
	//TDAC测试
    //ADS1263_WREG(ADS1263_TDACP_CONTROL,ADS1263_TDACP_OUTPUT_TO_AIN6|ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_2_75);//AIN6输出2.75V
    //ADS1263_WREG(ADS1263_TDACN_CONTROL,ADS1263_TDACN_OUTPUT_TO_AIN7|ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_2_25);//AIN7输出2.25V

	//通用配置
	ADS1263_Write_Register(ADS1263_Mode_0,ADS1263_Chop_Mode_Enable);//开启输入切割模式(牺牲转换时间来增加信噪比),进入连续转换模式
	ADS1263_Write_Register(ADS1263_Mode_1,ADS1263_SINC1_MODE);//使用SINC1滤波器,不同滤波器下的采样噪声会不同(使用SINC4滤波,在2.5SPS下转换延时是1600ms(见数据手册P63))
	ADS1263_Write_Register(ADS1263_Mode_2,ADS1263_PGA_BYPASS|ADS1263_DATA_RATE_2_5_SPS);//PGA被旁路(否则转换数据值会偏小),数据速率2.5SPS
	ADS1263_Write_Register(ADS1263_INTERFACE,ADS1263_STAUS_BYTE_ENABLE|ADS1263_CHECK_SUM_BYTE_DISABLE);//打开状态字节,关闭冗余校验

    //ADC1配置
	ADS1263_Write_Register(ADS1263_REFMUX,ADS1263_INTERNAL_2_5_REF_P|ADS1263_INTERNAL_2_5_REF_N);//使用内部基准
	ADS1263_Write_Register(ADS1263_MUX_ADC1,ADS1263_MUXP_AIN1|ADS1263_MUXN_AINCOM);//AIN1正极输入,AINCOM负极输入
    //ADC2配置
	ADS1263_Write_Register(ADS1263_ADC2_CONFIGURATION,ADS1263_DATA_RATE_ADC2_10_SPS|ADS1263_INTERNAL_REF|ADS1263_PGA_GAIN_ADC2_1);//ADC2数据速率10SPS,使用内部基准,PGA=1
	ADS1263_Write_Register(ADS1263_MUX_ADC2,ADS1263_MUXP_AIN1|ADS1263_MUXN_AINCOM);//AIN1正极输入,AINCOM负极输入


    //启动转换
	ADS1263_Conveision_Start_ADC1();//启动ADC(连续转换模式下,只启动一次)
	ADS1263_Conveision_Start_ADC2();//启动ADC2转换
}
/*************************************************************************************************
*	函 数 名: ADS1263_ReadData_ADC1
*	入口参数: 无
*	返回值:无
*	函数功能: 读取ADC1的转换数据
*	说    明:以阻塞方式读取一个通道的数据,读取通道在ADS1263_Config_Init函数内部更改
*************************************************************************************************/
uint32_t ADS1263_ReadData_ADC1()
{
    while(1)//轮询
    {
    	 uint8_t SPI_Transmit_Data[2];
    	 uint8_t SPI_Receive_Data[2];
    	 SPI_Transmit_Data[0]=ADS1263_CMD_RDATA_ADC1;//发送ADC1读取转换数据命令
    	 SPI_Transmit_Data[1]=0x00;//垫零字节
    	 HAL_SPI_TransmitReceive(&hspi2,SPI_Transmit_Data,SPI_Receive_Data,2,HAL_MAX_DELAY);//读取状态字节
         if((SPI_Receive_Data[1]&0x40)>>6==1)//检查状态字节的bit6是否为1(为1代表接下来的ADC1数据是最新的,否则是旧的)
         {
   	    	 uint8_t SPI_Transmit_Data[6];
   	    	 uint8_t SPI_Receive_Data[6];
   	    	 SPI_Transmit_Data[0]=ADS1263_CMD_RDATA_ADC1;//发送ADC1读取转换数据命令
   	    	 SPI_Transmit_Data[1]=0x00;//垫零字节
   	    	 HAL_SPI_TransmitReceive(&hspi2,SPI_Transmit_Data,SPI_Receive_Data,6,HAL_MAX_DELAY);//直接读取6个字节
        	 uint32_t Conveision_Data=(SPI_Receive_Data[2]<<24)|
    		 (SPI_Receive_Data[3]<<16)|
			 (SPI_Receive_Data[4]<<8)|
			 (SPI_Receive_Data[5]<<0);//读取到的6字节数据的低4位拼凑成转换数据
        	 return Conveision_Data;
       }

      }


}
/*************************************************************************************************
*	函 数 名: ADS1263_ReadData_ADC2
*	入口参数: 无
*	返回值:无
*	函数功能: 读取ADC2的转换数据
*	说    明:以阻塞方式读取一个通道的数据,读取通道在ADS1263_Config_Init函数内部更改
*************************************************************************************************/
uint32_t ADS1263_ReadData_ADC2()
{
    while(1)//轮询
    {
    	 uint8_t SPI_Transmit_Data[2];
    	 uint8_t SPI_Receive_Data[2];
    	 SPI_Transmit_Data[0]=ADS1263_CMD_RDATA_ADC2;//发送ADC1读取转换数据命令
    	 SPI_Transmit_Data[1]=0x00;//垫零字节
    	 HAL_SPI_TransmitReceive(&hspi2,SPI_Transmit_Data,SPI_Receive_Data,2,HAL_MAX_DELAY);//读取状态字节
         if((SPI_Receive_Data[1]&0x80)>>7==1)//检查状态字节的bit6是否为1(为1代表接下来的ADC1数据是最新的,否则是旧的)
         {
   	    	 uint8_t SPI_Transmit_Data[6];
   	    	 uint8_t SPI_Receive_Data[6];
   	    	 SPI_Transmit_Data[0]=ADS1263_CMD_RDATA_ADC2;//发送ADC1读取转换数据命令
   	    	 SPI_Transmit_Data[1]=0x00;//垫零字节
   	   	     HAL_SPI_TransmitReceive(&hspi2,SPI_Transmit_Data,SPI_Receive_Data,6,HAL_MAX_DELAY);//直接读取6个字节
        	 uint32_t Conveision_Data=(SPI_Receive_Data[2]<<16)|
    		 (SPI_Receive_Data[3]<<8)|
			 (SPI_Receive_Data[4]);
        	 return Conveision_Data;
       }

      }


}

ADS1263.h:

/********************************Copyright (c)**********************************\
**
**                   (c) Copyright 2023, Main, China, 被钢琴支配的悲惨大学生.
**                           All Rights Reserved
**
**                           By(被钢琴支配的悲惨大学生 personally owned)
**                           https://blog.csdn.net/m0_71226271?type=blog
**
**----------------------------------文件信息------------------------------------
** 文件名称: ADS1263.h
** 创建人员: 被钢琴支配的悲惨大学生
** 创建日期: 2023-09-04
** 文档描述:
\********************************End of Head************************************/
#include "main.h"
extern SPI_HandleTypeDef hspi2;
/*******寄存器地址列表************/
#define ADS1263_MUX_ADC1       0x06
#define ADS1263_MUX_ADC2       0x16
#define ADS1263_INTERFACE 0x02
#define ADS1263_Mode_0     0x03
#define ADS1263_Mode_1     0x04
#define ADS1263_Mode_2  0x05
#define ADS1263_REFMUX  0x0F
#define ADS1263_GPIO_Connection 0x12
#define ADS1263_GPIO_Direction  0x13
#define ADS1263_GPIO_Data       0x14
#define ADS1263_TDACP_CONTROL 0x10
#define ADS1263_TDACN_CONTROL 0x11
#define ADS1263_ADC2_CONFIGURATION 0x15
#define ADS1263_IDACMUX    0x0D
#define ADS1263_IDACMAG    0x0E
/*******寄存器数据列表************/
#define ADS1263_PGA_ENABLE 0x00
#define ADS1263_PGA_BYPASS 0x80
#define ADS1263_PGA_GAIN_1      0x00
#define ADS1263_PGA_GAIN_2      0x10
#define ADS1263_PGA_GAIN_4      0x20
#define ADS1263_PGA_GAIN_8      0x30
#define ADS1263_PGA_GAIN_16     0x40
#define ADS1263_PGA_GAIN_32     0x50
#define ADS1263_DATA_RATE_2_5_SPS     0x00
#define ADS1263_DATA_RATE_5_SPS     0x01
#define ADS1263_DATA_RATE_10_SPS     0x02
#define ADS1263_DATA_RATE_16_6_SPS     0x03
#define ADS1263_DATA_RATE_20_SPS     0x04
#define ADS1263_DATA_RATE_50_SPS     0x05
#define ADS1263_DATA_RATE_60_SPS     0x06
#define ADS1263_DATA_RATE_100_SPS     0x07
#define ADS1263_DATA_RATE_400_SPS     0x08
#define ADS1263_DATA_RATE_1200_SPS     0x09
#define ADS1263_DATA_RATE_2400_SPS     0x0A
#define ADS1263_DATA_RATE_4800_SPS     0x0B
#define ADS1263_DATA_RATE_7200_SPS     0x0C
#define ADS1263_DATA_RATE_14400_SPS     0x0D
#define ADS1263_DATA_RATE_19200_SPS     0x0E
#define ADS1263_DATA_RATE_38400_SPS     0x0F

#define ADS1263_DATA_RATE_ADC2_10_SPS     0x00
#define ADS1263_DATA_RATE_ADC2_100_SPS     0x40
#define ADS1263_DATA_RATE_ADC2_400_SPS     0x80
#define ADS1263_DATA_RATE_ADC2_800_SPS     0xC0
#define ADS1263_INTERNAL_REF     0x00
#define ADS1263_INTERNAL_AIN0_1     0x08
#define ADS1263_INTERNAL_AIN2_3     0x10
#define ADS1263_INTERNAL_AIN4_5     0x18
#define ADS1263_INTERNAL_VDD_VSS    0x20
#define ADS1263_PGA_GAIN_ADC2_1    0x00
#define ADS1263_PGA_GAIN_ADC2_2    0x01
#define ADS1263_PGA_GAIN_ADC2_4    0x02
#define ADS1263_PGA_GAIN_ADC2_8    0x03
#define ADS1263_PGA_GAIN_ADC2_16    0x04
#define ADS1263_PGA_GAIN_ADC2_32    0x05
#define ADS1263_PGA_GAIN_ADC2_64    0x06
#define ADS1263_PGA_GAIN_ADC2_128    0x07

#define ADS1263_Chop_Mode_Enable 0x10
#define ADS1263_CONTINUOUS_CONVERSION 0x00
#define ADS1263_PULSE_CONVERSION 0x40

#define ADS1263_STAUS_BYTE_DISABLE 0x00
#define ADS1263_STAUS_BYTE_ENABLE 0x04
#define ADS1263_CHECK_SUM_BYTE_DISABLE 0x00

#define ADS1263_SINC1_MODE 0x00
#define ADS1263_SINC2_MODE 0x20
#define ADS1263_SINC3_MODE 0x40
#define ADS1263_SINC4_MODE 0x60
#define ADS1263_FIR_MODE   0x80

#define ADS1263_INTERNAL_2_5_REF_P 0x00
#define ADS1263_ENTERNAL_AIN0_P      0x08
#define ADS1263_ENTERNAL_AIN2_P     0x10
#define ADS1263_ENTERNAL_AIN4_P      0x18
#define ADS1263_INTERNAL_ANALOG_SUPPLY_P 0x20
#define ADS1263_INTERNAL_2_5_REF_N 0x00
#define ADS1263_ENTERNAL_AIN1_N     0x01
#define ADS1263_ENTERNAL_AIN3_N     0x02
#define ADS1263_ENTERNAL_AIN5_N      0x03
#define ADS1263_INTERNAL_ANALOG_SUPPLY_N 0x04

#define ADS1263_MUXP_AIN0   0x00
#define ADS1263_MUXP_AIN1   0x10
#define ADS1263_MUXP_AIN2   0x20
#define ADS1263_MUXP_AIN3   0x30
#define ADS1263_MUXP_AIN4   0x40
#define ADS1263_MUXP_AIN5   0x50
#define ADS1263_MUXP_AIN6   0x60
#define ADS1263_MUXP_AIN7   0x70
#define ADS1263_MUXP_AIN8   0x80
#define ADS1263_MUXP_AIN9   0x90
#define ADS1263_MUXP_AINCOM 0xA0
#define ADS1263_TEMPERATURE_SENSOR_MONITOR_P 0xB0
#define ADS1263_ANALOG_POWER_SUPPLY_MONITOR_P 0xC0
#define ADS1263_DIGITAL_POWER_SUPPLY_MONITOR_P 0xD0
#define ADS1263_TDAC_TEST_SIGNAL_P     0xE0
#define ADS1263_FLOAT_P 0xF0

#define ADS1263_MUXN_AIN0   0x00
#define ADS1263_MUXN_AIN1   0x01
#define ADS1263_MUXN_AIN2   0x02
#define ADS1263_MUXN_AIN3   0x03
#define ADS1263_MUXN_AIN4   0x04
#define ADS1263_MUXN_AIN5   0x05
#define ADS1263_MUXN_AIN6   0x06
#define ADS1263_MUXN_AIN7   0x07
#define ADS1263_MUXN_AIN8   0x08
#define ADS1263_MUXN_AIN9   0x09
#define ADS1263_MUXN_AINCOM 0x0A
#define ADS1263_TEMPERATURE_SENSOR_MONITOR_N 0x0B
#define ADS1263_ANALOG_POWER_SUPPLY_MONITOR_N 0x0C
#define ADS1263_DIGITAL_POWER_SUPPLY_MONITOR_N 0x0D
#define ADS1263_TDAC_TEST_SIGNAL_N     0x0E
#define ADS1263_FLOAT_N 0x0F

#define ADS1263_TDACP_OUTPUT_NO_CONNECTION 0x00
#define ADS1263_TDACP_OUTPUT_TO_AIN6   0x80
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_4_5  0x09
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_3_5  0x08
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_3  0x07
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_2_75  0x06
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_2_625  0x05
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_2_5625  0x04
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_2_53125  0x03
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_2_515625  0x02
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_2_5078125  0x01
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_2_5         0x00
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_2_4921875  0x11
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_2_484375 0x12
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_2_46875  0x13
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_2_4375  0x14
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_2_375  0x15
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_2_25  0x16
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_2  0x17
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_1_5  0x18
#define ADS1263_TDACP_MAGP_OUTPUT_MAGNITUDE_0_5  0x19

#define ADS1263_TDACN_OUTPUT_NO_CONNECTION 0x00
#define ADS1263_TDACN_OUTPUT_TO_AIN7   0x80
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_4_5  0x09
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_3_5  0x08
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_3  0x07
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_2_75  0x06
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_2_625  0x05
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_2_5625  0x04
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_2_53125  0x03
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_2_515625  0x02
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_2_5078125  0x01
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_2_5         0x00
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_2_4921875  0x11
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_2_484375 0x12
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_2_46875  0x13
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_2_4375  0x14
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_2_375  0x15
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_2_25  0x16
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_2  0x17
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_1_5  0x18
#define ADS1263_TDACN_MAGN_OUTPUT_MAGNITUDE_0_5  0x19

#define ADS1263_IDAC2_NO_CONNECTION  0xB0
#define ADS1263_IDAC1_NO_CONNECTION  0x0B
#define ADS1263_IDAC2_CURRENT_OFF  0x00
#define ADS1263_IDAC2_CURRENT_50uA 0x10
#define ADS1263_IDAC2_CURRENT_100uA 0x20
#define ADS1263_IDAC2_CURRENT_250uA 0x30
#define ADS1263_IDAC2_CURRENT_500uA 0x40
#define ADS1263_IDAC2_CURRENT_750uA 0x50
#define ADS1263_IDAC2_CURRENT_1000uA 0x60
#define ADS1263_IDAC2_CURRENT_1500uA 0x70
#define ADS1263_IDAC2_CURRENT_2000uA 0x80
#define ADS1263_IDAC2_CURRENT_2500uA 0x90
#define ADS1263_IDAC2_CURRENT_3000uA 0xA0
#define ADS1263_IDAC1_CURRENT_OFF  0x00
#define ADS1263_IDAC1_CURRENT_50uA 0x01
#define ADS1263_IDAC1_CURRENT_100uA 0x02
#define ADS1263_IDAC1_CURRENT_250uA 0x03
#define ADS1263_IDAC1_CURRENT_500uA 0x04
#define ADS1263_IDAC1_CURRENT_750uA 0x05
#define ADS1263_IDAC1_CURRENT_1000uA 0x06
#define ADS1263_IDAC1_CURRENT_1500uA 0x07
#define ADS1263_IDAC1_CURRENT_2000uA 0x08
#define ADS1263_IDAC1_CURRENT_2500uA 0x09
#define ADS1263_IDAC1_CURRENT_3000uA 0x0A
/************************指令************************/
#define ADS1263_CMD_NOP         0x00
#define ADS1263_CMD_RESET       0x06
#define ADS1263_CMD_RDATA_ADC1  0x12
#define ADS1263_CMD_RDATA_ADC2  0x14
#define ADS1263_CMD_START_ADC1  0x08
#define ADS1263_CMD_START_ADC2  0x0C
#define ADS1263_CMD_STOP_ADC1   0x0A
#define ADS1263_CMD_STOP_ADC2   0x0E
#define ADS1263_CMD_SYOCAL_ADC1 0x16
#define ADS1263_CMD_SYGCAL_ADC1 0x17
#define ADS1263_CMD_SFOCAL_ADC1 0x19
#define ADS1263_CMD_SYOCAL_ADC2 0x1B
#define ADS1263_CMD_SYGCAL_ADC2 0x1C
#define ADS1263_CMD_SFOCAL_ADC2 0x1E

//量化单位//(请校准自己的电压基准)
#define MIN_Unit_ADC1     2.4985/2147483648//先使用别的校准好的高精度万用表测量ADS1263的基准,再把值填入这里
#define MIN_Unit_ADC2     2.4985/8388608



/*************************API***********************/
void ADS1263_Write_Register(uint8_t Register_Address, uint8_t Data_Byte);
uint8_t ADS1263_RREG(uint8_t regaddr);
void ADS1263_Conveision_Start_ADC1(void);
void ADS1263_Conveision_Start_ADC2(void);
void ADS1263_Config_Init(void);

uint32_t ADS1263_ReadData_ADC1(void);
uint32_t ADS1263_ReadData_ADC2(void);




测试结果:

使用校准器校准后(代码还没来得及更新校准功能),输出2.048V直流电压,采样速度2.5SPS,滤波器SINC4,测得的数据还是很稳定的ads1263,底层驱动,stm32,嵌入式硬件,单片机ads1263,底层驱动,stm32,嵌入式硬件,单片机文章来源地址https://www.toymoban.com/news/detail-850213.html

到了这里,关于STM32 ADS1263驱动源码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32+ADS1115使用说明文档

    目录 1.ADS1115简介  2.引脚功能 3.功能介绍 3.1 噪声表现 3.2 Multiplexer 复用器  3.3量程与分辨率  3.4 采样速率与转换时间 3.5数字比较器(在本次实验不使用) 3.6 操作模式 3.6.1 单次转换 3.6.2 连续转换 4. ADS1115 的IIC 4.1 IIC地址的选择  4.2 接收模式 4.3 发送模式 4.4 写入和读取寄存

    2024年02月09日
    浏览(43)
  • STM32读取24位模数转换(24bit ADC)芯片ADS1231数据

    ADS1231是一款TI公司出品的24位ADC芯片,常用于与称重传感器配合实现体重计的应用。这里介绍STM32读取ADS1231的电路和代码实现。ADS1231的特点为通过硬件管脚可控制两种采样速率(10SPS和80SPS),及可以控制芯片上下电以实现低功耗过程控制。 ADS1231的内部原理如下图所示(固定

    2024年02月09日
    浏览(62)
  • STM32 MCO+SPI获取24位模数转换(24bit ADC)高速芯片ADS1271采样数据

    STM32大部分芯片只有12位的ADC采样性能,如果要实现更高精度的模数转换如24位ADC采样,则需要连接外部ADC实现。ADS1271是 TI公司一款高速24位Σ-Δ型模数转换器(ADC) ,数据率达到105K SPS, 即一秒可以采样105000次。 这里介绍基于ADS1271的24位ADC采样实现。采用STM32CUBEIDE开发工具,以S

    2024年02月16日
    浏览(39)
  • STM32模拟SPI时序配置读取双路24位模数转换(24bit ADC)芯片ADS1220采样数据

    TI公司的双路24位模数转换芯片ADS1220具有比较丰富的模式配置,双路差分输入采样也可以配置为4路单端输入信号采样。有多种参考电压源可选,内部增益(从1倍到128倍)和输出率(可达到2K/s)可配置,模拟电压和数字电路电压可单独设置等等。这里介绍STM32访问和读取ADS12

    2023年04月09日
    浏览(81)
  • STM32驱动AD9833模块

    淘宝上买了个AD9833模块,stm32用商家的例程代码可以调频,可以调相,就是调不了幅度。换了几块不同32开发板都不行,重新以正点原子F103的工程为基础把驱动移植进去,最后实现了调幅的功能。这里把代码放上来,希望能帮助遇到相同问题的同学。 开发板: stm32f103c8t6核心

    2024年02月12日
    浏览(50)
  • stm32+AD9910 并口驱动

    搞了好几天DAC芯片AD9910 ,找到多数资料时SPI控制内部RAM或者DDS输出波形,这里总结一下STM32 FMSC 总线输出到AD9910 ,由于AD9910 的PDCLK 为输出,这里采用PWM输入捕获模式获取 AD9910 PDCLK 的下降沿,采用捕获信号触发DMA2  ,DMA 在将数据搬移到总线上,具体代码如下: 使用方法:

    2024年02月13日
    浏览(37)
  • STM32的硬件SPI驱动AD7124的方法

    AD7124是一款适合高精度测量应用的低功耗、低噪声、完整模拟前端。该器件内置一个低噪声24位Σ-Δ型模数转换器(ADC),可配置来提供8个差分输入或15个单端或伪差分输入。片内低噪声级确保ADC中可直接输入小信号。可用于温度测量、压力测量、工业过程控制、仪器仪表和只能

    2024年02月07日
    浏览(78)
  • STM32(HAL库)驱动AD8232心率传感器

    目录 1、简介 2、CubeMX初始化配置 2.1 基础配置 2.1.1 SYS配置  2.1.2 RCC配置 2.2 ADC外设配置 2.3 串口外设配置  2.4 GPIO配置  2.5 项目生成  3、KEIL端程序整合 3.1 串口重映射 3.2 ADC数据采集 3.3 主函数代码整合 4 硬件连接 5 效果展示 本文通过STM32F103C8T6单片机通过HAL库方式对AD8232心率

    2024年02月16日
    浏览(42)
  • stm32 AD7606 芯片驱动 hal库 spi通讯

             这两天用来个ad7606 的芯片,结果硬件出来个问题,花了不少时间看这个芯片手册,干脆分享一下。         OS0 OS1 OS2         这个三个引脚用于配置芯片的采样频率,只要不设置为111即可正常采样; CONVSTA CONVSTB 这两个引脚用于启动芯片采集转换,默认高电平,

    2024年04月26日
    浏览(40)
  • STM32的HAL库SPI驱动AD7788/7789连续转换

    在项目中需要使用高精度的ADC采集电压信号且没有高速需求,而STM32F103RCT6自带的ADC位数较低,故选择了一款24bit的低速ADC芯片AD7789,根据它的引脚与时序特性,复用了STM32的SPI模块来驱动。整个过程踩了一些坑,在此记录分享一下,表述适合初学者食用。 stm32cubemx的使用不做

    2024年02月19日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包