資源簡介
ADS1263驅動程序+電路圖
代碼片段和文件信息
//?*??ADS1263?SPI接口寄存器操作邏輯:1、向ADS1263寫入操作寄存器地址
//???????????????????????????????2、寫入操作的寄存器數量(連續地址個數-1,當需要讀取5個寄存器時,應該寫入?4)
//???????????????????????????????3、連續讀取或寫入數據
//?*??ADC數據的讀取采用命令讀取方式,ADS1263內部兩個ADC的讀取流程請詳閱DATASHEET?Page121的Figure?160.兩個ADC數據的讀取順序取決于配置的轉換速度
//????首先讀取轉換速度快的ADC。
//?*??在任何情況下,AIN的輸入需要在0-5V之間。
//?*??ADS1263可通過TDACP與TDACN寄存器在AIN6于AIN7上輸出測試電壓,例如:初始化代碼的TDACP寄存器寫入0x80時,在AIN6引腳上輸出2.5V
//?*??ADS1263具有兩個可編程電流源(誤差最大值為4%),在初始化代碼中,IDACMUX寄存器寫入0xB9、IDACMAG寄存器寫入0x06時,則將內部IDAC1輸出至AIN9
//????電流為1000uA。
//?*??運行本程序?采集在AIN0?AIN1之間的電壓信號,測試懸空信號源時許將AIN0或AIN1其中一個與REFOUT?鏈接,確保提供一個穩定的共模電平
//????程序配置增益為1,測量范圍為+-2.5V,變量Voltage?為轉換結果,單位為伏特
//????程序配置為20sps更新率。
#include“stm32f10x_conf.h“
#define?ADS1263_RESET_H?GPIO_SetBits(GPIODGPIO_Pin_6)
#define?ADS1263_RESET_L?GPIO_ResetBits(GPIODGPIO_Pin_6)
#define?ADS1263_START_H?GPIO_SetBits(GPIODGPIO_Pin_5)
#define?ADS1263_START_L?GPIO_ResetBits(GPIODGPIO_Pin_5)
#define?ADS1263_CS_H?GPIO_SetBits(GPIODGPIO_Pin_4)
#define?ADS1263_CS_L?GPIO_ResetBits(GPIODGPIO_Pin_4)
#define?ADS1263_SCLK_H?GPIO_SetBits(GPIODGPIO_Pin_3)
#define?ADS1263_SCLK_L?GPIO_ResetBits(GPIODGPIO_Pin_3)
#define?ADS1263_DIN_H?GPIO_SetBits(GPIODGPIO_Pin_2)
#define?ADS1263_DIN_L?GPIO_ResetBits(GPIODGPIO_Pin_2)
#define?ADS1263_DOUT?GPIO_ReadInputDataBit(GPIODGPIO_Pin_0)
#define?ADS1263_DRDY?GPIO_ReadInputDataBit(GPIODGPIO_Pin_1)
void?RCC_Configuration(void);
void?NVIC_Configuration(void);
void?GPIO_Configuration(void);
void?Delay(uint32_t?nCount);
void?ADS1263_WRITE(uint8_t?data);
void?ADS1263_reset(void);
uint32_t?ADS1263_READ(void);//讀取數據函數,返回32Bit?整形
uint8_t?ADS1263_READ_REG(void);//讀取寄存器函數,返回1?Byte
void?ADS1263_INIT(void);
uint8_t?ADS1263_ID;
uint8_t?REG[27];
uint8_t?STATUS;
uint32_t?ADC1_DATAADC2_DATA;
int32_t?ADC1_DATA_temp;
double?VoltageVoltage_temp;
int?main(void)
{
??RCC_Configuration();
??GPIO_Configuration();
??NVIC_Configuration();
??Delay(0xffff);
??
??ADS1263_INIT();//ADS1263初始化
??
??/*
??//此處為讀取ADS1263全部寄存器,存于REG[]數組中
??ADS1263_RESET_H;
??ADS1263_CS_L;
??ADS1263_WRITE(0x20);//00100000
??ADS1263_WRITE(0x1a);
??for(uint8_t?a=0;a<27;a++)
??{
????REG[a]=ADS1263_READ_REG();
??}
??ADS1263_CS_H;
??*/
??
??
??ADS1263_CS_L;
??//ADS1263_WRITE(0x08);//START1?command,當START引腳為低電平時,可由此命令啟動ADC1的轉換。
??ADS1263_WRITE(0x0c);//START2?command
??while(1)
??{
????while(ADS1263_DRDY);
????ADS1263_WRITE(0x12);//讀取ADC1
????STATUS=ADS1263_READ_REG();
????ADC1_DATA=ADS1263_READ();
????
????/*
????ADS1263_WRITE(0x14);//讀取ADC2
????STATUS=ADS1263_READ_REG();
????ADC2_DATA=ADS1263_READ();
????*/
????ADC1_DATA=ADC1_DATA^0x80000000;
????ADC1_DATA_temp=ADC1_DATA-0x80000000;
????Voltage_temp=ADC1_DATA_temp*2.5;
????Voltage=Voltage_temp/0x80000000;//Voltage為轉換得到的電壓值
??}
}
void?Delay(uint32_t?nCount)
{
??for(;?nCount?!=?0;?nCount--);
}
void?ADS1263_INIT(void)
{
??ADS1263_RESET_H;
??Delay(0x1fffff);//等待至少65535個ADC時鐘
??ADS1263_START_L;//停止ADC轉換,避
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????2812035??2019-03-03?22:45??ADS1263資料\ads1263.pdf
?????文件???????7452??2019-07-10?22:49??ADS1263資料\ADS1263參考程序\main.c
?????文件????1646017??2019-08-23?22:16??ADS1263資料\ADS1263模塊說明書.pdf
?????目錄??????????0??2019-08-23?22:08??ADS1263資料\ADS1263參考程序
?????目錄??????????0??2019-08-23?22:16??ADS1263資料
-----------?---------??----------?-----??----
??????????????4465504????????????????????5
- 上一篇:摩托車儀表盤軟件(基于STM8)
- 下一篇:STM8S中文手冊
評論
共有 條評論