remove OPA2 for rev 3

This commit is contained in:
2023-12-04 20:51:47 -05:00
parent 780a601af4
commit 2e4a91f061
3 changed files with 20 additions and 37 deletions

View File

@@ -85,17 +85,12 @@ void MX_ADC2_Init(void)
if (HAL_ADC_Init(&hadc2) != HAL_OK) if (HAL_ADC_Init(&hadc2) != HAL_OK)
SIMPLEFOC_DEBUG("HAL ADC2 init failed!"); SIMPLEFOC_DEBUG("HAL ADC2 init failed!");
sConfig.Channel = ADC_CHANNEL_VOPAMP2; sConfig.Channel = ADC_CHANNEL_VOPAMP3_ADC2;
sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5; sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
sConfig.SingleDiff = ADC_SINGLE_ENDED; sConfig.SingleDiff = ADC_SINGLE_ENDED;
sConfig.OffsetNumber = ADC_OFFSET_NONE; sConfig.OffsetNumber = ADC_OFFSET_NONE;
sConfig.Offset = 0; sConfig.Offset = 0;
if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
SIMPLEFOC_DEBUG("HAL ADC OPAMP2 init failed!");
sConfig.Channel = ADC_CHANNEL_VOPAMP3_ADC2;
sConfig.Rank = ADC_REGULAR_RANK_2;
if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
SIMPLEFOC_DEBUG("HAL ADC OPAMP3 init failed!"); SIMPLEFOC_DEBUG("HAL ADC OPAMP3 init failed!");
} }

View File

