mirror of
https://github.com/No-Chicken/Power-Pico.git
synced 2026-04-03 13:02:36 +08:00
update valtage and current get
This commit is contained in:
@@ -30,19 +30,34 @@ extern "C" {
|
||||
|
||||
/* USER CODE BEGIN Includes */
|
||||
|
||||
#define ADC_TIMES 10
|
||||
#define ADC_TIMES 1
|
||||
#define ADC_CHANELS 4
|
||||
|
||||
typedef struct {
|
||||
uint8_t header[6]; //2的倍数
|
||||
uint8_t header[4]; //2的倍数
|
||||
// 0x55, 0xAA header
|
||||
// 0x0A adc times, 0x05 adc channels (so data lenth is times * channels * 2 bytes)
|
||||
// and 1byte for direct & unit, 0x0? for positive, 0x1? for negative, 0x?0 for LOW, 0x?1 for MID, 0x?2 for HIGH.
|
||||
// 0x?0 for LOW, 0x?1 for MID, 0x?2 for HIGH.
|
||||
uint16_t data[ADC_TIMES][ADC_CHANELS];
|
||||
} __attribute__((packed)) ADC_Packet;
|
||||
|
||||
extern ADC_Packet adc_packet;
|
||||
|
||||
#define UNIT_UA 0
|
||||
#define UNIT_MA 1
|
||||
|
||||
// 量程阈值
|
||||
#define ADC_TRUST_MAX 4000
|
||||
#define THRESH_HIGH 1900
|
||||
#define THRESH_LOW 18
|
||||
|
||||
// 次数
|
||||
#define THRESH_TIMES 10
|
||||
|
||||
extern uint8_t global_cur_unit;
|
||||
extern float global_valtage;
|
||||
extern float global_current;
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
extern ADC_HandleTypeDef hadc1;
|
||||
|
||||
@@ -24,6 +24,10 @@
|
||||
|
||||
ADC_Packet adc_packet;
|
||||
|
||||
uint8_t global_cur_unit = UNIT_MA; // default mA
|
||||
float global_valtage = 0.0;
|
||||
float global_current = 0.0;
|
||||
|
||||
/* USER CODE END 0 */
|
||||
|
||||
ADC_HandleTypeDef hadc1;
|
||||
@@ -66,7 +70,7 @@ void MX_ADC1_Init(void)
|
||||
*/
|
||||
sConfig.Channel = ADC_CHANNEL_5;
|
||||
sConfig.Rank = 1;
|
||||
sConfig.SamplingTime = ADC_SAMPLETIME_15CYCLES;
|
||||
sConfig.SamplingTime = ADC_SAMPLETIME_28CYCLES;
|
||||
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
@@ -143,7 +147,7 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
|
||||
hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;
|
||||
hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
|
||||
hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
|
||||
hdma_adc1.Init.Mode = DMA_NORMAL;
|
||||
hdma_adc1.Init.Mode = DMA_CIRCULAR;
|
||||
hdma_adc1.Init.Priority = DMA_PRIORITY_LOW;
|
||||
hdma_adc1.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
|
||||
if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
/* USER CODE BEGIN Includes */
|
||||
#include "usart.h"
|
||||
#include "adc.h"
|
||||
#include "gate.h"
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
@@ -204,11 +205,7 @@ void DMA2_Stream0_IRQHandler(void)
|
||||
/* USER CODE BEGIN DMA2_Stream0_IRQn 0 */
|
||||
if(__HAL_DMA_GET_FLAG(&hdma_adc1, DMA_FLAG_TCIF0_4)) {
|
||||
__HAL_DMA_CLEAR_FLAG(&hdma_adc1, DMA_FLAG_TCIF0_4);
|
||||
HAL_ADC_Stop_DMA(&hadc1);
|
||||
// 填充模式位
|
||||
adc_packet.header[4] = 0x10;
|
||||
HAL_UART_Transmit_DMA(&huart6, (uint8_t *)&adc_packet, sizeof(adc_packet));
|
||||
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_packet.data, ADC_TIMES * ADC_CHANELS);
|
||||
Gate_Swich_and_UART_Send(adc_packet);
|
||||
}
|
||||
/* USER CODE END DMA2_Stream0_IRQn 0 */
|
||||
HAL_DMA_IRQHandler(&hdma_adc1);
|
||||
|
||||
Reference in New Issue
Block a user