mirror of
https://github.com/rene-dev/stmbl.git
synced 2026-08-18 01:18:58 +08:00
initial v4 port
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# Optimization level, can be [0, 1, 2, 3, s].
|
||||
# 0 = turn off optimization. s = optimize for size.
|
||||
#
|
||||
OPT = -O1 -flto
|
||||
OPT = -O1
|
||||
# OPT = -O1 # for debugging
|
||||
|
||||
# Object files directory
|
||||
|
||||
+3
-11
@@ -1,16 +1,8 @@
|
||||
HAL_COMP(adc);
|
||||
|
||||
#define AREF 3.3// analog reference voltage
|
||||
#define ARES 4096.0// analog resolution, 12 bit
|
||||
|
||||
#define R15 1000.0
|
||||
#define R22 3900.0
|
||||
#define R21 180.0
|
||||
#define R19 470.0
|
||||
#define V_REF 5.0
|
||||
#define INPUT_REF (V_REF * R21 / (R19 + R21))
|
||||
#define INPUT_GAIN (R22 / R15 * R21 / (R19 + R21))
|
||||
#define V_DIFF(ADC) (((ADC)/ADC_ANZ/ARES*AREF-INPUT_REF)/INPUT_GAIN)
|
||||
#define INPUT_REF (OP_REF * OP_R_OUT_LOW / (OP_R_OUT_HIGH + OP_R_OUT_LOW))
|
||||
#define INPUT_GAIN (OP_R_FEEDBACK / OP_R_INPUT * OP_R_OUT_LOW / (OP_R_OUT_HIGH + OP_R_OUT_LOW))
|
||||
#define V_DIFF(ADC) (((ADC) / ADC_ANZ / ADC_RES * ADC_REF - INPUT_REF) / INPUT_GAIN)
|
||||
|
||||
HAL_PIN(sin) = 0.0;
|
||||
HAL_PIN(cos) = 0.0;
|
||||
|
||||
+45
-47
@@ -32,57 +32,55 @@ RT_INIT(
|
||||
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
|
||||
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
|
||||
TIM_ICInitStructure.TIM_ICFilter = 0xF;
|
||||
TIM_ICInit(ENC1_TIM, &TIM_ICInitStructure);
|
||||
TIM_ICInit(FB0_ENC_TIM, &TIM_ICInitStructure);
|
||||
|
||||
/***************** port 1, quadrature , sin/cos or resolver *********************/
|
||||
e_res = (int)PIN(res);
|
||||
if(e_res < 1){
|
||||
e_res = 1;
|
||||
e_res = 1;
|
||||
}
|
||||
// enable clocks
|
||||
RCC_APB1PeriphClockCmd(ENC1_TIM_RCC, ENABLE);
|
||||
RCC_APB1PeriphClockCmd(FB0_ENC_TIM_RCC, ENABLE);
|
||||
|
||||
// pin mode: af
|
||||
GPIO_InitStructure.GPIO_Pin = ENC1_A_PIN | ENC1_B_PIN;
|
||||
GPIO_InitStructure.GPIO_Pin = FB0_A_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
GPIO_Init(ENC1_A_PORT, &GPIO_InitStructure);
|
||||
GPIO_Init(FB0_A_PORT, &GPIO_InitStructure);
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = FB0_B_PIN;
|
||||
GPIO_Init(FB0_B_PORT, &GPIO_InitStructure);
|
||||
|
||||
// pin af -> tim
|
||||
GPIO_PinAFConfig(ENC1_A_PORT, ENC1_A_PIN_SOURCE, ENC1_A_AF_SOURCE);
|
||||
GPIO_PinAFConfig(ENC1_B_PORT, ENC1_B_PIN_SOURCE, ENC1_B_AF_SOURCE);
|
||||
GPIO_PinAFConfig(FB0_A_PORT, FB0_A_PIN_SOURCE, FB0_ENC_TIM_AF);
|
||||
GPIO_PinAFConfig(FB0_B_PORT, FB0_B_PIN_SOURCE, FB0_ENC_TIM_AF);
|
||||
|
||||
// enc res / turn
|
||||
TIM_SetAutoreload(ENC1_TIM, e_res - 1);
|
||||
TIM_SetAutoreload(FB0_ENC_TIM, e_res - 1);
|
||||
|
||||
// quad
|
||||
TIM_Cmd(ENC1_TIM, DISABLE);
|
||||
GPIO_InitStructure.GPIO_Pin = ENC1_A_PIN | ENC1_B_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
GPIO_Init(ENC1_A_PORT, &GPIO_InitStructure);
|
||||
TIM_EncoderInterfaceConfig(ENC1_TIM, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
|
||||
TIM_Cmd(ENC1_TIM, ENABLE);
|
||||
TIM_Cmd(FB0_ENC_TIM, DISABLE);
|
||||
TIM_EncoderInterfaceConfig(FB0_ENC_TIM, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
|
||||
TIM_Cmd(FB0_ENC_TIM, ENABLE);
|
||||
);
|
||||
|
||||
RT_DEINIT(
|
||||
TIM_Cmd(ENC1_TIM, DISABLE);
|
||||
TIM_DeInit(ENC1_TIM);
|
||||
RCC_APB2PeriphClockCmd(ENC1_TIM_RCC, DISABLE);
|
||||
GPIO_InitStructure.GPIO_Pin = ENC1_A_PIN | ENC1_B_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(ENC1_A_PORT, &GPIO_InitStructure);
|
||||
//TODO:
|
||||
// TIM_Cmd(FB0_ENC_TIM, DISABLE);
|
||||
// TIM_DeInit(FB0_ENC_TIM);
|
||||
// RCC_APB2PeriphClockCmd(FB0_ENC_TIM_RCC, DISABLE);
|
||||
// GPIO_InitStructure.GPIO_Pin = ENC1_A_PIN | ENC1_B_PIN;
|
||||
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
|
||||
// GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
// GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
// GPIO_Init(ENC1_A_PORT, &GPIO_InitStructure);
|
||||
);
|
||||
|
||||
FRT(
|
||||
float p = mod(TIM_GetCounter(ENC1_TIM) * 2.0f * M_PI / (float)e_res);
|
||||
float p = mod(TIM_GetCounter(FB0_ENC_TIM) * 2.0f * M_PI / (float)e_res);
|
||||
PIN(pos) = p;
|
||||
if(RISING_EDGE(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)) && PIN(isabs) != 1.0){
|
||||
absoffset = -p;
|
||||
@@ -92,18 +90,18 @@ FRT(
|
||||
);
|
||||
|
||||
RT(
|
||||
int32_t tim = TIM_GetCounter(ENC1_TIM);//TODO: interrupt here?
|
||||
uint32_t scgpio = GPIOC->IDR;
|
||||
int32_t tim = TIM_GetCounter(FB0_ENC_TIM);//TODO: interrupt here?
|
||||
uint32_t scgpio = FB0_A_PORT->IDR;//TODO: ENC PORT
|
||||
|
||||
float p = 0.0;
|
||||
int r = (int)PIN(res);
|
||||
if(r < 1){
|
||||
r = 1;
|
||||
r = 1;
|
||||
}
|
||||
|
||||
float ir = PIN(ires);
|
||||
if(ir < 1){
|
||||
ir = 1;
|
||||
ir = 1;
|
||||
}
|
||||
|
||||
float s = PIN(sin);
|
||||
@@ -112,16 +110,16 @@ RT(
|
||||
|
||||
PIN(amp) = a;
|
||||
int q;
|
||||
|
||||
if(!(scgpio & GPIO_Pin_6)){
|
||||
if(scgpio & GPIO_Pin_7){
|
||||
|
||||
if(!(scgpio & FB0_A_PIN)){//TODO: check A/B mapping, hw3 has A -> cos, B -> sin
|
||||
if(scgpio & FB0_B_PIN){
|
||||
q = 1;
|
||||
}
|
||||
else{
|
||||
q = 2;
|
||||
}
|
||||
}else{
|
||||
if(scgpio & GPIO_Pin_7){
|
||||
if(scgpio & FB0_B_PIN){
|
||||
q = 4;
|
||||
}
|
||||
else{
|
||||
@@ -130,7 +128,7 @@ RT(
|
||||
}
|
||||
//TODO: sincos stuff at speed
|
||||
int qdiff = PIN(quad)-q;
|
||||
|
||||
|
||||
switch(qdiff){
|
||||
case 1:
|
||||
case -3:
|
||||
@@ -143,21 +141,21 @@ RT(
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if(tim >= e_res){
|
||||
tim = 0;
|
||||
}
|
||||
else if(tim < 0){
|
||||
tim = e_res - 1;
|
||||
}
|
||||
|
||||
|
||||
PIN(qdiff) = qdiff;
|
||||
|
||||
PIN(s) = (scgpio & GPIO_Pin_6)?0:1;
|
||||
PIN(c) = (scgpio & GPIO_Pin_7)?1:0;
|
||||
|
||||
|
||||
PIN(s) = (scgpio & FB0_A_PIN)?0:1;
|
||||
PIN(c) = (scgpio & FB0_B_PIN)?1:0;
|
||||
|
||||
PIN(oquad) = q;
|
||||
|
||||
|
||||
p = mod(tim * 2.0f * M_PI / (float)e_res);
|
||||
|
||||
if(a < 0.15 && !EDGE(tim)){
|
||||
@@ -170,20 +168,20 @@ RT(
|
||||
|
||||
if(e_res != r){
|
||||
e_res = r;
|
||||
TIM_SetAutoreload(ENC1_TIM, e_res - 1);
|
||||
TIM_SetAutoreload(FB0_ENC_TIM, e_res - 1);
|
||||
}
|
||||
|
||||
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)){//TODO: setup pin
|
||||
if(GPIO_ReadInputDataBit(FB0_Z_PORT,FB0_Z_PIN)){//TODO: setup pin
|
||||
PIN(index) = 0.0;
|
||||
}else{
|
||||
PIN(index) = 1.0;
|
||||
}
|
||||
if(GPIO_ReadInputDataBit(ENC1_A_PORT,ENC1_A_PIN)){//TODO: setup pin
|
||||
if(GPIO_ReadInputDataBit(FB0_A_PORT,FB0_A_PIN)){//TODO: setup pin
|
||||
PIN(a) = 0.0;
|
||||
}else{
|
||||
PIN(a) = 1.0;
|
||||
}
|
||||
if(GPIO_ReadInputDataBit(ENC1_B_PORT,ENC1_B_PIN)){//TODO: setup pin
|
||||
if(GPIO_ReadInputDataBit(FB0_B_PORT,FB0_B_PIN)){//TODO: setup pin
|
||||
PIN(b) = 0.0;
|
||||
}else{
|
||||
PIN(b) = 1.0;
|
||||
|
||||
+19
-20
@@ -14,55 +14,54 @@ RT_INIT(
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
||||
// enable clocks
|
||||
RCC_APB1PeriphClockCmd(ENC1_TIM_RCC, ENABLE);
|
||||
RCC_APB1PeriphClockCmd(FB0_ENC_TIM_RCC, ENABLE);
|
||||
|
||||
// pin mode: af
|
||||
GPIO_InitStructure.GPIO_Pin = ENC1_A_PIN;
|
||||
GPIO_InitStructure.GPIO_Pin = FB0_A_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
GPIO_Init(ENC1_A_PORT, &GPIO_InitStructure);
|
||||
GPIO_Init(FB0_A_PORT, &GPIO_InitStructure);
|
||||
|
||||
// pin af -> tim
|
||||
GPIO_PinAFConfig(ENC1_A_PORT, ENC1_A_PIN_SOURCE, ENC1_A_AF_SOURCE);
|
||||
// GPIO_PinAFConfig(ENC1_B_PORT, ENC1_B_PIN_SOURCE, ENC1_B_AF_SOURCE);
|
||||
GPIO_PinAFConfig(FB0_A_PORT, FB0_A_PIN_SOURCE, FB0_ENC_TIM_AF);
|
||||
|
||||
// enc res / turn
|
||||
TIM_SetAutoreload(ENC1_TIM, 5000-1);
|
||||
TIM_SetAutoreload(FB0_ENC_TIM, 5000-1);
|
||||
|
||||
// quad
|
||||
TIM_Cmd(ENC1_TIM, DISABLE);
|
||||
GPIO_InitStructure.GPIO_Pin = ENC1_A_PIN;
|
||||
TIM_Cmd(FB0_ENC_TIM, DISABLE);
|
||||
GPIO_InitStructure.GPIO_Pin = FB0_A_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
GPIO_Init(ENC1_A_PORT, &GPIO_InitStructure);
|
||||
TIM_EncoderInterfaceConfig(ENC1_TIM, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
|
||||
GPIO_Init(FB0_A_PORT, &GPIO_InitStructure);
|
||||
TIM_EncoderInterfaceConfig(FB0_ENC_TIM, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
|
||||
|
||||
TIM_ETRClockMode1Config(ENC1_TIM,TIM_ExtTRGPSC_OFF,TIM_ExtTRGPolarity_NonInverted,0x00);
|
||||
TIM_ETRClockMode1Config(FB0_ENC_TIM,TIM_ExtTRGPSC_OFF,TIM_ExtTRGPolarity_NonInverted,0x00);
|
||||
|
||||
TIM_TIxExternalClockConfig(ENC1_TIM,TIM_TIxExternalCLK1Source_TI1,TIM_ICPolarity_Rising,0x00);
|
||||
TIM_TIxExternalClockConfig(FB0_ENC_TIM,TIM_TIxExternalCLK1Source_TI1,TIM_ICPolarity_Rising,0x00);
|
||||
|
||||
TIM_Cmd(ENC1_TIM, ENABLE);
|
||||
TIM_Cmd(FB0_ENC_TIM, ENABLE);
|
||||
);
|
||||
|
||||
RT_DEINIT(
|
||||
TIM_Cmd(ENC1_TIM, DISABLE);
|
||||
TIM_DeInit(ENC1_TIM);
|
||||
RCC_APB2PeriphClockCmd(ENC1_TIM_RCC, DISABLE);
|
||||
GPIO_InitStructure.GPIO_Pin = ENC1_A_PIN | ENC1_B_PIN;
|
||||
TIM_Cmd(FB0_ENC_TIM, DISABLE);
|
||||
TIM_DeInit(FB0_ENC_TIM);
|
||||
RCC_APB2PeriphClockCmd(FB0_ENC_TIM_RCC, DISABLE);
|
||||
GPIO_InitStructure.GPIO_Pin = FB0_A_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(ENC1_A_PORT, &GPIO_InitStructure);
|
||||
GPIO_Init(FB0_A_PORT, &GPIO_InitStructure);
|
||||
);
|
||||
|
||||
RT(
|
||||
float lp = PIN(lp);
|
||||
uint32_t tim = TIM_GetCounter(ENC1_TIM);
|
||||
uint32_t tim = TIM_GetCounter(FB0_ENC_TIM);
|
||||
if(time > PIN(t)){
|
||||
float vel = ((tim - lastpos + 5000)%5000)/PIN(res)/time;
|
||||
vel_lp = vel * lp + vel_lp * (1.0 - lp);
|
||||
@@ -72,7 +71,7 @@ RT(
|
||||
}
|
||||
time += period;
|
||||
|
||||
if(GPIO_ReadInputDataBit(ENC1_A_PORT,ENC1_A_PIN)){//TODO: setup pin
|
||||
if(GPIO_ReadInputDataBit(FB0_A_PORT,FB0_A_PIN)){//TODO: setup pin
|
||||
PIN(a) = 0.0;
|
||||
}else{
|
||||
PIN(a) = 1.0;
|
||||
|
||||
@@ -12,15 +12,8 @@ INIT(
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
|
||||
//fan
|
||||
GPIO_InitStructure.GPIO_Pin = FAN_PIN;
|
||||
GPIO_Init(FAN_PORT, &GPIO_InitStructure);
|
||||
|
||||
//led
|
||||
GPIO_InitStructure.GPIO_Pin = LED_R_PIN;
|
||||
GPIO_Init(LED_R_PORT, &GPIO_InitStructure);
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = LED_G_PIN;
|
||||
GPIO_Init(LED_G_PORT, &GPIO_InitStructure);
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_10 | GPIO_Pin_11;
|
||||
GPIO_Init(GPIOC, &GPIO_InitStructure);
|
||||
|
||||
//brake
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);
|
||||
@@ -56,9 +49,9 @@ INIT(
|
||||
|
||||
NRT(
|
||||
if(PIN(fan) > 0)
|
||||
GPIO_SetBits(FAN_PORT, FAN_PIN);
|
||||
GPIO_SetBits(GPIOC, GPIO_Pin_8);
|
||||
else
|
||||
GPIO_ResetBits(FAN_PORT, FAN_PIN);
|
||||
GPIO_ResetBits(GPIOC, GPIO_Pin_8);
|
||||
|
||||
TIM8->CCR4 = (int)CLAMP(PIN(brake) * 8400, 0, TIM8->ARR - 1);
|
||||
|
||||
@@ -93,14 +86,14 @@ NRT(
|
||||
}
|
||||
|
||||
if(red > 0)
|
||||
GPIO_SetBits(LED_R_PORT, LED_R_PIN);
|
||||
GPIO_SetBits(GPIOC, GPIO_Pin_10);
|
||||
else
|
||||
GPIO_ResetBits(LED_R_PORT, LED_R_PIN);
|
||||
GPIO_ResetBits(GPIOC, GPIO_Pin_10);
|
||||
|
||||
if(green > 0)
|
||||
GPIO_SetBits(LED_G_PORT, LED_G_PIN);
|
||||
GPIO_SetBits(GPIOC, GPIO_Pin_11);
|
||||
else
|
||||
GPIO_ResetBits(LED_G_PORT, LED_G_PIN);
|
||||
GPIO_ResetBits(GPIOC, GPIO_Pin_11);
|
||||
);
|
||||
|
||||
ENDCOMP;
|
||||
@@ -0,0 +1,168 @@
|
||||
HAL_COMP(io);
|
||||
|
||||
HAL_PIN(fan) = 0.0;
|
||||
|
||||
HAL_PIN(state) = 0.0;
|
||||
HAL_PIN(fault) = 0.0;
|
||||
HAL_PIN(brake) = 0.0;
|
||||
|
||||
HAL_PIN(red) = 0.0;
|
||||
HAL_PIN(yellow) = 0.0;
|
||||
HAL_PIN(green) = 0.0;
|
||||
|
||||
HAL_PIN(out0) = 0.0;
|
||||
HAL_PIN(out1) = 0.0;
|
||||
HAL_PIN(out2) = 0.0;
|
||||
|
||||
HAL_PIN(in0) = 0.0;
|
||||
HAL_PIN(in1) = 0.0;
|
||||
|
||||
HAL_PIN(fb0g) = 0.0;
|
||||
HAL_PIN(fb0y) = 0.0;
|
||||
|
||||
HAL_PIN(fb1g) = 0.0;
|
||||
HAL_PIN(fb1y) = 0.0;
|
||||
|
||||
HAL_PIN(cmdg) = 0.0;
|
||||
HAL_PIN(cmdy) = 0.0;
|
||||
|
||||
INIT(
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
|
||||
//fan
|
||||
//GPIO_InitStructure.GPIO_Pin = FAN_PIN;
|
||||
//GPIO_Init(FAN_PORT, &GPIO_InitStructure);
|
||||
|
||||
//red
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
|
||||
GPIO_Init(GPIOD, &GPIO_InitStructure);
|
||||
|
||||
//yellow
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
|
||||
GPIO_Init(GPIOD, &GPIO_InitStructure);
|
||||
|
||||
//green
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
|
||||
GPIO_Init(GPIOD, &GPIO_InitStructure);
|
||||
|
||||
//in1
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
|
||||
GPIO_Init(GPIOE, &GPIO_InitStructure);
|
||||
|
||||
//in0
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
|
||||
GPIO_Init(GPIOE, &GPIO_InitStructure);
|
||||
|
||||
//out0
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
|
||||
GPIO_Init(GPIOE, &GPIO_InitStructure);
|
||||
|
||||
//out1
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
|
||||
GPIO_Init(GPIOE, &GPIO_InitStructure);
|
||||
|
||||
//out2
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
|
||||
GPIO_Init(GPIOE, &GPIO_InitStructure);
|
||||
|
||||
//fb0 green
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
|
||||
GPIO_Init(GPIOD, &GPIO_InitStructure);
|
||||
|
||||
//fb0 yellow
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
|
||||
GPIO_Init(GPIOD, &GPIO_InitStructure);
|
||||
|
||||
//fb1 green
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
|
||||
GPIO_Init(GPIOE, &GPIO_InitStructure);
|
||||
|
||||
//fb1 yellow
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
|
||||
GPIO_Init(GPIOE, &GPIO_InitStructure);
|
||||
|
||||
//cmd yellow
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
|
||||
GPIO_Init(GPIOD, &GPIO_InitStructure);
|
||||
|
||||
//cmd green
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
|
||||
GPIO_Init(GPIOD, &GPIO_InitStructure);
|
||||
);
|
||||
|
||||
NRT(
|
||||
if(PIN(red) > 0)
|
||||
GPIO_SetBits(GPIOD, GPIO_Pin_3);
|
||||
else
|
||||
GPIO_ResetBits(GPIOD, GPIO_Pin_3);
|
||||
|
||||
if(PIN(yellow) > 0)
|
||||
GPIO_SetBits(GPIOD, GPIO_Pin_4);
|
||||
else
|
||||
GPIO_ResetBits(GPIOD, GPIO_Pin_4);
|
||||
|
||||
if(PIN(green) > 0)
|
||||
GPIO_SetBits(GPIOD, GPIO_Pin_5);
|
||||
else
|
||||
GPIO_ResetBits(GPIOD, GPIO_Pin_5);
|
||||
|
||||
if(PIN(out0) > 0)
|
||||
GPIO_SetBits(GPIOE, GPIO_Pin_4);
|
||||
else
|
||||
GPIO_ResetBits(GPIOE, GPIO_Pin_4);
|
||||
|
||||
if(PIN(out1) > 0)
|
||||
GPIO_SetBits(GPIOE, GPIO_Pin_5);
|
||||
else
|
||||
GPIO_ResetBits(GPIOE, GPIO_Pin_5);
|
||||
|
||||
if(PIN(out2) > 0)
|
||||
GPIO_SetBits(GPIOE, GPIO_Pin_6);
|
||||
else
|
||||
GPIO_ResetBits(GPIOE, GPIO_Pin_6);
|
||||
|
||||
if(PIN(in0) > 0)
|
||||
GPIO_SetBits(GPIOE, GPIO_Pin_1);
|
||||
else
|
||||
GPIO_ResetBits(GPIOE, GPIO_Pin_1);
|
||||
|
||||
if(PIN(in1) > 0)
|
||||
GPIO_SetBits(GPIOE, GPIO_Pin_0);
|
||||
else
|
||||
GPIO_ResetBits(GPIOE, GPIO_Pin_0);
|
||||
|
||||
if(PIN(fb0g) > 0)
|
||||
GPIO_SetBits(GPIOD, GPIO_Pin_8);
|
||||
else
|
||||
GPIO_ResetBits(GPIOD, GPIO_Pin_8);
|
||||
|
||||
if(PIN(fb0y) > 0)
|
||||
GPIO_SetBits(GPIOD, GPIO_Pin_9);
|
||||
else
|
||||
GPIO_ResetBits(GPIOD, GPIO_Pin_9);
|
||||
|
||||
if(PIN(fb1g) > 0)
|
||||
GPIO_SetBits(GPIOE, GPIO_Pin_7);
|
||||
else
|
||||
GPIO_ResetBits(GPIOE, GPIO_Pin_7);
|
||||
|
||||
if(PIN(fb1y) > 0)
|
||||
GPIO_SetBits(GPIOE, GPIO_Pin_8);
|
||||
else
|
||||
GPIO_ResetBits(GPIOE, GPIO_Pin_8);
|
||||
|
||||
if(PIN(cmdy) > 0)
|
||||
GPIO_SetBits(GPIOD, GPIO_Pin_6);
|
||||
else
|
||||
GPIO_ResetBits(GPIOD, GPIO_Pin_6);
|
||||
|
||||
if(PIN(cmdg) > 0)
|
||||
GPIO_SetBits(GPIOD, GPIO_Pin_7);
|
||||
else
|
||||
GPIO_ResetBits(GPIOD, GPIO_Pin_7);
|
||||
);
|
||||
|
||||
ENDCOMP;
|
||||
+31
-15
@@ -14,20 +14,35 @@ HAL_PIN(cos) = 0.0;
|
||||
|
||||
HAL_PIN(enable) = 0.0;
|
||||
HAL_PIN(error) = 0.0;
|
||||
//HAL_PIN(tim2_oc) = 240.0;
|
||||
HAL_PIN(tim_oc) = 5.0;
|
||||
MEM(int lastq) = 0;// last quadrant
|
||||
MEM(int abspos) = 0;// multiturn position
|
||||
|
||||
RT_INIT(
|
||||
// resolver reference signal OC
|
||||
//TODO: timer init!
|
||||
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;
|
||||
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
||||
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
|
||||
TIM_OCInitStructure.TIM_Pulse = 5;
|
||||
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
|
||||
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
|
||||
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
|
||||
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
|
||||
//ref is always OC3
|
||||
TIM_OC3Init(TIM_SLAVE, &TIM_OCInitStructure);
|
||||
TIM_OC3PreloadConfig(TIM_SLAVE, TIM_OCPreload_Enable);
|
||||
TIM_CtrlPWMOutputs(TIM_SLAVE, ENABLE);
|
||||
|
||||
//resolver ref signal generation
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
|
||||
GPIO_InitStructure.GPIO_Pin = FB0_Z_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||
GPIO_Init(FB0_Z_PORT, &GPIO_InitStructure);
|
||||
|
||||
GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_TIM2);
|
||||
GPIO_PinAFConfig(FB0_Z_PORT, FB0_Z_PIN_SOURCE, FB0_RES_TIM_AF);
|
||||
|
||||
// TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;
|
||||
// TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
||||
@@ -43,23 +58,23 @@ RT_INIT(
|
||||
// TIM_CtrlPWMOutputs(TIM2, ENABLE);
|
||||
|
||||
//txen
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
|
||||
GPIO_InitStructure.GPIO_Pin = FB0_Z_TXEN_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||
GPIO_SetBits(GPIOB,GPIO_Pin_12);
|
||||
GPIO_Init(FB0_Z_TXEN_PORT, &GPIO_InitStructure);
|
||||
GPIO_SetBits(FB0_Z_TXEN_PORT,FB0_Z_TXEN_PIN);
|
||||
);
|
||||
|
||||
RT_DEINIT(
|
||||
GPIO_ResetBits(GPIOB,GPIO_Pin_12);//tx disable
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_12;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||
// GPIO_ResetBits(GPIOB,GPIO_Pin_12);//tx disable
|
||||
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_12;
|
||||
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
|
||||
// GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
// GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
// GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||
// TIM_CtrlPWMOutputs(TIM2, DISABLE);
|
||||
// TIM_OCStructInit(&TIM_OCInitStructure);
|
||||
// TIM_OC3Init(TIM2, &TIM_OCInitStructure);
|
||||
@@ -67,7 +82,8 @@ RT_DEINIT(
|
||||
|
||||
RT(
|
||||
//TODO: arr can change!
|
||||
// TIM2->CCR3 = (int)CLAMP(PIN(tim2_oc), 0, TIM2->ARR - 1);
|
||||
FB0_RES_TIM->CCR3 = (int)CLAMP(PIN(tim_oc), 0, FB0_RES_TIM->ARR - 1);
|
||||
|
||||
float s = 0.0;
|
||||
float c = 0.0;
|
||||
float a = 0.0;
|
||||
|
||||
+1
-1
@@ -255,7 +255,7 @@ NRT(
|
||||
}
|
||||
|
||||
int tmp = 0;
|
||||
unsigned char buf[8 + 2];
|
||||
unsigned char buf[8 + 2];//TODO: TERM_NUM_WAVES...
|
||||
|
||||
buf[0] = 255;
|
||||
buf[8 + 1] = 0;
|
||||
|
||||
@@ -1,213 +0,0 @@
|
||||
// defines für stm32f405
|
||||
|
||||
// resolver
|
||||
//// adc
|
||||
#define SIN_ADC ADC1
|
||||
#define SIN_ADC_RCC RCC_APB2Periph_ADC1
|
||||
#define SIN_ADC_CHAN ADC_Channel_14
|
||||
|
||||
#define COS_ADC ADC2
|
||||
#define COS_ADC_RCC RCC_APB2Periph_ADC2
|
||||
#define COS_ADC_CHAN ADC_Channel_15
|
||||
|
||||
//// timer
|
||||
#define RES_TIM TIM2
|
||||
#define RES_TIM_RCC RCC_APB1Periph_TIM2
|
||||
|
||||
//// dma
|
||||
#define DMA DMA2_Stream2
|
||||
#define DMA_RCC RCC_AHB1Periph_DMA2
|
||||
#define DMA_CHAN DMA_Channel_1
|
||||
#define DMA_IRQN DMA2_Stream2_IRQn
|
||||
|
||||
//// gpio
|
||||
#define SIN_PIN GPIO_Pin_4
|
||||
#define SIN_PORT GPIOC
|
||||
#define SIN_IO_RCC RCC_AHB1Periph_GPIOC
|
||||
|
||||
#define COS_PIN GPIO_Pin_5
|
||||
#define COS_PORT GPIOC
|
||||
#define COS_IO_RCC RCC_AHB1Periph_GPIOC
|
||||
|
||||
#define RES_PIN GPIO_Pin_5
|
||||
#define RES_PORT GPIOA
|
||||
#define RES_IO_RCC RCC_AHB1Periph_GPIOA
|
||||
|
||||
|
||||
// encoder
|
||||
//// timer
|
||||
#define ENC0_TIM TIM1
|
||||
#define ENC0_TIM_RCC RCC_APB2Periph_TIM1
|
||||
|
||||
#define ENC1_TIM TIM3
|
||||
#define ENC1_TIM_RCC RCC_APB1Periph_TIM3
|
||||
|
||||
//// gpio
|
||||
#define ENC0_A_PIN GPIO_Pin_8
|
||||
#define ENC0_A_PORT GPIOA
|
||||
#define ENC0_A_IO_RCC RCC_AHB1Periph_GPIOA
|
||||
#define ENC0_A_PIN_SOURCE GPIO_PinSource8
|
||||
#define ENC0_A_AF_SOURCE GPIO_AF_TIM1
|
||||
|
||||
|
||||
#define ENC0_B_PIN GPIO_Pin_9
|
||||
#define ENC0_B_PORT GPIOA
|
||||
#define ENC0_B_IO_RCC RCC_AHB1Periph_GPIOA
|
||||
#define ENC0_B_PIN_SOURCE GPIO_PinSource9
|
||||
#define ENC0_B_AF_SOURCE GPIO_AF_TIM1
|
||||
|
||||
#define ENC1_A_PIN GPIO_Pin_6
|
||||
#define ENC1_A_PORT GPIOC
|
||||
#define ENC1_A_IO_RCC RCC_AHB1Periph_GPIOC
|
||||
#define ENC1_A_PIN_SOURCE GPIO_PinSource6
|
||||
#define ENC1_A_AF_SOURCE GPIO_AF_TIM3
|
||||
|
||||
#define ENC1_B_PIN GPIO_Pin_7
|
||||
#define ENC1_B_PORT GPIOC
|
||||
#define ENC1_B_IO_RCC RCC_AHB1Periph_GPIOC
|
||||
#define ENC1_B_PIN_SOURCE GPIO_PinSource7
|
||||
#define ENC1_B_AF_SOURCE GPIO_AF_TIM3
|
||||
|
||||
// leds
|
||||
#define LED_R_PIN GPIO_Pin_10
|
||||
#define LED_R_PORT GPIOC
|
||||
#define LED_R_IO_RCC RCC_AHB1Periph_GPIOC
|
||||
|
||||
#define LED_G_PIN GPIO_Pin_11
|
||||
#define LED_G_PORT GPIOC
|
||||
#define LED_G_IO_RCC RCC_AHB1Periph_GPIOC
|
||||
|
||||
// brake
|
||||
#define BRAKE_PIN GPIO_Pin_9
|
||||
#define BRAKE_PORT GPIOC
|
||||
#define BRAKE_IO_RCC RCC_AHB1Periph_GPIOC
|
||||
|
||||
// fan
|
||||
#define FAN_PIN GPIO_Pin_8
|
||||
#define FAN_PORT GPIOC
|
||||
#define FAN_IO_RCC RCC_AHB1Periph_GPIOC
|
||||
|
||||
#ifdef TROLLER
|
||||
|
||||
#define UART_DRV USART1
|
||||
#define UART_DRV_RCC RCC_APB2Periph_USART1
|
||||
#define UART_DRV_CLOCK_COMMAND RCC_APB2PeriphClockCmd
|
||||
|
||||
#define UART_DRV_RX_DMA DMA2_Stream5
|
||||
#define UART_DRV_RX_DMA_RCC RCC_AHB1Periph_DMA2
|
||||
#define UART_DRV_RX_DMA_CHAN DMA_Channel_4
|
||||
#define UART_DRV_RX_DMA_IRQN DMA1_Stream5_IRQn
|
||||
#define UART_DRV_RX_DMA_TCIF DMA_FLAG_TCIF5
|
||||
|
||||
#define UART_DRV_IRQ USART1_IRQHandler
|
||||
#define UART_DRV_IRQN USART1_IRQn
|
||||
|
||||
#define UART_DRV_TX_DMA DMA2_Stream7
|
||||
#define UART_DRV_TX_DMA_RCC RCC_AHB1Periph_DMA2
|
||||
#define UART_DRV_TX_DMA_CHAN DMA_Channel_4
|
||||
#define UART_DRV_TX_DMA_IRQN DMA1_Stream7_IRQn
|
||||
#define UART_DRV_TX_DMA_TCIF DMA_FLAG_TCIF7
|
||||
|
||||
#define UART_DRV_RX_PIN GPIO_Pin_7
|
||||
#define UART_DRV_RX_PORT GPIOB
|
||||
#define UART_DRV_RX_IO_RCC RCC_AHB1Periph_GPIOB
|
||||
#define UART_DRV_RX_PIN_SOURCE GPIO_PinSource7
|
||||
#define UART_DRV_RX_AF_SOURCE GPIO_AF_USART1
|
||||
|
||||
#define UART_DRV_TX_PIN GPIO_Pin_6
|
||||
#define UART_DRV_TX_PORT GPIOB
|
||||
#define UART_DRV_TX_IO_RCC RCC_AHB1Periph_GPIOB
|
||||
#define UART_DRV_TX_PIN_SOURCE GPIO_PinSource6
|
||||
#define UART_DRV_TX_AF_SOURCE GPIO_AF_USART1
|
||||
|
||||
#else
|
||||
|
||||
#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_RCC RCC_AHB1Periph_DMA1
|
||||
#define UART_DRV_RX_DMA_CHAN DMA_Channel_4
|
||||
#define UART_DRV_RX_DMA_IRQN DMA1_Stream5_IRQn
|
||||
#define UART_DRV_RX_DMA_TCIF DMA_FLAG_TCIF5
|
||||
|
||||
#define UART_DRV_IRQ USART2_IRQHandler
|
||||
#define UART_DRV_IRQN USART2_IRQn
|
||||
|
||||
#define UART_DRV_TX_DMA DMA1_Stream6
|
||||
#define UART_DRV_TX_DMA_RCC RCC_AHB1Periph_DMA1
|
||||
#define UART_DRV_TX_DMA_CHAN DMA_Channel_4
|
||||
#define UART_DRV_TX_DMA_IRQN DMA1_Stream6_IRQn
|
||||
#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_IO_RCC RCC_AHB1Periph_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_IO_RCC RCC_AHB1Periph_GPIOA
|
||||
#define UART_DRV_TX_PIN_SOURCE GPIO_PinSource2
|
||||
#define UART_DRV_TX_AF_SOURCE GPIO_AF_USART2
|
||||
|
||||
#endif
|
||||
|
||||
// // i2c
|
||||
// #define I2C I2C1
|
||||
// #define I2C_RCC RCC_AHB1Periph_I2C1
|
||||
//
|
||||
// //// gpio
|
||||
// #define I2C_SDA_PIN GPIO_Pin_9
|
||||
// #define I2C_SDA_PORT GPIOB
|
||||
// #define I2C_SDA_IO_RCC RCC_AHB1Periph_GPIOB
|
||||
// #define I2C_SDA_PIN_SOURCE GPIO_PinSource9
|
||||
// #define I2C_SDA_AF_SOURCE GPIO_AF_I2C1
|
||||
//
|
||||
// #define I2C_SCK_PIN GPIO_Pin_8
|
||||
// #define I2C_SCK_PORT GPIOB
|
||||
// #define I2C_SCK_IO_RCC RCC_AHB1Periph_GPIOB
|
||||
// #define I2C_SCK_PIN_SOURCE GPIO_PinSource8
|
||||
// #define I2C_SCK_AF_SOURCE GPIO_AF_I2C1
|
||||
//
|
||||
// // spi
|
||||
// #define SPI SPI1
|
||||
// #define SPI_RCC RCC_AHB1Periph_SPI1
|
||||
//
|
||||
// //// gpio
|
||||
// #define SPI_MOSI_PIN GPIO_Pin_5
|
||||
// #define SPI_MOSI_PORT GPIOB
|
||||
// #define SPI_MOSI_IO_RCC RCC_AHB1Periph_GPIOB
|
||||
// #define SPI_MOSI_PIN_SOURCE GPIO_PinSource5
|
||||
// #define SPI_MOSI_AF_SOURCE GPIO_AF_SPI1
|
||||
//
|
||||
// #define SPI_MISO_PIN GPIO_Pin_4
|
||||
// #define SPI_MISO_PORT GPIOB
|
||||
// #define SPI_MISO_IO_RCC RCC_AHB1Periph_GPIOB
|
||||
// #define SPI_MISO_PIN_SOURCE GPIO_PinSource4
|
||||
// #define SPI_MISO_AF_SOURCE GPIO_AF_SPI1
|
||||
//
|
||||
// #define SPI_SCK_PIN GPIO_Pin_3
|
||||
// #define SPI_SCK_PORT GPIOB
|
||||
// #define SPI_SCK_IO_RCC RCC_AHB1Periph_GPIOB
|
||||
// #define SPI_SCK_PIN_SOURCE GPIO_PinSource3
|
||||
// #define SPI_SCK_AF_SOURCE GPIO_AF_SPI1
|
||||
//
|
||||
// // can
|
||||
// #define CAN CAN1
|
||||
// #define CAN_RCC RCC_AHB1Periph_CAN1
|
||||
//
|
||||
// //// gpio
|
||||
// #define CAN_RX_PIN GPIO_Pin_8
|
||||
// #define CAN_RX_PORT GPIOB
|
||||
// #define CAN_RX_IO_RCC RCC_AHB1Periph_GPIOB
|
||||
// #define CAN_RX_PIN_SOURCE GPIO_PinSource8
|
||||
// #define CAN_RX_AF_SOURCE GPIO_AF_CAN1
|
||||
//
|
||||
// #define CAN_TX_PIN GPIO_Pin_9
|
||||
// #define CAN_TX_PORT GPIOB
|
||||
// #define CAN_TX_IO_RCC RCC_AHB1Periph_GPIOB
|
||||
// #define CAN_TX_PIN_SOURCE GPIO_PinSource9
|
||||
// #define CAN_TX_AF_SOURCE GPIO_AF_CAN1
|
||||
+169
@@ -0,0 +1,169 @@
|
||||
#pragma once
|
||||
|
||||
#define V4
|
||||
|
||||
#ifdef V3
|
||||
|
||||
#define SIN_ADC ADC1
|
||||
#define SIN_ADC_RCC RCC_APB2Periph_ADC1
|
||||
#define SIN_ADC_CHAN ADC_Channel_14
|
||||
#define SIN_PIN GPIO_Pin_4
|
||||
#define SIN_PORT GPIOC
|
||||
|
||||
#define COS_ADC ADC2
|
||||
#define COS_ADC_RCC RCC_APB2Periph_ADC2
|
||||
#define COS_ADC_CHAN ADC_Channel_15
|
||||
#define COS_PIN GPIO_Pin_5
|
||||
#define 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
|
||||
|
||||
#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_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 FB0_RES_TIM TIM2
|
||||
#define FB0_RES_TIM_AF GPIO_AF_TIM2 //sync to slave timer for resolver
|
||||
#define FB0_RES_TIM_RCC RCC_APB1Periph_TIM2
|
||||
|
||||
#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
|
||||
|
||||
#define SIN_ADC ADC1
|
||||
#define SIN_ADC_RCC RCC_APB2Periph_ADC1
|
||||
#define SIN_ADC_CHAN ADC_Channel_6
|
||||
#define SIN_PIN GPIO_Pin_6
|
||||
#define SIN_PORT GPIOA
|
||||
|
||||
#define COS_ADC ADC2
|
||||
#define COS_ADC_RCC RCC_APB2Periph_ADC2
|
||||
#define COS_ADC_CHAN ADC_Channel_7
|
||||
#define COS_PIN GPIO_Pin_7
|
||||
#define 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
|
||||
|
||||
#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_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_Z_TXEN_PIN GPIO_Pin_15
|
||||
#define FB0_Z_TXEN_PORT GPIOD
|
||||
|
||||
#define FB0_ENC_TIM TIM4
|
||||
#define FB0_ENC_TIM_AF GPIO_AF_TIM4
|
||||
#define FB0_ENC_TIM_RCC RCC_APB1Periph_TIM4
|
||||
|
||||
#define FB0_RES_TIM TIM4
|
||||
#define FB0_RES_TIM_AF GPIO_AF_TIM4 //sync to slave timer for resolver
|
||||
#define FB0_RES_TIM_RCC RCC_APB1Periph_TIM4
|
||||
|
||||
#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
|
||||
+20
-16
@@ -42,16 +42,16 @@ GLOBAL_HAL_PIN(frt_period_time);
|
||||
|
||||
//hal interface TODO: move hal interface to file
|
||||
void hal_enable_rt(){
|
||||
TIM_Cmd(TIM4, ENABLE);
|
||||
TIM_Cmd(TIM_MASTER, ENABLE);
|
||||
}
|
||||
void hal_enable_frt(){
|
||||
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
|
||||
TIM_ITConfig(TIM_SLAVE, TIM_IT_Update, ENABLE);
|
||||
}
|
||||
void hal_disable_rt(){
|
||||
TIM_Cmd(TIM4, DISABLE);
|
||||
TIM_Cmd(TIM_MASTER, DISABLE);
|
||||
}
|
||||
void hal_disable_frt(){
|
||||
TIM_ITConfig(TIM2, TIM_IT_Update, DISABLE);
|
||||
TIM_ITConfig(TIM_SLAVE, TIM_IT_Update, DISABLE);
|
||||
}
|
||||
|
||||
uint32_t hal_get_systick_value(){
|
||||
@@ -74,8 +74,8 @@ void SysTick_Handler(void)
|
||||
}
|
||||
|
||||
//20kHz
|
||||
void TIM2_IRQHandler(void){
|
||||
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
|
||||
void TIM_SLAVE_HANDLER(void){
|
||||
TIM_ClearITPendingBit(TIM_SLAVE,TIM_IT_Update);
|
||||
switch(hal.frt_state){
|
||||
case FRT_STOP:
|
||||
return;
|
||||
@@ -180,18 +180,18 @@ int main(void)
|
||||
|
||||
//feedback comps
|
||||
#include "comps/adc.comp"
|
||||
#include "comps/res.comp"
|
||||
#include "comps/res.comp" //TODO: not working in v4 and v3... ref pin needs fixing
|
||||
#include "comps/enc_fb.comp"
|
||||
#include "comps/encm.comp"
|
||||
//#include "comps/encs.comp"
|
||||
//#include "comps/yaskawa.comp"
|
||||
#include "comps/hyper.comp"
|
||||
// #include "comps/encm.comp" //TODO: not working in v4
|
||||
//#include "comps/encs.comp" //TODO: not working in v4
|
||||
//#include "comps/yaskawa.comp" //TODO: not working in v4
|
||||
// #include "comps/hyper.comp" //TODO: not working in v4
|
||||
|
||||
//command comps
|
||||
#include "comps/sserial.comp"
|
||||
// #include "comps/sserial.comp" //TODO: not working in v4
|
||||
#include "comps/sim.comp"
|
||||
#include "comps/enc_cmd.comp"
|
||||
#include "comps/en.comp"
|
||||
// #include "comps/enc_cmd.comp" //TODO: not working in v4
|
||||
// #include "comps/en.comp" //TODO: not working in v4
|
||||
|
||||
//PID
|
||||
#include "comps/stp.comp"
|
||||
@@ -216,14 +216,18 @@ int main(void)
|
||||
//other comps
|
||||
#include "comps/fault.comp"
|
||||
#include "comps/term.comp"
|
||||
#include "comps/io.comp"
|
||||
#include "comps/uf.comp"
|
||||
#include "comps/freq_fb.comp"
|
||||
#include "comps/psi.comp"
|
||||
#include "comps/var.comp"
|
||||
#include "comps/i2t.comp"
|
||||
#include "comps/reslimit.comp"
|
||||
|
||||
|
||||
#ifdef V3
|
||||
#include "comps/hw/io3.comp"
|
||||
#elif defined V4
|
||||
#include "comps/hw/io4.comp"
|
||||
#endif
|
||||
|
||||
|
||||
hal_set_comp_type("net");
|
||||
|
||||
+22
-45
@@ -11,7 +11,8 @@
|
||||
|
||||
void setup(){
|
||||
//Enable clocks
|
||||
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA1 | RCC_AHB1Periph_DMA2 | RCC_AHB1Periph_CRC, ENABLE);
|
||||
//TODO: small f4 does not have GPIOE
|
||||
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_DMA1 | RCC_AHB1Periph_DMA2 | RCC_AHB1Periph_CRC, ENABLE);
|
||||
|
||||
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
|
||||
|
||||
@@ -27,70 +28,46 @@ void setup(){
|
||||
}
|
||||
|
||||
// Setup Resolver Interface
|
||||
// TIM4 triggers ADC1,ADC2(OC4) and TIM2(TRGO) at 1.2MHz
|
||||
// TIM2 OC1 generates resolver reference signal at 10kHz
|
||||
// DMA2 moves 60 samples to memory, generates transfer complete interrupt at 5kHz
|
||||
// master timer triggers ADC1,ADC2 via OC, and slave timer via TRGO at 1.2MHz
|
||||
// slave timer OC generates resolver reference signal at 10kHz, phase can be adjusted by oc value
|
||||
// DMA2 moves ADC_ANZ samples to memory, generates transfer complete interrupt at 5kHz
|
||||
void setup_res(){
|
||||
//master timer
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
|
||||
RCC_APB1PeriphClockCmd(TIM_MASTER_RCC, ENABLE);
|
||||
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
|
||||
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
|
||||
TIM_TimeBaseStructure.TIM_Period = 70 - 1;// 84e6 / 70 = 1.2MHz
|
||||
TIM_TimeBaseStructure.TIM_Prescaler = 0;
|
||||
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
|
||||
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
|
||||
TIM_ARRPreloadConfig(TIM4,ENABLE);
|
||||
TIM_SelectOutputTrigger(TIM4, TIM_TRGOSource_Update);// trigger ADC
|
||||
|
||||
// debug tim4
|
||||
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
|
||||
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||
// GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
// GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
// GPIO_Init(GPIOB, &GPIO_InitStructure);
|
||||
// GPIO_PinAFConfig(GPIOB, GPIO_PinSource9, GPIO_AF_TIM4);
|
||||
TIM_TimeBaseInit(TIM_MASTER, &TIM_TimeBaseStructure);
|
||||
TIM_ARRPreloadConfig(TIM_MASTER,ENABLE);
|
||||
TIM_SelectOutputTrigger(TIM_MASTER, TIM_TRGOSource_Update);// trigger ADC
|
||||
|
||||
//oc4 for adc trigger
|
||||
//oc for adc trigger
|
||||
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
|
||||
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
||||
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
|
||||
TIM_OCInitStructure.TIM_Pulse = 1;
|
||||
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
|
||||
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
|
||||
|
||||
TIM_OC4Init(TIM4, &TIM_OCInitStructure);
|
||||
TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable);
|
||||
TIM_CtrlPWMOutputs(TIM4, ENABLE);
|
||||
//ADC trigger OC depends on timer
|
||||
TIM_MASTER_ADC_OC_INIT(TIM_MASTER, &TIM_OCInitStructure);
|
||||
TIM_MASTER_ADC_OC_PRELOAD(TIM_MASTER, TIM_OCPreload_Enable);
|
||||
TIM_CtrlPWMOutputs(TIM_MASTER, ENABLE);
|
||||
|
||||
//slave timer
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
|
||||
RCC_APB1PeriphClockCmd(TIM_SLAVE_RCC, ENABLE);
|
||||
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
|
||||
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
|
||||
TIM_TimeBaseStructure.TIM_Period = 60 - 1;// 1.2e6 / 60 = 20kHz
|
||||
TIM_TimeBaseStructure.TIM_Prescaler = 0;
|
||||
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
|
||||
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
|
||||
TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_External1);//Rising edges of the selected trigger (TRGI) clock the counter
|
||||
TIM_ITRxExternalClockConfig(TIM2, TIM_TS_ITR3);// clk = TIM4 trigger out
|
||||
TIM_ARRPreloadConfig(TIM2,ENABLE);
|
||||
TIM_TimeBaseInit(TIM_SLAVE, &TIM_TimeBaseStructure);
|
||||
TIM_SelectSlaveMode(TIM_SLAVE, TIM_SlaveMode_External1);//Rising edges of the selected trigger (TRGI) clock the counter
|
||||
TIM_ITRxExternalClockConfig(TIM_SLAVE, TIM_SLAVE_ITR);// clk = TIM_MASTER trigger out
|
||||
TIM_ARRPreloadConfig(TIM_SLAVE,ENABLE);
|
||||
|
||||
// resolver reference signal
|
||||
//TODO: move to res.comp
|
||||
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;
|
||||
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
|
||||
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
|
||||
TIM_OCInitStructure.TIM_Pulse = 5;
|
||||
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
|
||||
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
|
||||
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
|
||||
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
|
||||
|
||||
TIM_OC3Init(TIM2, &TIM_OCInitStructure);
|
||||
TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);
|
||||
TIM_CtrlPWMOutputs(TIM2, ENABLE);
|
||||
|
||||
TIM_Cmd(TIM2, ENABLE);
|
||||
TIM_Cmd(TIM_SLAVE, ENABLE);
|
||||
|
||||
/* ADC clock enable */
|
||||
RCC_APB2PeriphClockCmd(SIN_ADC_RCC | COS_ADC_RCC, ENABLE);
|
||||
@@ -110,7 +87,7 @@ void setup_res(){
|
||||
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//data converted will be shifted to right
|
||||
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;//Input voltage is converted into a 12bit number giving a maximum value of 4096
|
||||
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //the conversion is continuous, the input data is converted more than once
|
||||
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T4_CC4;//trigger on rising edge of TIM4 cc4
|
||||
ADC_InitStructure.ADC_ExternalTrigConv = TIM_MASTER_ADC;//trigger on rising edge of TIM_MASTER oc
|
||||
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising;
|
||||
ADC_InitStructure.ADC_NbrOfConversion = 1;//ADC_ANZ;//I think this one is clear :p
|
||||
ADC_InitStructure.ADC_ScanConvMode = ENABLE;//The scan is configured in one channel
|
||||
@@ -162,7 +139,7 @@ void setup_res(){
|
||||
DMA_Init(DMA2_Stream0, &DMA_InitStructure);
|
||||
|
||||
//HAL Fast realtime irq 20kHz
|
||||
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
|
||||
NVIC_InitStructure.NVIC_IRQChannel = TIM_SLAVE_IRQ;
|
||||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
|
||||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
|
||||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@
|
||||
#include "misc.h"
|
||||
#include "version.h"
|
||||
#include "common.h"
|
||||
#include "defines_res.h"
|
||||
#include "hw/hw.h"
|
||||
#define U_ID ((__IO uint32_t *)0x1FFF7A10)
|
||||
|
||||
//sample times for F4: 3,15,28,56,84,112,144,480
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ MEMORY
|
||||
BOOT (rx) : ORIGIN = 0x08000000, LENGTH = 32K/* sector 0-1 */
|
||||
PARAM0 (rx) : ORIGIN = 0x08008000, LENGTH = 16K/* sector 2 */
|
||||
PARAM1 (rx) : ORIGIN = 0x0800C000, LENGTH = 16K/* sector 3 */
|
||||
FLASH (rx) : ORIGIN = 0x08010000, LENGTH = 960K/* sector 4-11 */
|
||||
FLASH (rx) : ORIGIN = 0x08010000, LENGTH = 448K/* sector 4-11 */
|
||||
CCM (xrw) : ORIGIN = 0x10000000, LENGTH = 64k
|
||||
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 112K/*SRAM1*/
|
||||
RAM2(xrw) : ORIGIN = 0x2001C000, LENGTH = 16K/*SRAM2*/
|
||||
|
||||
@@ -10,28 +10,28 @@ d: dma request
|
||||
b: bits
|
||||
|
||||
APB2 DMA2 168 MHz
|
||||
TIM1(ac,16b,d(cc1,cc2,cc3,cc4,up,trgo,com),adc(cc1,cc2,cc3),itr(5,2,3,4)) enc_cmd
|
||||
TIM8(ac,16b,d(cc1,cc2,cc3,cc4,up,trgo,com),adc(cc1,trgo), itr(1,2,4,5)) brake/fan pwm
|
||||
TIM1(ac,16b,d(cc1,cc2,cc3,cc4,up,trgo,com),adc(cc1,cc2,cc3),itr(5,2,3,4)) enc_fb1,ch3->d54 enc_cmd
|
||||
TIM8(ac,16b,d(cc1,cc2,cc3,cc4,up,trgo,com),adc(cc1,trgo), itr(1,2,4,5)) brake/fan pwm
|
||||
TIM9(gp2,16b,itr(2,3,10,11))
|
||||
TIM10(gp3,16b)
|
||||
TIM11(gp3,16b)
|
||||
USART1 io_header,cmd_rx
|
||||
USART6
|
||||
USART1 cmd 422/485 io_header,cmd_rx
|
||||
USART6 fb0
|
||||
|
||||
APB1 DMA1 84 MHz
|
||||
TIM2(gp1,32b,d(up,cc1,cc2,cc3,cc4), adc(cc2,cc3,cc4,trgo),itr(1,8,3,4)) res_slave,res_oc
|
||||
TIM3(gp1,16b,d(cc1,cc2,cc3,cc3,up,trgo),adc(cc1,trgo), itr(1,2,5,4)) enc_fb
|
||||
TIM4(gp1,16b,d(cc1,cc2,cc3,up), adc(cc4), itr(1,2,3,8)) res_master,adc
|
||||
TIM5(gp1,32b,d(cc1,cc2,cc3,cc4,trgo), adc(cc1,cc2,cc3), itr(2,3,4,8))
|
||||
TIM2(gp1,32b,d(up,cc1,cc2,cc3,cc4), adc(cc2,cc3,cc4,trgo),itr(1,8,3,4)) enc_cmd res_slave,res_oc
|
||||
TIM3(gp1,16b,d(cc1,cc2,cc3,cc3,up,trgo),adc(cc1,trgo), itr(1,2,5,4)) adc master (cmd, pair foo) enc_fb
|
||||
TIM4(gp1,16b,d(cc1,cc2,cc3,up), adc(cc4), itr(1,2,3,8)) enc_fb0,ch3->d54 res_master,adc
|
||||
TIM5(gp1,32b,d(cc1,cc2,cc3,cc4,trgo), adc(cc1,cc2,cc3), itr(2,3,4,8)) adc slave/frt
|
||||
TIM6(ba,16b,d(up))
|
||||
TIM7(ba,16b,d(up))
|
||||
TIM12(gp2,16b, itr(4,5,13,14))
|
||||
TIM13(gp3,16b)
|
||||
TIM14(gp3,16b)
|
||||
USART2 f1_hv
|
||||
USART3 fb
|
||||
UART4
|
||||
UART5 cmd
|
||||
USART2 hv f1_hv
|
||||
USART3 fb1 fb
|
||||
UART4 (fb0)
|
||||
UART5 (fb0) cmd
|
||||
|
||||
|
||||
DMA mapping:
|
||||
@@ -47,3 +47,8 @@ s0 adc
|
||||
s1 yaskawa/probe
|
||||
s5 ext rx/sserial
|
||||
s7 ext tx
|
||||
|
||||
|
||||
f3 hv
|
||||
bemf+dclink 181.5 adc cycles = 2.5us sampling time
|
||||
temp 61.5 cycles = 0.85us sampling time
|
||||
|
||||
Reference in New Issue
Block a user