From afc1409795e57a7bfc673840ed52f4abc4b69fd7 Mon Sep 17 00:00:00 2001 From: rusefillc Date: Sat, 7 Aug 2021 02:46:35 -0400 Subject: [PATCH] NB1 --- .../config/boards/hellen/hellen-nb1/board.mk | 42 ++++ .../hellen/hellen-nb1/board_configuration.cpp | 185 ++++++++++++++++++ .../hellen/hellen-nb1/compile_hellen-nb1.sh | 8 + .../boards/hellen/hellen-nb1/knock_config.h | 16 ++ .../boards/hellen/hellen-nb1/prepend.txt | 28 +++ 5 files changed, 279 insertions(+) create mode 100644 firmware/config/boards/hellen/hellen-nb1/board.mk create mode 100644 firmware/config/boards/hellen/hellen-nb1/board_configuration.cpp create mode 100644 firmware/config/boards/hellen/hellen-nb1/compile_hellen-nb1.sh create mode 100644 firmware/config/boards/hellen/hellen-nb1/knock_config.h create mode 100644 firmware/config/boards/hellen/hellen-nb1/prepend.txt diff --git a/firmware/config/boards/hellen/hellen-nb1/board.mk b/firmware/config/boards/hellen/hellen-nb1/board.mk new file mode 100644 index 0000000000..66272ed1db --- /dev/null +++ b/firmware/config/boards/hellen/hellen-nb1/board.mk @@ -0,0 +1,42 @@ +# Combine the related files for a specific platform and MCU. + +# Target ECU board design +BOARDCPPSRC = $(BOARDS_DIR)/hellen/hellen64_miataNA6_94/board_configuration.cpp +BOARDINC = $(BOARDS_DIR)/hellen/hellen64_miataNA6_94 + +# Set this if you want a default engine type other than normal hellen64_miataNA6_94 +ifeq ($(DEFAULT_ENGINE_TYPE),) + DEFAULT_ENGINE_TYPE = -DDEFAULT_ENGINE_TYPE=HELLEN_NA6 +endif + +ifeq ($(LED_CRITICAL_ERROR_BRAIN_PIN),) + LED_CRITICAL_ERROR_BRAIN_PIN = -DLED_CRITICAL_ERROR_BRAIN_PIN=GPIOH_8 +endif + +ifeq ($(LED_COMMUNICATION_BRAIN_PIN),) + LED_COMMUNICATION_BRAIN_PIN = -DEFI_COMMUNICATION_PIN=GPIOH_10 +endif + +DDEFS += -DEFI_MAIN_RELAY_CONTROL=TRUE + +DDEFS += -DLED_ERROR_BRAIN_PIN_MODE=INVERTED_OUTPUT +DDEFS += -DLED_RUNING_BRAIN_PIN_MODE=INVERTED_OUTPUT +DDEFS += -DLED_WARNING_BRAIN_PIN_MODE=INVERTED_OUTPUT +DDEFS += -DLED_COMMUNICATION_BRAIN_PIN_MODE=INVERTED_OUTPUT + +# Disable serial ports on this board as UART3 causes a DMA conflict with the SD card +DDEFS += -DTS_NO_PRIMARY -DTS_NO_SECONDARY + +# Add them all together +DDEFS += -DEFI_USE_OSC=TRUE -DFIRMWARE_ID=\"hellenNA6\" $(DEFAULT_ENGINE_TYPE) $(LED_CRITICAL_ERROR_BRAIN_PIN) $(LED_COMMUNICATION_BRAIN_PIN) +DDEFS += -DEFI_SOFTWARE_KNOCK=TRUE -DSTM32_ADC_USE_ADC3=TRUE +DDEFS += -DEFI_ICU_INPUTS=FALSE -DHAL_TRIGGER_USE_PAL=TRUE -DHAL_VSS_USE_PAL=TRUE +# todo: is it broken? +DDEFS += -DEFI_LOGIC_ANALYZER=FALSE + +# We are running on Hellen-One hardware! +DDEFS += -DHW_HELLEN=1 + +# Shared variables +ALLCPPSRC += $(BOARDCPPSRC) +ALLINC += $(BOARDINC) diff --git a/firmware/config/boards/hellen/hellen-nb1/board_configuration.cpp b/firmware/config/boards/hellen/hellen-nb1/board_configuration.cpp new file mode 100644 index 0000000000..92945b4ea1 --- /dev/null +++ b/firmware/config/boards/hellen/hellen-nb1/board_configuration.cpp @@ -0,0 +1,185 @@ +/** + * @file boards/hellen/hellen64_miataNA6_94/board_configuration.cpp + * + * + * @brief Configuration defaults for the hellen64_miataNA6_94 board + * + * See https://rusefi.com/s/hellenNA6 + * + * @author andreika + * @author Andrey Belomutskiy, (c) 2012-2020 + */ + +#include "pch.h" +#include "fsio_impl.h" + +static void setInjectorPins() { + engineConfiguration->injectionPins[0] = GPIOG_7; + engineConfiguration->injectionPins[1] = GPIOG_8; + engineConfiguration->injectionPins[2] = GPIOD_11; + engineConfiguration->injectionPins[3] = GPIOD_10; + + //engineConfiguration->injectionPins[4] = GPIOD_9; + //engineConfiguration->injectionPins[5] = GPIOF_12; + //engineConfiguration->injectionPins[6] = GPIOF_13; + //engineConfiguration->injectionPins[7] = GPIOF_14; + + // Disable remainder + for (int i = 4; i < MAX_CYLINDER_COUNT;i++) { + engineConfiguration->injectionPins[i] = GPIO_UNASSIGNED; + } + + engineConfiguration->injectionPinMode = OM_DEFAULT; + + engineConfiguration->clutchDownPin = GPIOC_4; // Clutch switch input + engineConfiguration->clutchDownPinMode = PI_PULLDOWN; + engineConfiguration->launchActivationMode = CLUTCH_INPUT_LAUNCH; + engineConfiguration->malfunctionIndicatorPin = GPIOG_4; //1E - Check Engine Light +} + +static void setIgnitionPins() { + engineConfiguration->ignitionPins[0] = GPIOI_8; // 3F - IGN_1 (1&4) + engineConfiguration->ignitionPins[1] = GPIO_UNASSIGNED ; // GPIOE_4 + engineConfiguration->ignitionPins[2] = GPIOE_5; // 3I - IGN_2 (2&3) + engineConfiguration->ignitionPins[3] = GPIO_UNASSIGNED; // GPIOE_3 + + //engineConfiguration->ignitionPins[4] = GPIOE_2; + //engineConfiguration->ignitionPins[5] = GPIOI_5; + //engineConfiguration->ignitionPins[6] = GPIOI_6; + //engineConfiguration->ignitionPins[7] = GPIOI_7; + + // disable remainder + for (int i = 4; i < MAX_CYLINDER_COUNT; i++) { + engineConfiguration->ignitionPins[i] = GPIO_UNASSIGNED; + } + + engineConfiguration->ignitionPinMode = OM_DEFAULT; +} + +static void setLedPins() { +#ifdef EFI_COMMUNICATION_PIN + engineConfiguration->communicationLedPin = EFI_COMMUNICATION_PIN; +#else + engineConfiguration->communicationLedPin = GPIOH_10; +#endif /* EFI_COMMUNICATION_PIN */ + engineConfiguration->runningLedPin = GPIOH_9; // green + engineConfiguration->warningLedPin = GPIOH_11; // yellow +} + +static void setupVbatt() { + // 4.7k high side/4.7k low side = 2.0 ratio divider + engineConfiguration->analogInputDividerCoefficient = 2.0f; + + // set vbatt_divider 5.835 + // 33k / 6.8k + engineConfiguration->vbattDividerCoeff = (33 + 6.8) / 6.8; // 5.835 + + // pin input +12 from Main Relay + engineConfiguration->vbattAdcChannel = EFI_ADC_5; // 4T + + engineConfiguration->adcVcc = 3.29f; +} + +static void setupDefaultSensorInputs() { + // trigger inputs, hall + engineConfiguration->triggerInputPins[0] = GPIOA_6; + engineConfiguration->triggerInputPins[1] = GPIOB_1; + engineConfiguration->triggerInputPins[2] = GPIO_UNASSIGNED; + engineConfiguration->camInputs[0] = GPIO_UNASSIGNED; + + engineConfiguration->tps1_1AdcChannel = EFI_ADC_4; + engineConfiguration->tps2_1AdcChannel = EFI_ADC_NONE; + + engineConfiguration->mafAdcChannel = EFI_ADC_10; + engineConfiguration->map.sensor.hwChannel = EFI_ADC_11; + + engineConfiguration->afr.hwChannel = EFI_ADC_1; + + engineConfiguration->clt.adcChannel = EFI_ADC_12; + + engineConfiguration->iat.adcChannel = EFI_ADC_13; + + engineConfiguration->auxTempSensor1.adcChannel = EFI_ADC_NONE; + engineConfiguration->auxTempSensor2.adcChannel = EFI_ADC_NONE; +} + +void setBoardConfigOverrides(void) { + setLedPins(); + setupVbatt(); + setSdCardConfigurationOverrides(); + + engineConfiguration->clt.config.bias_resistor = 4700; + engineConfiguration->iat.config.bias_resistor = 4700; + + engineConfiguration->canTxPin = GPIOD_1; + engineConfiguration->canRxPin = GPIOD_0; +} + +void setPinConfigurationOverrides(void) { +} + +void setSerialConfigurationOverrides(void) { + engineConfiguration->useSerialPort = false; + engineConfiguration->binarySerialTxPin = GPIO_UNASSIGNED; + engineConfiguration->binarySerialRxPin = GPIO_UNASSIGNED; +// engineConfiguration->consoleSerialTxPin = GPIO_UNASSIGNED; +// engineConfiguration->consoleSerialRxPin = GPIO_UNASSIGNED; +} + + +/** + * @brief Board-specific configuration defaults. + * + * See also setDefaultEngineConfiguration + * + * @todo Add your board-specific code, if any. + */ +void setBoardDefaultConfiguration(void) { + setInjectorPins(); + setIgnitionPins(); + + engineConfiguration->isSdCardEnabled = true; + + CONFIG(enableSoftwareKnock) = true; + + engineConfiguration->acRelayPin = GPIOH_15; // 1J - AC Relay + engineConfiguration->fuelPumpPin = GPIOG_2; // OUT_IO9 + engineConfiguration->idle.solenoidPin = GPIOD_14; // OUT_PWM5 + engineConfiguration->fanPin = GPIOD_12; // OUT_PWM8 + engineConfiguration->mainRelayPin = GPIOI_2; // OUT_LOW3 + + // "required" hardware is done - set some reasonable defaults + setupDefaultSensorInputs(); + + // Some sensible defaults for other options + setOperationMode(engineConfiguration, FOUR_STROKE_CRANK_SENSOR); + engineConfiguration->trigger.type = TT_TOOTHED_WHEEL_60_2; + engineConfiguration->useOnlyRisingEdgeForTrigger = true; + setAlgorithm(LM_SPEED_DENSITY PASS_CONFIG_PARAMETER_SUFFIX); + + engineConfiguration->specs.cylindersCount = 4; + engineConfiguration->specs.firingOrder = FO_1_3_4_2; + + engineConfiguration->ignitionMode = IM_INDIVIDUAL_COILS; // IM_WASTED_SPARK + engineConfiguration->crankingInjectionMode = IM_SIMULTANEOUS; + engineConfiguration->injectionMode = IM_SIMULTANEOUS;//IM_BATCH;// IM_SEQUENTIAL; +} + +/** + * @brief Board-specific SD card configuration code overrides. Needed by bootloader code. + * @todo Add your board-specific code, if any. + */ +void setSdCardConfigurationOverrides(void) { + engineConfiguration->sdCardSpiDevice = SPI_DEVICE_3; + + engineConfiguration->spi3mosiPin = GPIOC_12; + engineConfiguration->spi3misoPin = GPIOC_11; + engineConfiguration->spi3sckPin = GPIOC_10; + engineConfiguration->sdCardCsPin = GPIOA_15; + +// engineConfiguration->spi2mosiPin = GPIOB_15; +// engineConfiguration->spi2misoPin = GPIOB_14; +// engineConfiguration->spi2sckPin = GPIOB_13; +// engineConfiguration->sdCardCsPin = GPIOB_12; + CONFIG(is_enabled_spi_3) = true; +} diff --git a/firmware/config/boards/hellen/hellen-nb1/compile_hellen-nb1.sh b/firmware/config/boards/hellen/hellen-nb1/compile_hellen-nb1.sh new file mode 100644 index 0000000000..b40addc147 --- /dev/null +++ b/firmware/config/boards/hellen/hellen-nb1/compile_hellen-nb1.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +export PROJECT_BOARD=hellen/hellen-nb1 +export PROJECT_CPU=ARCH_STM32F4 +export EXTRA_PARAMS="-DSHORT_BOARD_NAME=hellenNB1" + +cd .. +bash ../common_make.sh diff --git a/firmware/config/boards/hellen/hellen-nb1/knock_config.h b/firmware/config/boards/hellen/hellen-nb1/knock_config.h new file mode 100644 index 0000000000..be15db88b1 --- /dev/null +++ b/firmware/config/boards/hellen/hellen-nb1/knock_config.h @@ -0,0 +1,16 @@ +/** + * @file knock_config.h + */ + +#pragma once + +// Knock is on ADC3 +#define KNOCK_ADC ADCD3 + +// knock 1 - pin PF7 +#define KNOCK_ADC_CH1 ADC_CHANNEL_IN5 +#define KNOCK_PIN_CH1 GPIOF_7 + +// Sample rate & time - depends on the exact MCU +#define KNOCK_SAMPLE_TIME ADC_SAMPLE_84 +#define KNOCK_SAMPLE_RATE (STM32_PCLK2 / (4 * (84 + 12))) diff --git a/firmware/config/boards/hellen/hellen-nb1/prepend.txt b/firmware/config/boards/hellen/hellen-nb1/prepend.txt new file mode 100644 index 0000000000..d60bcfa7aa --- /dev/null +++ b/firmware/config/boards/hellen/hellen-nb1/prepend.txt @@ -0,0 +1,28 @@ +#define MAIN_HELP_URL "https://rusefi.com/s/hellenNB1" + +#define ts_show_hip9011 false +#define ts_show_cj125 false + +//Jokeri says it's better with full pinout just in case +//#define ts_show_full_pinout false + +#define ts_show_lcd false +#define ts_show_joystick false +#define ts_show_egt false +#define ts_show_gps false +#define ts_show_etb_pins false +#define ts_show_analog_divider false +#define ts_show_spi true +#define ts_show_sd_card true +#define ts_show_can_pins false +#define ts_show_tunerstudio_port false +#define ts_show_can2 false +#define ts_show_software_knock true +#define ts_show_hardware_simulator false + +#define show_test_presets false +#define show_Frankenso_presets false +#define show_microRusEFI_presets false +#define show_Proteus_presets false +#define show_Hellen_presets true +#define show_HellenNA6_presets true