Чуть подкоректированны и закоментированны структуры

This commit is contained in:
Razvalyaev 2024-12-18 17:00:44 +03:00
parent 8326ea8a8c
commit 7f6932631e
5 changed files with 52 additions and 46 deletions

View File

@ -41,33 +41,19 @@ typedef struct
uint16_t ADC_Max; uint16_t ADC_Max;
uint16_t ADC_Min; uint16_t ADC_Min;
unsigned pulse_peak_ind;
/* Parameter for calc voltage */ /* Parameter for calc voltage */
ADC_ParamsTypeDef s; ADC_ParamsTypeDef s;
unsigned pulse_peak_ind;
ADC_ChannelState state; ADC_ChannelState state;
ADCChannel_TrackerTypeDef adc_ch_err; ADCChannel_TrackerTypeDef adc_ch_err;
}TESTER_ADCChannelTypeDef; }TESTER_ADCChannelTypeDef;
typedef struct
{
int32_t t_current;
int32_t t_critical;
#ifdef FOSTER_STUDENT_USER_T_CRITICAL
#else
uint8_t precise_table_ind;
#endif
uint16_t array_size;
}TESTER_ADCFilterTypeDef;
typedef struct typedef struct
{ {
TESTER_ADCChannelTypeDef chAdc; TESTER_ADCChannelTypeDef chAdc;
@ -99,8 +85,9 @@ void ADC_DMA_Handler(TESTER_ADCTypeDef *adc);
void ADC_DMA_ProcessBufferForPeak(TESTER_ADCChannelTypeDef *adc_fc); void ADC_DMA_ProcessBufferForPeak(TESTER_ADCChannelTypeDef *adc_fc);
void ADC_DMA_Channels_Prepare(TESTER_ADCChannelTypeDef *adc_fuel_cells, uint8_t MaskForChannels, uint8_t state); void ADC_DMA_Channels_Prepare(TESTER_ADCChannelTypeDef *adc_fuel_cells, uint8_t MaskForChannels, uint8_t state);
HAL_StatusTypeDef ADC_DMA_StartRead(TESTER_ADCTypeDef *adc); HAL_StatusTypeDef ADC_DMA_StartRead(TESTER_ADCTypeDef *adc);
/* Считать буфер DMA и найти в нем пик (скачок напряжения) */
HAL_StatusTypeDef ADC_DMA_ReadForPeak(TESTER_ADCTypeDef *adc, uint32_t Timeout); HAL_StatusTypeDef ADC_DMA_ReadForPeak(TESTER_ADCTypeDef *adc, uint32_t Timeout);
/* Считывать АЦП, который работает в континуес режиме */
HAL_StatusTypeDef ADC_ReadContinuous(TESTER_ADCTypeDef *adc, uint32_t buff_size, uint32_t tickstart, uint32_t timeout); HAL_StatusTypeDef ADC_ReadContinuous(TESTER_ADCTypeDef *adc, uint32_t buff_size, uint32_t tickstart, uint32_t timeout);
#ifndef printf_adc_result #ifndef printf_adc_result

View File

@ -49,7 +49,7 @@
@{ @{
*/ */
#define ADC_BUFF_SIZE (1000) ///< Размер буфера АЦП #define ADC_BUFF_SIZE (200) ///< Размер буфера АЦП
#define ADC_DMA_BUFF_SIZE (ADC_BUFF_SIZE) ///< Размер буфера ДМА (1 канал) #define ADC_DMA_BUFF_SIZE (ADC_BUFF_SIZE) ///< Размер буфера ДМА (1 канал)
#define ADC_U_CALIBR ((float)3.0) ///< Калибровочное напряжение #define ADC_U_CALIBR ((float)3.0) ///< Калибровочное напряжение

View File

@ -29,12 +29,12 @@ void TESTER_HandleInit(TESTER_TestHandleTypeDef *htest)
*/ */
void TESTER_TestDiode_PositivePower(TESTER_TestHandleTypeDef *htest) void TESTER_TestDiode_PositivePower(TESTER_TestHandleTypeDef *htest)
{ {
/* Задержка, перед началом работы */
TESTER_Delay(&htest->SwTimings.ticks_before_test);
/* Включение континиус АЦП */ /* Включение континиус АЦП */
HAL_ADC_Start(htest->adc->hadc); HAL_ADC_Start(htest->adc->hadc);
/* Задержка, перед подключением питания */
TESTER_Delay(&htest->SwTimings.ticks_before_connect);
/* Подкючение питания к диоду */ /* Подкючение питания к диоду */
TESTER_Connect_Power(&htest->DCPosSw); TESTER_Connect_Power(&htest->DCPosSw);
@ -64,11 +64,14 @@ void TESTER_TestDiode_PositivePower(TESTER_TestHandleTypeDef *htest)
*/ */
void TESTER_TestDiode_NegativePower(TESTER_TestHandleTypeDef *htest) void TESTER_TestDiode_NegativePower(TESTER_TestHandleTypeDef *htest)
{ {
/* Задержка, перед началом работы */
TESTER_Delay(&htest->SwTimings.ticks_before_test);
/* Включение АЦП */ /* Включение АЦП */
ADC_DMA_StartRead(htest->adc); ADC_DMA_StartRead(htest->adc);
/* Задержка, перед подключением питания */ /* Задержка, перед предполагаемым скачком */
TESTER_Delay(&htest->SwTimings.ticks_before_connect); TESTER_Delay(&htest->SwTimings.ticks_before_go_to_peak);
/* Подкючение питания к диоду */ /* Подкючение питания к диоду */
TESTER_Connect_Power(&htest->DCNegSw); TESTER_Connect_Power(&htest->DCNegSw);
@ -90,24 +93,26 @@ void TESTER_TestDiode_NegativePower(TESTER_TestHandleTypeDef *htest)
*/ */
void TESTER_TestDiode_PosNegPower(TESTER_TestHandleTypeDef *htest) void TESTER_TestDiode_PosNegPower(TESTER_TestHandleTypeDef *htest)
{ {
/* Задержка, перед началом работы */
/* Задержка, перед подключением питания */ TESTER_Delay(&htest->SwTimings.ticks_before_test);
TESTER_Delay(&htest->SwTimings.ticks_before_connect);
/* Подкючение питания к диоду */ /* Подкючение питания к диоду */
TESTER_Connect_Power(&htest->DCPosSw); TESTER_Connect_Power(&htest->DCPosSw);
/* Подключение питания на определенное время */ /* Подкючение положительного питания к диоду */
TESTER_Delay(&htest->SwTimings.ticks_before_reconnect); msDelay(htest->SwTimings.msticks_for_positive_dc);
/* Включение АЦП */ /* Включение АЦП */
ADC_DMA_StartRead(htest->adc); ADC_DMA_StartRead(htest->adc);
/* Ожидается задержка, перед предполагаемым скачком */
TESTER_Delay(&htest->SwTimings.ticks_before_go_to_peak);
/* Отключение питания от диода */ /* Отключение питания от диода */
TESTER_Disconnect_Power(&htest->DCPosSw); TESTER_Disconnect_Power(&htest->DCPosSw);
TESTER_Connect_Power(&htest->DCNegSw); TESTER_Connect_Power(&htest->DCNegSw);
/* Подключение питания на определенное время */ /* Подключение отрицательного питания на определенное время */
TESTER_Delay(&htest->SwTimings.ticks_before_disconnect); TESTER_Delay(&htest->SwTimings.ticks_before_disconnect);
/* Отключение питания от диода */ /* Отключение питания от диода */

View File

@ -14,39 +14,50 @@
#include "tester_adc_func.h" #include "tester_adc_func.h"
/**
* @brief Структура для пинов, которые отвечают за ключи, которые подключают питание
*/
typedef struct typedef struct
{ {
GPIO_TypeDef *SW1_Port; GPIO_TypeDef *SW1_Port; ///< Порт пина первого ключа для питания
uint32_t SW1_Pin; uint32_t SW1_Pin; ///< Пин первого ключа для питания
GPIO_TypeDef *SW2_Port; GPIO_TypeDef *SW2_Port; ///< Порт пина второго ключа для питания
uint32_t SW2_Pin; uint32_t SW2_Pin; ///< Пин второго ключа для питания
}TESTER_PowerSwitchTypeDef; }TESTER_PowerSwitchTypeDef;
/**
* @brief Структура для тайминга с флагом миллисекундой или тиковой (пустой for) задержкой
*/
typedef struct typedef struct
{ {
unsigned msdelay:1; unsigned msdelay:1;
uint32_t ticks; uint32_t ticks;
}TESTER_TicksDelayTypeDef; }TESTER_TicksDelayTypeDef;
/**
* @brief Структура с таймингами для тестера
*/
typedef struct typedef struct
{ {
uint32_t msticks_for_positive_dc; uint32_t msticks_for_positive_dc; ///< миллисекундная задержка для положительного напряжения @ref TESTER_TestDiode_PositivePower
TESTER_TicksDelayTypeDef ticks_before_connect; TESTER_TicksDelayTypeDef ticks_before_test; ///< задержка перед началом тестирования (мс или тики for())
TESTER_TicksDelayTypeDef ticks_before_disconnect; TESTER_TicksDelayTypeDef ticks_before_disconnect; ///< задержка перед выключением питания (мс или тики for())
TESTER_TicksDelayTypeDef ticks_before_reconnect; TESTER_TicksDelayTypeDef ticks_before_go_to_peak; ///< задержка между включением АЦП и предполагаемым скачком напряжения, чтобы точно поймать его в буфере АЦП (мс или тики for())
}TESTER_SwitchTimingsTypeDef; }TESTER_SwitchTimingsTypeDef;
/**
* @brief Структура-дескриптор для управления тестированием диодов
*/
typedef struct typedef struct
{ {
TESTER_ADCTypeDef *adc; TESTER_ADCTypeDef *adc; ///< указатель на структуру АЦП тестера
TESTER_SwitchTimingsTypeDef SwTimings; TESTER_SwitchTimingsTypeDef SwTimings; ///< Тайминги для ключей
TESTER_PowerSwitchTypeDef DCPosSw; TESTER_PowerSwitchTypeDef DCPosSw; ///< Пины ключей для положительного источника
TESTER_PowerSwitchTypeDef DCNegSw; TESTER_PowerSwitchTypeDef DCNegSw; ///< Пины ключей для отрицательного источника
uint32_t continuous_buff_size; uint32_t continuous_buff_size;

View File

@ -26,14 +26,17 @@ typedef struct
unsigned disable_reset_call:1; unsigned disable_reset_call:1;
}function_calls; }function_calls;
/**
* @brief Структура проекта тестер
*/
typedef struct typedef struct
{ {
function_calls func; function_calls func; ///< вызов разных функций
TESTER_TestHandleTypeDef *htest; TESTER_TestHandleTypeDef *htest; ///< дескриптор тестера
uint32_t delay; uint32_t delay; ///< задержка главного цикла
uint32_t delay_en:1; uint32_t delay_en:1; ///< включить задержку в главном цикле
}TESTER_ProjectTypeDef; }TESTER_ProjectTypeDef;
extern TESTER_ProjectTypeDef TESTER; extern TESTER_ProjectTypeDef TESTER;