Files
CHJ/user/Protocol/SampProcess.h
2026-03-20 21:19:53 +08:00

126 lines
3.0 KiB
C

#ifndef __SAMPPROCESS_H__
#define __SAMPPROCESS_H__
#if 0
typedef struct {
u8 Gain; //ADC采样放大系数
u8 PChan; //ADC正输入通道
u8 NChan; //ADC负输入通道
u8 SPS; //ADC采样速率
} ADC_BaseConfig_TypeDef;
typedef struct {
u8 Gain0; //ADC_0采样放大系数
u8 PChan0; //ADC_0正输入通道
u8 NChan0; //ADC_0负输入通道
u8 Gain1; //ADC_1采样放大系数
u8 PChan1; //ADC_1正输入通道
u8 NChan1; //ADC_1负输入通道
u8 SPS; //采样速率
} ADC_SyncConfig_TypeDef;
enum
{
C = 0 ,
R,
H,
A,
B,
D,
E,
F,
TCode_Count
};
typedef struct
{
ADC_BaseConfig_TypeDef adcBaseCfg;
ADC_SyncConfig_TypeDef adcSyncCfg; //ADC具体配置
u32 TempCode[TCode_Count]; //内码临时存储区
u8 SkipSampNum ; //跳过前采样个数
/*中断方式数据定义*/
u8 CounterMax; //采样最大个数
u8 Counter; //采样个数
u32 ADCBuffer[2]; //采样值
/*DMA方式数据定义*/
u32 DMA_ADC_Buffer[2][70];
u8 DMA_ADC_adcflag[2];
u8 DMA_ADC_SampLen;
u8 DMA_ADC_Exponent;
}__Samp_Buf_TypeDef;//样本
//// 中断模式(单通道)
//typedef struct {
// ADC_BaseConfig_TypeDef adc_cfg;
// u8 skip_num ;
// u8 counter; //采样个数
// u32 adc_buffer; //采样值
//}__IntSingleSampleData_t;
//// 中断模式(双 ADC 同步)
//typedef struct {
// ADC_SyncConfig_TypeDef adc_cfg;
// u8 skip_num ;
// u8 counter; //采样个数
// u32 adc_buffer[2]; //采样值
//}__IntSyncSampleData_t;
//// 单 ADC + DMA 模式专用数据
//typedef struct {
// ADC_BaseConfig_TypeDef adc_cfg;
// u32 dma_buffer[128];
// u8 adcflag ;
// u8 samp_len;
// u8 exponent;
// u8 skip_num;
//}__SingleDmaSampleData_t;
//// 双 ADC 同步 + DMA 模式专用数据
//typedef struct {
// ADC_SyncConfig_TypeDef adc_cfg;
// u32 dma_buffer[2][128]; // [0]=ADC0, [1]=ADC1
// u8 adcflag[2] ;
// u8 samp_len;
// u8 exponent;
// u8 skip_num;
//}__DualSyncDmaSampleData_t;
//extern __IntSingleSampleData_t sampleData1;
//extern __IntSyncSampleData_t sampleData2;
//extern __SingleDmaSampleData_t sampleData3;
//extern __DualSyncDmaSampleData_t sampleData4;
extern __Samp_Buf_TypeDef sampleData;
u16 GetAdcGain(u16 gianX);
/*ADC配置初始化*/
void SetSampleSiagnlForSingleADC( ADC_BaseConfig_TypeDef* adc_cfg);
void SetSampleSiagnlForSyncADC( ADC_SyncConfig_TypeDef* adc_cfg);
/*中断方式*/
void StartADC0SampingData(void);
void StartADC1SampingData(void);
void StartADCSyncSampingData(void);
void ReadSamplingData(void);//读取采样数据
/*DMA方式*/
void StartDMAForADC0SampingData(void);
void StartDMAForADC1SampingData(void);
void StartDMAForADCSyncSampingData(void);
u8 WaitADC0DMAComplete(void);
u8 WaitADC1DMAComplete(void);
u8 WaitSyncDMAComplete(void);
u16 DMA_ComputeSampleData_ADC0(void);
u16 DMA_ComputeSampleData_ADC1(void);
/*DMA ADC序列方式*/
void StartDMA_ForADC0_SeqSample(void);
void ADC_ReadSeqData(u16* SeqData ,u8 SeqNumCount) ;
#endif
#endif