This repository has been archived on 2025-04-28. You can view files and clone it, but cannot push or open issues or pull requests.
CMS/1.Software/STM32/USB_HS _ TEST/VM_App/VM_AD7606.h

143 lines
5.2 KiB
C
Raw Permalink Normal View History

2024-11-19 09:19:21 +00:00
#include "main.h"
#include "stdio.h"
#include "string.h"
#include "sys.h"
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0\1\2 3\4\5\6 7\8\9\10 11\12\13 14\15
#define AD7606_DB0 GPIO_PIN_7 //PD7
#define AD7606_DB1 GPIO_PIN_6 //PD6
#define AD7606_DB2 GPIO_PIN_2 //PD2
#define AD7606_DB3 GPIO_PIN_15 //PA15
#define AD7606_DB4 GPIO_PIN_10 //PA10
#define AD7606_DB5 GPIO_PIN_9 //PA9
#define AD7606_DB6 GPIO_PIN_8 //PA8
#define AD7606_DB7 GPIO_PIN_9 //PC9
#define AD7606_DB8 GPIO_PIN_8 //PC8
#define AD7606_DB9 GPIO_PIN_7 //PC7
#define AD7606_DB10 GPIO_PIN_6 //PC6
#define AD7606_DB11 GPIO_PIN_8 //PG8
#define AD7606_DB12 GPIO_PIN_7 //PG7
#define AD7606_DB13 GPIO_PIN_6 //PG6
#define AD7606_DB14 GPIO_PIN_15 //PB15
#define AD7606_DB15 GPIO_PIN_14 //PB14
//GPIOB <20><><EFBFBD><EFBFBD>
#define AD7606_GPIOX_CONVST_RANGE GPIOB
//CA CB<43><42><EFBFBD>ƽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define AD7606_CONVST GPIO_PIN_8 //PB8
//RANGE ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>Χѡ<CEA7><D1A1>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ΧΪ10V,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ5V) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define AD7606_RANGE GPIO_PIN_9 //PB9
//OS0 1 2 <20><><EFBFBD><EFBFBD>Ƶ<EFBFBD>ʿ<EFBFBD><CABF>ƽ<EFBFBD> 000 <20>޹<EFBFBD><DEB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>200k <20><><EFBFBD>߹<EFBFBD><DFB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 110 64<36><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define AD7606_GPIOX_OS GPIOE
#define AD7606_OS0 GPIO_PIN_6 //PE6
#define AD7606_OS1 GPIO_PIN_5 //PE5
#define AD7606_OS2 GPIO_PIN_4 //PE4
//GPIOE <20><><EFBFBD><EFBFBD>
#define AD7606_GPIOX_BYTE_STBY GPIOE
//BYTE_SEL <20><><EFBFBD>͵<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>нӿ<D0BD>ͨ<EFBFBD><CDA8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define AD7606_BYTE_SEL GPIO_PIN_3 //PE3
//STBY <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD>ƽ<EFBFBD>(<28><><EFBFBD><EFBFBD>RANGE<47><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define AD7606_STBY GPIO_PIN_2 //PE2
//GPIOG <20><><EFBFBD><EFBFBD>
#define AD7606_GPIOX_RST_RD_CS_BUSY_FRST GPIOG
//<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define AD7606_RESET GPIO_PIN_14 //PG14
//RD\CS\BUSY <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define AD7606_RD GPIO_PIN_13 //PG13
#define AD7606_CS GPIO_PIN_12 //PG12
#define AD7606_BUSY GPIO_PIN_11 //PG11
//FRSTDATA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define AD7606_FRSTDATA GPIO_PIN_9 //PG9
//CS <09>ߵ͵<DFB5>ƽ
#define AD7606_CS_HIGH() HAL_GPIO_WritePin(AD7606_GPIOX_RST_RD_CS_BUSY_FRST, AD7606_CS,GPIO_PIN_SET)
#define AD7606_CS_LOW() HAL_GPIO_WritePin(AD7606_GPIOX_RST_RD_CS_BUSY_FRST, AD7606_CS,GPIO_PIN_RESET);
//RESET <09>ߵ͵<DFB5>ƽ
#define AD7606_RST_HIGH() HAL_GPIO_WritePin(AD7606_GPIOX_RST_RD_CS_BUSY_FRST, AD7606_RESET,GPIO_PIN_SET);
#define AD7606_RST_LOW() HAL_GPIO_WritePin(AD7606_GPIOX_RST_RD_CS_BUSY_FRST, AD7606_RESET,GPIO_PIN_RESET);
//RD <09>ߵ͵<DFB5>ƽ
#define AD7606_RD_HIGH() HAL_GPIO_WritePin(AD7606_GPIOX_RST_RD_CS_BUSY_FRST, AD7606_RD,GPIO_PIN_SET);
#define AD7606_RD_LOW() HAL_GPIO_WritePin(AD7606_GPIOX_RST_RD_CS_BUSY_FRST, AD7606_RD,GPIO_PIN_RESET);
//RANGE ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>Χ<EBB7B6><CEA7><EFBFBD><EFBFBD>
#define AD7606_RANGE_10V() HAL_GPIO_WritePin(AD7606_GPIOX_CONVST_RANGE, AD7606_RANGE,GPIO_PIN_SET);
#define AD7606_RANGE_5V() HAL_GPIO_WritePin(AD7606_GPIOX_CONVST_RANGE, AD7606_RANGE,GPIO_PIN_RESET);
//BYTE_SEL ͨ<>ŷ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
#define AD7606_SRL() HAL_GPIO_WritePin(AD7606_GPIOX_BYTE_STBY, AD7606_BYTE_SEL,GPIO_PIN_SET); //<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
#define AD7606_PRL() HAL_GPIO_WritePin(AD7606_GPIOX_BYTE_STBY, AD7606_BYTE_SEL,GPIO_PIN_RESET); //<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>
//STBY <09><><EFBFBD><EFBFBD>ģʽѡ<CABD><D1A1>
#define AD7606_STBY_NORMAL() HAL_GPIO_WritePin(AD7606_GPIOX_BYTE_STBY, AD7606_STBY,GPIO_PIN_SET);
#define AD7606_STBY_SLEEP() HAL_GPIO_WritePin(AD7606_GPIOX_BYTE_STBY, AD7606_STBY,GPIO_PIN_RESET);
//RANGE <09><><EFBFBD><EFBFBD>ģʽѡ<CABD><D1A1> <09><>STBY<42><59><EFBFBD><EFBFBD>sleepģʽʱ
#define AD7606_RANGE_SB() HAL_GPIO_WritePin(AD7606_GPIOX_CONVST_RANGE, AD7606_RANGE,GPIO_PIN_SET); //<2F><><EFBFBD><EFBFBD> <09>ϵ<EFBFBD><CFB5><EFBFBD>100us<75><73><EFBFBD><EFBFBD>
#define AD7606_RANGE_SD() HAL_GPIO_WritePin(AD7606_GPIOX_CONVST_RANGE, AD7606_RANGE,GPIO_PIN_RESET);//<2F>ض<EFBFBD> <09>ϵ<EFBFBD><CFB5><EFBFBD>13ms<6D><73><EFBFBD><EFBFBD>,<2C><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>RESET
//CONVST
#define AD7606_CONVST_HIGH() HAL_GPIO_WritePin(AD7606_GPIOX_CONVST_RANGE, AD7606_CONVST,GPIO_PIN_SET);
#define AD7606_CONVST_LOW() HAL_GPIO_WritePin(AD7606_GPIOX_CONVST_RANGE, AD7606_CONVST,GPIO_PIN_RESET);
//OS <09><><EFBFBD><EFBFBD>
#define AD7606_OS0_HIGH() HAL_GPIO_WritePin(AD7606_GPIOX_OS, AD7606_OS0,GPIO_PIN_SET);
#define AD7606_OS0_LOW() HAL_GPIO_WritePin(AD7606_GPIOX_OS, AD7606_OS0,GPIO_PIN_RESET);
#define AD7606_OS1_HIGH() HAL_GPIO_WritePin(AD7606_GPIOX_OS, AD7606_OS1,GPIO_PIN_SET);
#define AD7606_OS1_LOW() HAL_GPIO_WritePin(AD7606_GPIOX_OS, AD7606_OS1,GPIO_PIN_RESET);
#define AD7606_OS2_HIGH() HAL_GPIO_WritePin(AD7606_GPIOX_OS, AD7606_OS2,GPIO_PIN_SET);
#define AD7606_OS2_LOW() HAL_GPIO_WritePin(AD7606_GPIOX_OS, AD7606_OS2,GPIO_PIN_RESET);
//<2F><>ȡ״̬
#define AD7606_BUSY_STATE HAL_GPIO_ReadPin(AD7606_GPIOX_RST_RD_CS_BUSY_FRST,AD7606_BUSY)
#define AD7606_FRST_STATE HAL_GPIO_ReadPin(AD7606_GPIOX_RST_RD_CS_BUSY_FRST,AD7606_FRSTDATA)
//<2F><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
#define AD7606_SEMPLE_200K 0
#define AD7606_SEMPLE_100K 2
#define AD7606_SEMPLE_50K 4
#define AD7606_SEMPLE_25K 8
#define AD7606_SEMPLE_12K5 16
#define AD7606_SEMPLE_6K25 32
#define AD7606_SEMPLE_3K125 64
extern uint8_t AD_Data_Arr[18504];
extern uint8_t AD7606_Sampling_Flag;
extern uint16_t AD_Arr_Num;
extern uint16_t AD_Tim_Num;
extern uint16_t AD7606_SFC;
extern uint16_t AD7606_SONC;
void AD7606_Init(void);
void AD7606_Config(void);
void AD7606_Semples(u8 AD7606_Semp_Select);
void AD7606_Data_Pro(uint8_t *Data);
void AD7606_Reset(void);
void AD7606_Start_Convst(void);
void AD7606_End_Convst(void);
void AD7606_Read(uint8_t *Data);
void Float_to_Byte(float data, uint8_t *arr);
void Data_to_ADbuf(void);