@@ -1,7 +1,6 @@
#include "opamp.h" #include "opamp.h"
OPAMP_HandleTypeDef hopamp1; OPAMP_HandleTypeDef hopamp1;
OPAMP_HandleTypeDef hopamp2;
OPAMP_HandleTypeDef hopamp3; OPAMP_HandleTypeDef hopamp3;
void configureOPAMPs(void) void configureOPAMPs(void)
@@ -13,19 +12,9 @@ void configureOPAMPs(void)
hopamp1.Init.InternalOutput = ENABLE; hopamp1.Init.InternalOutput = ENABLE;
hopamp1.Init.TimerControlledMuxmode = OPAMP_TIMERCONTROLLEDMUXMODE_DISABLE; hopamp1.Init.TimerControlledMuxmode = OPAMP_TIMERCONTROLLEDMUXMODE_DISABLE;
hopamp1.Init.UserTrimming = OPAMP_TRIMMING_FACTORY; hopamp1.Init.UserTrimming = OPAMP_TRIMMING_FACTORY;
if(HAL_OPAMP_Init(&hopamp1) != HAL_OK) if (HAL_OPAMP_Init(&hopamp1) != HAL_OK)
SIMPLEFOC_DEBUG("OPAMP1 init failed."); SIMPLEFOC_DEBUG("OPAMP1 init failed.");
hopamp2.Instance = OPAMP2;
hopamp2.Init.PowerMode = OPAMP_POWERMODE_NORMALSPEED;
hopamp2.Init.Mode = OPAMP_FOLLOWER_MODE;
hopamp2.Init.NonInvertingInput = OPAMP_NONINVERTINGINPUT_IO2;
hopamp2.Init.InternalOutput = ENABLE;
hopamp2.Init.TimerControlledMuxmode = OPAMP_TIMERCONTROLLEDMUXMODE_DISABLE;
hopamp2.Init.UserTrimming = OPAMP_TRIMMING_FACTORY;
if(HAL_OPAMP_Init(&hopamp2) != HAL_OK)
SIMPLEFOC_DEBUG("OPAMP2 init failed.");
hopamp3.Instance = OPAMP3; hopamp3.Instance = OPAMP3;
hopamp3.Init.PowerMode = OPAMP_POWERMODE_NORMALSPEED; hopamp3.Init.PowerMode = OPAMP_POWERMODE_NORMALSPEED;
hopamp3.Init.Mode = OPAMP_FOLLOWER_MODE; hopamp3.Init.Mode = OPAMP_FOLLOWER_MODE;
@@ -33,7 +22,7 @@ void configureOPAMPs(void)
hopamp3.Init.InternalOutput = ENABLE; hopamp3.Init.InternalOutput = ENABLE;
hopamp3.Init.TimerControlledMuxmode = OPAMP_TIMERCONTROLLEDMUXMODE_DISABLE; hopamp3.Init.TimerControlledMuxmode = OPAMP_TIMERCONTROLLEDMUXMODE_DISABLE;
hopamp3.Init.UserTrimming = OPAMP_TRIMMING_FACTORY; hopamp3.Init.UserTrimming = OPAMP_TRIMMING_FACTORY;
if(HAL_OPAMP_Init(&hopamp3) != HAL_OK) if (HAL_OPAMP_Init(&hopamp3) != HAL_OK)
SIMPLEFOC_DEBUG("OPAMP3 init failed."); SIMPLEFOC_DEBUG("OPAMP3 init failed.");
} }
@@ -42,19 +31,16 @@ void OPAMP_GPIO_Init(void)
GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_2; GPIO_InitStruct.Pin = GPIO_PIN_2; //PA2 -> ADC1_IN3
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_3; GPIO_InitStruct.Pin = GPIO_PIN_3; //PA3 -> OPAMP1_VINP1
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
__HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Pin = GPIO_PIN_13; //PB13 -> OPAMP3_VINP1
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_13;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
} }
@@ -65,10 +51,6 @@ void HAL_OPAMP_MspDeInit(OPAMP_HandleTypeDef *opampHandle)
{ {
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_3); HAL_GPIO_DeInit(GPIOA, GPIO_PIN_3);
} }
else if (opampHandle->Instance == OPAMP2)
{
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_0);
}
else if (opampHandle->Instance == OPAMP3) else if (opampHandle->Instance == OPAMP3)
{ {
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_13); HAL_GPIO_DeInit(GPIOB, GPIO_PIN_13);

View File

@@ -65,11 +65,11 @@ STM32HWEncoder enc = STM32HWEncoder(ENC_PPR, ENC_A, ENC_B, ENC_Z);
StepperDriver4PWM driver = StepperDriver4PWM(MOT_A1, MOT_A2, MOT_B1, MOT_B2); StepperDriver4PWM driver = StepperDriver4PWM(MOT_A1, MOT_A2, MOT_B1, MOT_B2);
// StepperMotor motor = StepperMotor(POLEPAIRS, RPHASE, MOTORKV, 0.0045); // StepperMotor motor = StepperMotor(POLEPAIRS, RPHASE, MOTORKV, 0.0045);
StepperMotor motor = StepperMotor(POLEPAIRS); StepperMotor motor = StepperMotor(POLEPAIRS);
StepDirListener step_dir = StepDirListener(STEP_PIN, DIR_PIN, _2PI/200.0);
Commander commander = Commander(SERIALPORT); Commander commander = Commander(SERIALPORT);
uint16_t counter = 0; uint16_t counter = 0;
extern volatile uint16_t adc1Result[3]; float stepCounter;
extern volatile uint16_t adc2Result[2];
DQCurrent_s foc_currents; DQCurrent_s foc_currents;
float electrical_angle; float electrical_angle;
@@ -81,6 +81,7 @@ uint8_t configureCAN(void);
uint8_t calibrateEncoder(void); uint8_t calibrateEncoder(void);
void userButton(void); void userButton(void);
void onStep(void) {step_dir.handle();}
void setup() void setup()
{ {
@@ -105,6 +106,7 @@ void setup()
// SIMPLEFOC_DEBUG("CAN init failed."); // SIMPLEFOC_DEBUG("CAN init failed.");
// digitalWrite(LED_FAULT, HIGH); // digitalWrite(LED_FAULT, HIGH);
// } // }
ret = configureFOC(); ret = configureFOC();
if (!ret){ if (!ret){
SIMPLEFOC_DEBUG("FOC init failed."); SIMPLEFOC_DEBUG("FOC init failed.");
@@ -160,16 +162,13 @@ void loop()
motor.move(); motor.move();
commander.run(); commander.run();
electrical_angle = motor.electricalAngle();
// phase_currents = currentsense.getPhaseCurrents();
// foc_currents = currentsense.getFOCCurrents(electrical_angle);
if(counter == 0xFFF){ if(counter == 0xFFF){
digitalToggle(LED_GOOD); digitalToggle(LED_GOOD);
// Serial.println(adc1Result[0]);
counter = 0; counter = 0;
} }
counter++;
counter++;
#ifdef HAS_MONITOR #ifdef HAS_MONITOR
motor.monitor(); motor.monitor();
#endif #endif
@@ -191,6 +190,11 @@ uint8_t configureFOC(void)
// Encoder initialization. // Encoder initialization.
// Ideally configuring the sensor over SPI then use STM32HWEncoder // Ideally configuring the sensor over SPI then use STM32HWEncoder
step_dir.init();
step_dir.enableInterrupt(onStep);
step_dir.attach(&stepCounter);
enc.init(); enc.init();
if (!enc.initialized) if (!enc.initialized)
digitalWrite(LED_FAULT, HIGH); digitalWrite(LED_FAULT, HIGH);
@@ -327,4 +331,6 @@ void userButton(void)
{ {
if(USB->DADDR != 0) if(USB->DADDR != 0)
jump_to_bootloader(); jump_to_bootloader();
else
digitalToggle(LED_FAULT);
} }