1
0
mirror of https://github.com/rene-dev/stmbl.git synced 2024-12-29 20:12:10 +00:00
stmbl/inc/hw/hw.h
2019-07-02 19:47:42 +02:00

375 lines
10 KiB
C

#pragma once
#ifdef V3
//sample times for F4: 3,15,28,56,84,112,144,480
#define RES_SampleTime ADC_SampleTime_3Cycles
// ADC_TIMER_FREQ / RES_TIMER_FREQ / ADC_TR_COUNT \in \N
#define ADC_TR_COUNT 6 // ADC_TR_COUNT * (ADC_OVER_FB0 + ADC_OVER_FB1) == 60
#define PID_WAVES 4
#define ADC_OVER_FB0 10
#define ADC_OVER_FB1 0
#define ADC_TIMER_FREQ 84000000
#define RES_TIMER_FREQ 20000
#define FB0_SIN_ADC ADC1
#define FB0_SIN_ADC_RCC RCC_APB2Periph_ADC1
#define FB0_SIN_ADC_CHAN ADC_Channel_14
#define FB0_SIN_PIN GPIO_Pin_4
#define FB0_SIN_PORT GPIOC
#define FB0_COS_ADC ADC2
#define FB0_COS_ADC_RCC RCC_APB2Periph_ADC2
#define FB0_COS_ADC_CHAN ADC_Channel_15
#define FB0_COS_PIN GPIO_Pin_5
#define FB0_COS_PORT GPIOC
#define ADC_REF 3.3 //analog reference voltage
#define ADC_RES 4096.0 //analog resolution, 12 bit
#define OP_R_INPUT 1000.0 //opamp input
#define OP_R_FEEDBACK 3900.0 //opamp feedback
#define OP_R_OUT_LOW 180.0 //opamp out low
#define OP_R_OUT_HIGH 470.0 //opamp out high
#define OP_REF 5.0 //opamp reference voltage
//FB UART
#define FB0_UART USART3
#define FB0_UART_RCC RCC_APB1Periph_USART3
#define FB0_UART_CLOCK_COMMAND RCC_APB1PeriphClockCmd
#define FB0_UART_RX_DMA DMA1_Stream1
#define FB0_UART_RX_DMA_CHAN DMA_Channel_4
#define FB0_UART_RX_DMA_TCIF DMA_FLAG_TCIF1
#define FB0_UART_TX_DMA DMA1_Stream3
#define FB0_UART_TX_DMA_CHAN DMA_Channel_4
#define FB0_UART_TX_DMA_TCIF DMA_FLAG_TCIF3
#define FB0_UART_RX_PIN GPIO_Pin_11
#define FB0_UART_RX_PORT GPIOB
#define FB0_UART_RX_PIN_SOURCE GPIO_PinSource11
#define FB0_UART_RX_AF_SOURCE GPIO_AF_USART3
#define FB0_UART_TX_PIN GPIO_Pin_10
#define FB0_UART_TX_PORT GPIOB
#define FB0_UART_TX_PIN_SOURCE GPIO_PinSource10
#define FB0_UART_TX_AF_SOURCE GPIO_AF_USART3
//HV UART
#define UART_DRV USART2
#define UART_DRV_RCC RCC_APB1Periph_USART2
#define UART_DRV_CLOCK_COMMAND RCC_APB1PeriphClockCmd
#define UART_DRV_RX_DMA DMA1_Stream5
#define UART_DRV_RX_DMA_CHAN DMA_Channel_4
#define UART_DRV_RX_DMA_TCIF DMA_FLAG_TCIF5
#define UART_DRV_TX_DMA DMA1_Stream6
#define UART_DRV_TX_DMA_CHAN DMA_Channel_4
#define UART_DRV_TX_DMA_TCIF DMA_FLAG_TCIF6
#define UART_DRV_RX_PIN GPIO_Pin_3
#define UART_DRV_RX_PORT GPIOA
#define UART_DRV_RX_PIN_SOURCE GPIO_PinSource3
#define UART_DRV_RX_AF_SOURCE GPIO_AF_USART2
#define UART_DRV_TX_PIN GPIO_Pin_2
#define UART_DRV_TX_PORT GPIOA
#define UART_DRV_TX_PIN_SOURCE GPIO_PinSource2
#define UART_DRV_TX_AF_SOURCE GPIO_AF_USART2
#define FB0_A_PIN GPIO_Pin_6
#define FB0_A_PIN_SOURCE GPIO_PinSource6
#define FB0_A_PORT GPIOC
#define FB0_B_PIN GPIO_Pin_7
#define FB0_B_PIN_SOURCE GPIO_PinSource7
#define FB0_B_PORT GPIOC
//TODO: PB10 Z TX, resolver out
#define FB0_Z_PIN GPIO_Pin_11
#define FB0_Z_PIN_SOURCE GPIO_PinSource11
#define FB0_Z_PORT GPIOB
#define FB0_RES_REF_PIN GPIO_Pin_10
#define FB0_RES_REF_PIN_SOURCE GPIO_PinSource10
#define FB0_RES_REF_PORT GPIOB
#define FB0_RES_REF_TIM_AF GPIO_AF_TIM2
#define FB0_RES_REF_TIM TIM2
#define FB0_Z_TXEN_PIN GPIO_Pin_12
#define FB0_Z_TXEN_PORT GPIOB
#define FB0_ENC_TIM TIM3
#define FB0_ENC_TIM_AF GPIO_AF_TIM3
#define FB0_ENC_TIM_RCC RCC_APB1Periph_TIM3
#define TIM_MASTER TIM4
#define TIM_MASTER_RCC RCC_APB1Periph_TIM4
#define TIM_MASTER_ADC_OC_INIT TIM_OC4Init
#define TIM_MASTER_ADC_OC_PRELOAD TIM_OC4PreloadConfig
#define TIM_MASTER_ADC ADC_ExternalTrigConv_T4_CC4
#define TIM_SLAVE TIM2
#define TIM_SLAVE_RCC RCC_APB1Periph_TIM2
#define TIM_SLAVE_ITR TIM_TS_ITR3
#define TIM_SLAVE_IRQ TIM2_IRQn
#define TIM_SLAVE_HANDLER TIM2_IRQHandler
#elif defined V4
//sample times for F4: 3,15,28,56,84,112,144,480
#define RES_SampleTime ADC_SampleTime_3Cycles
#define RT_FREQ 5000
#define FRT_FREQ 20000
#define ADC_SAMPLES_IN_RT 240
#define ADC_TRIGGER_FREQ (RT_FREQ * ADC_SAMPLES_IN_RT) // master freq
#define FRT_PRESCALER (ADC_TRIGGER_FREQ / FRT_FREQ)
#define ADC_OVER_FB0 9
#define ADC_OVER_FB1 1
#define ADC_GROUPS (ADC_SAMPLES_IN_RT / (ADC_OVER_FB0 + ADC_OVER_FB1))
#define ADC_TIMER_FREQ 84000000
#define RES_TIMER_FREQ 20000
#define FB1
#define FB1_SIN_ADC ADC1
#define FB1_SIN_ADC_RCC RCC_APB2Periph_ADC1
#define FB1_SIN_ADC_CHAN ADC_Channel_4
#define FB1_SIN_PIN GPIO_Pin_4
#define FB1_SIN_PORT GPIOA
#define FB1_COS_ADC ADC2
#define FB1_COS_ADC_RCC RCC_APB2Periph_ADC2
#define FB1_COS_ADC_CHAN ADC_Channel_5
#define FB1_COS_PIN GPIO_Pin_5
#define FB1_COS_PORT GPIOA
#define ADC_REF 3.3 //analog reference voltage
#define ADC_RES 4096.0 //analog resolution, 12 bit
#define OP_R_INPUT 10000.0 //opamp input
#define OP_R_FEEDBACK 15000.0 //opamp feedback
#define OP_R_OUT_LOW 470.0 //opamp out low
#define OP_R_OUT_HIGH 22.0 //opamp out high
#define OP_REF 1.83 //opamp reference voltage
// FB0 ADC
#define FB0_SIN_ADC ADC1
#define FB0_SIN_ADC_RCC RCC_APB2Periph_ADC1
#define FB0_SIN_ADC_CHAN ADC_Channel_6
#define FB0_SIN_PIN GPIO_Pin_6
#define FB0_SIN_PORT GPIOA
#define FB0_COS_ADC ADC2
#define FB0_COS_ADC_RCC RCC_APB2Periph_ADC2
#define FB0_COS_ADC_CHAN ADC_Channel_7
#define FB0_COS_PIN GPIO_Pin_7
#define FB0_COS_PORT GPIOA
// FB0 TX EN
#define FB0_A_EN_PIN GPIO_Pin_11
#define FB0_A_EN_PORT GPIOD
#define FB0_B_EN_PIN GPIO_Pin_10
#define FB0_B_EN_PORT GPIOD
#define FB0_Z_TXEN_PIN GPIO_Pin_15
#define FB0_Z_TXEN_PORT GPIOD
// FB0 TIM4
#define FB0_A_PIN GPIO_Pin_12
#define FB0_A_PIN_SOURCE GPIO_PinSource12
#define FB0_A_PORT GPIOD
#define FB0_B_PIN GPIO_Pin_13
#define FB0_B_PIN_SOURCE GPIO_PinSource13
#define FB0_B_PORT GPIOD
#define FB0_Z_PIN GPIO_Pin_14
#define FB0_Z_PIN_SOURCE GPIO_PinSource14
#define FB0_Z_PORT GPIOD
#define FB0_RES_REF_PIN GPIO_Pin_14
#define FB0_RES_REF_PIN_SOURCE GPIO_PinSource14
#define FB0_RES_REF_PORT GPIOD
#define FB0_RES_REF_TIM_AF GPIO_AF_TIM4
#define FB0_RES_REF_TIM TIM4
#define FB0_ENC_TIM TIM4
#define FB0_ENC_TIM_AF GPIO_AF_TIM4
#define FB0_ENC_TIM_RCC RCC_APB1Periph_TIM4
#define FB0_TIM_A_DMA DMA1_Stream0
#define FB0_TIM_A_DMA_CHAN DMA_Channel_2
#define FB0_TIM_A_DMA_TCIF DMA_FLAG_TCIF0
#define FB0_TIM_B_DMA DMA1_Stream3
#define FB0_TIM_B_DMA_CHAN DMA_Channel_2
#define FB0_TIM_B_DMA_TCIF DMA_FLAG_TCIF3
#define FB0_TIM_Z_DMA DMA1_Stream7
#define FB0_TIM_Z_DMA_CHAN DMA_Channel_2
#define FB0_TIM_Z_DMA_TCIF DMA_FLAG_TCIF7
// FB0 UART
#define FB0_UART USART6
#define FB0_UART_RCC RCC_APB2Periph_USART6
#define FB0_UART_CLOCK_COMMAND RCC_APB2PeriphClockCmd
#define FB0_UART_RX_DMA DMA2_Stream1
#define FB0_UART_RX_DMA_CHAN DMA_Channel_5
#define FB0_UART_RX_DMA_TCIF DMA_FLAG_TCIF1
#define FB0_UART_TX_DMA DMA2_Stream6
#define FB0_UART_TX_DMA_CHAN DMA_Channel_5
#define FB0_UART_TX_DMA_TCIF DMA_FLAG_TCIF6
#define FB0_UART_RX_PIN GPIO_Pin_7
#define FB0_UART_RX_PORT GPIOC
#define FB0_UART_RX_PIN_SOURCE GPIO_PinSource7
#define FB0_UART_RX_AF_SOURCE GPIO_AF_USART6
#define FB0_UART_TX_PIN GPIO_Pin_6
#define FB0_UART_TX_PORT GPIOC
#define FB0_UART_TX_PIN_SOURCE GPIO_PinSource6
#define FB0_UART_TX_AF_SOURCE GPIO_AF_USART6
#define FB0_UART_CLK_PIN GPIO_Pin_8
#define FB0_UART_CLK_PORT GPIOC
#define FB0_UART_CLK_PIN_SOURCE GPIO_PinSource8
#define FB0_UART_CLK_AF_SOURCE GPIO_AF_USART6
// FB0 SPI
#define FB0_SPI SPI3
#define FB0_SPI_RCC RCC_APB2Perip_SPI3
#define FB0_SPI_CLOCK_COMMAND RCC_APB1PeriphClockCmd
#define FB0_SPI_RX_DMA DMA1_Stream2
#define FB0_SPI_RX_DMA_CHAN DMA_Channel_0
#define FB0_SPI_RX_DMA_TCIF DMA_FLAG_TCIF2
#define FB0_SPI_TX_DMA DMA1_Stream7
#define FB0_SPI_TX_DMA_CHAN DMA_Channel_0
#define FB0_SPI_TX_DMA_TCIF DMA_FLAG_TCIF7
#define FB0_SPI_RX_PIN GPIO_Pin_11
#define FB0_SPI_RX_PORT GPIOC
#define FB0_SPI_RX_PIN_SOURCE GPIO_PinSource11
#define FB0_SPI_RX_AF_SOURCE GPIO_AF_SPI3
#define FB0_SPI_TX_PIN GPIO_Pin_12
#define FB0_SPI_TX_PORT GPIOC
#define FB0_SPI_TX_PIN_SOURCE GPIO_PinSource12
#define FB0_SPI_TX_AF_SOURCE GPIO_AF_SPI3
#define FB0_SPI_CLK_PIN GPIO_Pin_10
#define FB0_SPI_CLK_PORT GPIOC
#define FB0_SPI_CLK_PIN_SOURCE GPIO_PinSource10
#define FB0_SPI_CLK_AF_SOURCE GPIO_AF_SPI3
//HV UART
#define UART_DRV USART2
#define UART_DRV_RCC RCC_APB1Periph_USART2
#define UART_DRV_CLOCK_COMMAND RCC_APB1PeriphClockCmd
#define UART_DRV_RX_DMA DMA1_Stream5
#define UART_DRV_RX_DMA_CHAN DMA_Channel_4
#define UART_DRV_RX_DMA_TCIF DMA_FLAG_TCIF5
#define UART_DRV_TX_DMA DMA1_Stream6
#define UART_DRV_TX_DMA_CHAN DMA_Channel_4
#define UART_DRV_TX_DMA_TCIF DMA_FLAG_TCIF6
#define UART_DRV_RX_PIN GPIO_Pin_3
#define UART_DRV_RX_PORT GPIOA
#define UART_DRV_RX_PIN_SOURCE GPIO_PinSource3
#define UART_DRV_RX_AF_SOURCE GPIO_AF_USART2
#define UART_DRV_TX_PIN GPIO_Pin_2
#define UART_DRV_TX_PORT GPIOA
#define UART_DRV_TX_PIN_SOURCE GPIO_PinSource2
#define UART_DRV_TX_AF_SOURCE GPIO_AF_USART2
// CMD
#define CMD_ENC_TIM TIM2
#define CMD_ENC_TIM_AF GPIO_AF_TIM2
#define CMD_ENC_TIM_RCC RCC_APB1Periph_TIM2
#define CMD_A_PIN GPIO_Pin_15
#define CMD_A_PIN_SOURCE GPIO_PinSource15
#define CMD_A_PORT GPIOA
#define CMD_B_PIN GPIO_Pin_3
#define CMD_B_PIN_SOURCE GPIO_PinSource3
#define CMD_B_PORT GPIOB
#define CMD_C_PIN GPIO_Pin_5
#define CMD_C_PIN_SOURCE GPIO_PinSource5
#define CMD_C_PORT GPIOB
#define CMD_D_PIN GPIO_Pin_8
#define CMD_D_PIN_SOURCE GPIO_PinSource8
#define CMD_D_PORT GPIOB
#define CMD_A_EN_PIN GPIO_Pin_6
#define CMD_A_EN_PIN_SOURCE GPIO_PinSource6
#define CMD_A_EN_PORT GPIOB
#define CMD_B_EN_PIN GPIO_Pin_7
#define CMD_B_EN_PIN_SOURCE GPIO_PinSource7
#define CMD_B_EN_PORT GPIOB
#define CMD_C_EN_PIN GPIO_Pin_9
#define CMD_C_EN_PIN_SOURCE GPIO_PinSource9
#define CMD_C_EN_PORT GPIOB
#define CMD_D_EN_PIN GPIO_Pin_2
#define CMD_D_EN_PIN_SOURCE GPIO_PinSource2
#define CMD_D_EN_PORT GPIOB
//FB1, TIM1
#define FB1_A_PIN GPIO_Pin_9
#define FB1_A_PIN_SOURCE GPIO_PinSource9
#define FB1_A_PORT GPIOE
#define FB1_B_PIN GPIO_Pin_11
#define FB1_B_PIN_SOURCE GPIO_PinSource11
#define FB1_B_PORT GPIOE
#define FB1_Z_PIN GPIO_Pin_13
#define FB1_Z_PIN_SOURCE GPIO_PinSource13
#define FB1_Z_PORT GPIOE
#define FB1_Z_TXEN_PIN GPIO_Pin_14
#define FB1_Z_TXEN_PIN_SOURCE GPIO_PinSource14
#define FB1_Z_TXEN_PORT GPIOE
#define FB1_ENC_TIM TIM1
#define FB1_ENC_TIM_AF GPIO_AF_TIM1
#define FB1_ENC_TIM_RCC RCC_APB2Periph_TIM1
#define TIM_MASTER TIM3
#define TIM_MASTER_RCC RCC_APB1Periph_TIM3
#define TIM_MASTER_ADC_OC_INIT TIM_OC1Init
#define TIM_MASTER_ADC_OC_PRELOAD TIM_OC1PreloadConfig
#define TIM_MASTER_ADC ADC_ExternalTrigConv_T3_CC1
#define TIM_SLAVE TIM5
#define TIM_SLAVE_RCC RCC_APB1Periph_TIM5
#define TIM_SLAVE_ITR TIM_TS_ITR1
#define TIM_SLAVE_IRQ TIM5_IRQn
#define TIM_SLAVE_HANDLER TIM5_IRQHandler
#else
#error "No hardware version defined"
#endif