steps towards smarter gpio

This commit is contained in:
rusefi 2019-04-13 10:58:52 -04:00
parent ea87042798
commit db9456902f
22 changed files with 401 additions and 131 deletions

View File

@ -88,66 +88,6 @@ static const gpio_config_t gpio_default_config = {
VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH},
};
const struct tle6240_config tle6240 = {
.spi_bus = &SPID4,
.spi_config = {
.circular = false,
.end_cb = NULL,
.ssport = GPIOF,
.sspad = 0U,
.cr1 =
SPI_CR1_SSM |
SPI_CR1_SSI |
/* SPI_CR1_LSBFIRST | */
((3 << SPI_CR1_BR_Pos) & SPI_CR1_BR) | /* div = 16 */
SPI_CR1_MSTR |
/* SPI_CR1_CPOL | */ // = 0
SPI_CR1_CPHA | // = 1
0,
/* 16-bit transfer */
.cr2 = SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0
},
.direct_io = {
/* IN1 - D_TACH_OUT */
[0] = {.port = GPIOG, .pad = 2},
/* IN2..4 grounded */
[1] = {.port = NULL},
[2] = {.port = NULL},
[3] = {.port = NULL},
/* IN9 - D_INJ_5 */
[4] = {.port = GPIOD, .pad = 15},
/* IN10 - D_WASTGATE */
[5] = {.port = GPIOD, .pad = 14},
/* IN11 - D_IDLE_OPEN */
[6] = {.port = GPIOC, .pad = 6},
/* IN12 - D_IDLE_CLOSE */
[7] = {.port = GPIOC, .pad = 7},
},
.reset = {.port = GPIOG, .pad = 3}
};
const struct mc33972_config mc33972 = {
.spi_bus = &SPID4,
.spi_config = {
.circular = false,
.end_cb = NULL,
.ssport = GPIOB,
.sspad = 4U,
.cr1 =
SPI_CR1_SSM |
SPI_CR1_SSI |
/* SPI_CR1_LSBFIRST | */
((3 << SPI_CR1_BR_Pos) & SPI_CR1_BR) | /* div = 16 */
SPI_CR1_MSTR |
/* SPI_CR1_CPOL | */ /* = 0 */
SPI_CR1_CPHA | /* = 1 */
0,
/* 3 x 8-bit transfer */
.cr2 = SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0
},
};
/*==========================================================================*/
/* Driver local functions. */
/*==========================================================================*/
@ -253,9 +193,6 @@ bool mmc_lld_is_write_protected(MMCDriver *mmcp)
*/
void boardInit(void)
{
tle6240_add(0, &tle6240);
mc33972_add(0, &mc33972);
}
/**

View File

@ -13,11 +13,7 @@
#include "allsensors.h"
#include "fsio_impl.h"
#include "engine_configuration.h"
/* TLE6240 pins go right after on chips */
#define TLE6240_PIN(n) ((brain_pin_e)((int)BRAIN_PIN_LAST_ONCHIP + 1 + (n)))
/* MC33972 pins go right after TLE6240 */
#define MC33972_PIN(n) ((brain_pin_e)((int)BRAIN_PIN_LAST_ONCHIP + 1 + 16 + (n)))
#include "smart_gpio.h"
EXTERN_ENGINE;

View File

@ -123,6 +123,17 @@
//#define EFI_POTENTIOMETER FALSE
#define EFI_POTENTIOMETER TRUE
#define BOARD_TLE6240_COUNT 0
#define BOARD_MC33972_COUNT 0
#define BOARD_TLE8888_COUNT 1
// todo: move this outside of efifeatures.h
#define BOARD_EXT_GPIOCHIPS (BOARD_TLE6240_COUNT + BOARD_MC33972_COUNT + BOARD_TLE8888_COUNT)
// todo: move this outside of efifeatures.h
#define BOARD_EXT_PINREPOPINS 24
// todo: remove this, use 'BOARD_TLE8888_COUNT'
#define EFI_TLE8888 TRUE
#define EFI_ANALOG_SENSORS TRUE

View File

@ -1,6 +1,6 @@
// auto-generated from.\controllers/algo/rusefi_enums.h
// by enum2string.jar tool
// on Wed Apr 10 18:38:13 EDT 2019
// on Sat Apr 13 10:34:52 EDT 2019
// see also gen_config_and_enums.bat
@ -103,14 +103,14 @@ case NISSAN_PRIMERA:
return "NISSAN_PRIMERA";
case PROMETHEUS_DEFAULTS:
return "PROMETHEUS_DEFAULTS";
case SUBARUEJ20G_DEFAULTS:
return "SUBARUEJ20G_DEFAULTS";
case ROVER_V8:
return "ROVER_V8";
case SACHS:
return "SACHS";
case SATURN_ION_2004:
return "SATURN_ION_2004";
case SUBARUEJ20G_DEFAULTS:
return "SUBARUEJ20G_DEFAULTS";
case SUBARU_2003_WRX:
return "SUBARU_2003_WRX";
case SUZUKI_VITARA:
@ -833,6 +833,92 @@ case GPIO_INVALID:
return "GPIO_INVALID";
case GPIO_UNASSIGNED:
return "GPIO_UNASSIGNED";
case MC33972_PIN_1:
return "MC33972_PIN_1";
case MC33972_PIN_21:
return "MC33972_PIN_21";
case MC33972_PIN_22:
return "MC33972_PIN_22";
case TLE6240_PIN_1:
return "TLE6240_PIN_1";
case TLE6240_PIN_10:
return "TLE6240_PIN_10";
case TLE6240_PIN_11:
return "TLE6240_PIN_11";
case TLE6240_PIN_12:
return "TLE6240_PIN_12";
case TLE6240_PIN_13:
return "TLE6240_PIN_13";
case TLE6240_PIN_14:
return "TLE6240_PIN_14";
case TLE6240_PIN_15:
return "TLE6240_PIN_15";
case TLE6240_PIN_16:
return "TLE6240_PIN_16";
case TLE6240_PIN_2:
return "TLE6240_PIN_2";
case TLE6240_PIN_3:
return "TLE6240_PIN_3";
case TLE6240_PIN_4:
return "TLE6240_PIN_4";
case TLE6240_PIN_5:
return "TLE6240_PIN_5";
case TLE6240_PIN_6:
return "TLE6240_PIN_6";
case TLE6240_PIN_7:
return "TLE6240_PIN_7";
case TLE6240_PIN_8:
return "TLE6240_PIN_8";
case TLE6240_PIN_9:
return "TLE6240_PIN_9";
case TLE8888_PIN_1:
return "TLE8888_PIN_1";
case TLE8888_PIN_10:
return "TLE8888_PIN_10";
case TLE8888_PIN_11:
return "TLE8888_PIN_11";
case TLE8888_PIN_12:
return "TLE8888_PIN_12";
case TLE8888_PIN_13:
return "TLE8888_PIN_13";
case TLE8888_PIN_14:
return "TLE8888_PIN_14";
case TLE8888_PIN_15:
return "TLE8888_PIN_15";
case TLE8888_PIN_16:
return "TLE8888_PIN_16";
case TLE8888_PIN_17:
return "TLE8888_PIN_17";
case TLE8888_PIN_18:
return "TLE8888_PIN_18";
case TLE8888_PIN_19:
return "TLE8888_PIN_19";
case TLE8888_PIN_2:
return "TLE8888_PIN_2";
case TLE8888_PIN_20:
return "TLE8888_PIN_20";
case TLE8888_PIN_21:
return "TLE8888_PIN_21";
case TLE8888_PIN_22:
return "TLE8888_PIN_22";
case TLE8888_PIN_23:
return "TLE8888_PIN_23";
case TLE8888_PIN_24:
return "TLE8888_PIN_24";
case TLE8888_PIN_3:
return "TLE8888_PIN_3";
case TLE8888_PIN_4:
return "TLE8888_PIN_4";
case TLE8888_PIN_5:
return "TLE8888_PIN_5";
case TLE8888_PIN_6:
return "TLE8888_PIN_6";
case TLE8888_PIN_7:
return "TLE8888_PIN_7";
case TLE8888_PIN_8:
return "TLE8888_PIN_8";
case TLE8888_PIN_9:
return "TLE8888_PIN_9";
}
return NULL;
}

View File

@ -1,4 +1,4 @@
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Fri Apr 12 18:24:15 EDT 2019
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Apr 13 10:44:04 EDT 2019
// begin
#ifndef ENGINE_CONFIGURATION_GENERATED_H_
#define ENGINE_CONFIGURATION_GENERATED_H_
@ -486,7 +486,7 @@ typedef struct {
/**
* offset 58
*/
brain_pin_e fuelPumpPin;
smart_pin_e fuelPumpPin;
/**
* offset 59
*/
@ -494,7 +494,7 @@ typedef struct {
/**
* offset 60
*/
brain_pin_e malfunctionIndicatorPin;
smart_pin_e malfunctionIndicatorPin;
/**
* offset 61
*/
@ -506,7 +506,7 @@ typedef struct {
/**
* offset 63
*/
brain_pin_e fanPin;
smart_pin_e fanPin;
/**
* some cars have a switch to indicate that clutch pedal is all the way down
* offset 64
@ -2403,7 +2403,15 @@ typedef struct {
/**
* offset 4028
*/
int mainUnusedEnd[613];
spi_device_e tle6240spiDevice;
/**
* offset 4032
*/
spi_device_e mc33972spiDevice;
/**
* offset 4036
*/
int mainUnusedEnd[611];
/** total size 6480*/
} engine_configuration_s;
@ -2650,4 +2658,4 @@ typedef struct {
#endif
// end
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Fri Apr 12 18:24:15 EDT 2019
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Apr 13 10:44:04 EDT 2019

View File

@ -5,7 +5,7 @@
* @note this file should probably not include any other files
*
* @date Jan 14, 2014
* @author Andrey Belomutskiy, (c) 2012-2017
* @author Andrey Belomutskiy, (c) 2012-2019
*/
#ifndef RUSEFI_ENUMS_H_
@ -789,8 +789,59 @@ typedef enum __attribute__ ((__packed__)) {
GPIOH_14 = 128,
GPIOH_15 = 129,
/* TLE6240 pins go right after on chips */
//#define TLE6240_PIN(n) ((brain_pin_e)((int)BRAIN_PIN_LAST_ONCHIP + 1 + (n)))
TLE6240_PIN_1 = 130,
TLE6240_PIN_2 = 131,
TLE6240_PIN_3 = 132,
TLE6240_PIN_4 = 133,
TLE6240_PIN_5 = 134,
TLE6240_PIN_6 = 135,
TLE6240_PIN_7 = 136,
TLE6240_PIN_8 = 137,
TLE6240_PIN_9 = 138,
TLE6240_PIN_10 = 139,
TLE6240_PIN_11 = 140,
TLE6240_PIN_12 = 141,
TLE6240_PIN_13 = 142,
TLE6240_PIN_14 = 143,
TLE6240_PIN_15 = 144,
TLE6240_PIN_16 = 145,
/* MC33972 pins go right after TLE6240 */
//#define MC33972_PIN(n) ((brain_pin_e)((int)BRAIN_PIN_LAST_ONCHIP + 1 + 16 + (n)))
MC33972_PIN_1 = 146,
MC33972_PIN_21 = 166,
MC33972_PIN_22 = 167,
TLE8888_PIN_1 = 168,
TLE8888_PIN_2 = 169,
TLE8888_PIN_3 = 170,
TLE8888_PIN_4 = 171,
TLE8888_PIN_5 = 172,
TLE8888_PIN_6 = 173,
TLE8888_PIN_7 = 174,
TLE8888_PIN_8 = 175,
TLE8888_PIN_9 = 176,
TLE8888_PIN_10 = 177,
TLE8888_PIN_11 = 178,
TLE8888_PIN_12 = 179,
TLE8888_PIN_13 = 180,
TLE8888_PIN_14 = 181,
TLE8888_PIN_15 = 182,
TLE8888_PIN_16 = 183,
TLE8888_PIN_17 = 184,
TLE8888_PIN_18 = 185,
TLE8888_PIN_19 = 186,
TLE8888_PIN_20 = 187,
TLE8888_PIN_21 = 188,
TLE8888_PIN_22 = 189,
TLE8888_PIN_23 = 190,
TLE8888_PIN_24 = 191,
} brain_pin_e;
typedef brain_pin_e smart_pin_e;
/* Plase keep updating this define */
#define BRAIN_PIN_LAST_ONCHIP GPIOH_15

View File

@ -1323,8 +1323,8 @@
#define mainRelayPin_offset_hex 2c2
#define mainRelayPinMode_offset 752
#define mainRelayPinMode_offset_hex 2f0
#define mainUnusedEnd_offset 4028
#define mainUnusedEnd_offset_hex fbc
#define mainUnusedEnd_offset 4036
#define mainUnusedEnd_offset_hex fc4
#define malfunctionIndicatorPin_offset 660
#define malfunctionIndicatorPin_offset_hex 294
#define malfunctionIndicatorPinMode_offset 661
@ -1397,6 +1397,8 @@
#define max31855spiDevice_offset_hex 324
#define maxKnockSubDeg_offset 552
#define maxKnockSubDeg_offset_hex 228
#define mc33972spiDevice_offset 4032
#define mc33972spiDevice_offset_hex fc0
#define measureMapOnlyInOneCylinder_offset 744
#define measureMapOnlyInOneCylinder_offset_hex 2e8
#define NARROW_BAND_WIDE_BAND_CONVERSION_SIZE 8
@ -1492,6 +1494,7 @@
#define silentTriggerError_offset_hex 5b8
#define slowAdcAlpha_offset 2108
#define slowAdcAlpha_offset_hex 83c
#define smart_pin_e_enum "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
#define sparkDwellRpmBins_offset 332
#define sparkDwellRpmBins_offset_hex 14c
#define sparkDwellValues_offset 364
@ -1631,6 +1634,8 @@
#define timingMode_offset_hex 1c0
#define timingMultiplier_offset 9872
#define timingMultiplier_offset_hex 2690
#define tle6240spiDevice_offset 4028
#define tle6240spiDevice_offset_hex fbc
#define tle8888_cs_offset 3129
#define tle8888_cs_offset_hex c39
#define tle8888_csPinMode_offset 3130

View File

@ -1,5 +1,5 @@
/*
* gpio_ext.h
* @file gpio_ext.h
*
* Abstraction layer definitions for extrenal gpios
*

View File

@ -19,10 +19,6 @@
#include "gpio/mc33972.h"
#include "pin_repository.h"
#ifndef BOARD_MC33972_COUNT
#define BOARD_MC33972_COUNT 0
#endif
#if (BOARD_MC33972_COUNT > 0)
/*

View File

@ -11,6 +11,11 @@
#define HW_LAYER_MC33972_H_
#include <hal.h>
#include "efifeatures.h"
#ifndef BOARD_MC33972_COUNT
#define BOARD_MC33972_COUNT 0
#endif
#define MC33972_INPUTS 22

View File

@ -25,10 +25,6 @@
#include "gpio/tle6240.h"
#include "pin_repository.h"
#ifndef BOARD_TLE6240_COUNT
#define BOARD_TLE6240_COUNT 0
#endif
#if (BOARD_TLE6240_COUNT > 0)
/*

View File

@ -10,8 +10,13 @@
#ifndef HW_LAYER_TLE6240_H_
#define HW_LAYER_TLE6240_H_
#include "efifeatures.h"
#include <hal.h>
#ifndef BOARD_TLE6240_COUNT
#define BOARD_TLE6240_COUNT 0
#endif
#define TLE6240_OUTPUTS 16
#define TLE6240_DIRECT_OUTPUTS 8

View File

@ -16,10 +16,11 @@
#if EFI_TLE8888
/* to be removed */
/* to be moved to smart_gpio.cpp */
#include "engine_configuration.h"
/* to be moved to smart_gpio.cpp */
EXTERN_CONFIG;
#include "smart_gpio.h"
#include "hardware.h"
#include "efi_gpio.h"
@ -27,18 +28,12 @@ EXTERN_CONFIG;
#include "gpio/tle8888.h"
#include "pin_repository.h"
#if EFI_TUNER_STUDIO
#include "tunerstudio.h"
extern TunerStudioOutputChannels tsOutputChannels;
#endif /* EFI_TUNER_STUDIO */
/* TODO: move to board.h file */
#define BOARD_TLE8888_COUNT 1
#ifndef BOARD_TLE8888_COUNT
#define BOARD_TLE8888_COUNT 0
#endif
#if (BOARD_TLE8888_COUNT > 0)
/*
@ -471,6 +466,7 @@ struct gpiochip_ops tle8888_ops = {
/**
* @brief TLE8888 driver add.
* @details Checks for valid config
* @return return gpio chip base
*/
int tle8888_add(unsigned int index, const struct tle8888_config *cfg)
@ -530,9 +526,9 @@ static struct tle8888_config tle8888_cfg = {
.end_cb = NULL,
.ssport = GPIOF,
.sspad = 0U,
#if defined(STM32F405xx) || defined(STM32F407xx) || defined (STM32F469xx)
#if defined(STM_F4_FAMILY)
.cr1 =
SPI_CR1_DFF | // 16-bit transfer
SPI_CR1_16BIT_MODE |
SPI_CR1_SSM |
SPI_CR1_SSI |
SPI_CR1_LSBFIRST | //LSB first
@ -540,9 +536,10 @@ static struct tle8888_config tle8888_cfg = {
SPI_CR1_MSTR |
SPI_CR1_CPHA |
0,
.cr2 = 0
#elif defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F746xx)
.cr2 = SPI_CR2_16BIT_MODE
#elif defined(STM_F7_FAMILY)
.cr1 =
SPI_CR1_16BIT_MODE |
SPI_CR1_SSM |
SPI_CR1_SSI |
SPI_CR1_LSBFIRST |
@ -550,8 +547,7 @@ static struct tle8888_config tle8888_cfg = {
((3 << SPI_CR1_BR_Pos) & SPI_CR1_BR) |
SPI_CR1_CPHA |
0,
/* 16-bit transfer */
.cr2 = SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0
.cr2 = SPI_CR2_16BIT_MODE
#else
unexpected platform
#endif
@ -582,7 +578,8 @@ void initTle8888(DECLARE_ENGINE_PARAMETER_SIGNATURE)
return;
}
tle8888_add(0, &tle8888_cfg);
int chipBase = tle8888_add(0, &tle8888_cfg);
efiAssertVoid(OBD_PCM_Processor_Fault, chipBase == TLE8888_PIN_1, "tle8888");
/* Initial idea of gpiochips:
* _add function should be called early on board init.

View File

@ -11,6 +11,12 @@
#include "global.h"
#include <hal.h>
#include "efifeatures.h"
#ifndef BOARD_TLE8888_COUNT
#define BOARD_TLE8888_COUNT 0
#endif
#define TLE8888_OUTPUTS 24
/* 4 misc channels */
@ -48,6 +54,9 @@ extern "C"
/* cleanup !!!! */
void initTle8888(DECLARE_ENGINE_PARAMETER_SIGNATURE);
/**
* @return return gpio chip base
*/
int tle8888_add(unsigned int index, const struct tle8888_config *cfg);
#ifdef __cplusplus

View File

@ -23,7 +23,7 @@
#include "yaw_rate_sensor.h"
#include "pin_repository.h"
#include "max31855.h"
#include "tle8888.h"
#include "smart_gpio.h"
#include "accelerometer.h"
#include "eficonsole.h"
#include "console_io.h"
@ -464,16 +464,7 @@ void initHardware(Logging *l) {
initSpiModules(boardConfiguration);
#endif
#if EFI_TLE8888
if (engineConfiguration->tle8888_cs != GPIO_UNASSIGNED) {
static OutputPin tle8888Cs;
// // SPI pins are enabled in initSpiModules()
tle8888Cs.initPin("tle8888 CS", engineConfiguration->tle8888_cs,
&engineConfiguration->tle8888_csPinMode);
}
initTle8888(PASS_ENGINE_PARAMETER_SIGNATURE);
#endif
initSmartGpio(PASS_ENGINE_PARAMETER_SIGNATURE);
#if EFI_HIP_9011
initHip9011(sharedLogger);

View File

@ -14,6 +14,7 @@ HW_LAYER_EMS_CPP = $(HW_LAYER_EGT_CPP) \
$(PROJECT_DIR)/hw_layer/digital_input_hw.cpp \
$(PROJECT_DIR)/hw_layer/digital_input_exti.cpp \
$(PROJECT_DIR)/hw_layer/hardware.cpp \
$(PROJECT_DIR)/hw_layer/smart_gpio.cpp \
$(PROJECT_DIR)/hw_layer/neo6m.cpp \
$(PROJECT_DIR)/hw_layer/mmc_card.cpp \
$(PROJECT_DIR)/hw_layer/lcd/lcd_HD44780.cpp \

View File

@ -0,0 +1,109 @@
/*
* @file smart_gpio.cpp
*
* @date Apr 13, 2019
* @author Andrey Belomutskiy, (c) 2012-2019
*/
#include "global.h"
#include "smart_gpio.h"
#include "efi_gpio.h"
#include "engine_configuration.h"
#include "gpio_ext.h"
#include "drivers/gpio/tle6240.h"
#include "drivers/gpio/mc33972.h"
#include "drivers/gpio/tle8888.h"
#if EFI_PROD_CODE
EXTERN_CONFIG;
const struct tle6240_config tle6240 = {
.spi_bus = NULL /* TODO software lookup &SPID4 */,
.spi_config = {
.circular = false,
.end_cb = NULL,
.ssport = GPIOF,
.sspad = 0U,
.cr1 =
SPI_CR1_SSM |
SPI_CR1_SSI |
/* SPI_CR1_LSBFIRST | */
((3 << SPI_CR1_BR_Pos) & SPI_CR1_BR) | /* div = 16 */
SPI_CR1_MSTR |
/* SPI_CR1_CPOL | */ // = 0
SPI_CR1_CPHA | // = 1
0,
.cr2 = SPI_CR2_16BIT_MODE
},
.direct_io = {
/* IN1 - D_TACH_OUT */
[0] = {.port = GPIOG, .pad = 2},
/* IN2..4 grounded */
[1] = {.port = NULL},
[2] = {.port = NULL},
[3] = {.port = NULL},
/* IN9 - D_INJ_5 */
[4] = {.port = GPIOD, .pad = 15},
/* IN10 - D_WASTGATE */
[5] = {.port = GPIOD, .pad = 14},
/* IN11 - D_IDLE_OPEN */
[6] = {.port = GPIOC, .pad = 6},
/* IN12 - D_IDLE_CLOSE */
[7] = {.port = GPIOC, .pad = 7},
},
.reset = {.port = GPIOG, .pad = 3}
};
const struct mc33972_config mc33972 = {
.spi_bus = NULL /* TODO software lookup &SPID4 */,
.spi_config = {
.circular = false,
.end_cb = NULL,
.ssport = GPIOB,
.sspad = 4U,
.cr1 =
SPI_CR1_SSM |
SPI_CR1_SSI |
/* SPI_CR1_LSBFIRST | */
((3 << SPI_CR1_BR_Pos) & SPI_CR1_BR) | /* div = 16 */
SPI_CR1_MSTR |
/* SPI_CR1_CPOL | */ /* = 0 */
SPI_CR1_CPHA | /* = 1 */
0,
.cr2 = SPI_CR2_24BIT_MODE
},
};
#endif /* EFI_PROD_CODE */
void initSmartGpio() {
#if (BOARD_TLE6240_COUNT > 0)
tle6240.spi_bus = getSpiDevice(engineConfiguration->tle6240spiDevice);
tle6240_add(0, &tle6240);
#else
gpiochip_use_gpio_base(TLE6240_OUTPUTS);
#endif
#if (BOARD_MC33972_COUNT > 0)
mc33972.spi_bus = getSpiDevice(engineConfiguration->mc33972spiDevice);
// todo: propogate 'basePinOffset' parameter
mc33972_add(0, &mc33972);
#else
gpiochip_use_gpio_base(MC33972_INPUTS);
#endif
#if EFI_TLE8888
if (engineConfiguration->tle8888_cs != GPIO_UNASSIGNED) {
static OutputPin tle8888Cs;
// // SPI pins are enabled in initSpiModules()
tle8888Cs.initPin("tle8888 CS", engineConfiguration->tle8888_cs,
&engineConfiguration->tle8888_csPinMode);
}
initTle8888(PASS_ENGINE_PARAMETER_SIGNATURE);
#endif /* EFI_TLE8888 */
}

View File

@ -0,0 +1,49 @@
/*
* @file smart_gpio.h
*
* @date Apr 13, 2019
* @author Andrey Belomutskiy, (c) 2012-2019
*/
#ifndef HW_LAYER_SMART_GPIO_H_
#define HW_LAYER_SMART_GPIO_H_
/* TLE6240 pins go right after on chips */
#define TLE6240_PIN(n) ((brain_pin_e)((int)BRAIN_PIN_LAST_ONCHIP + 1 + (n)))
/* MC33972 pins go right after TLE6240 */
#define MC33972_PIN(n) ((brain_pin_e)((int)BRAIN_PIN_LAST_ONCHIP + 1 + 16 + (n)))
void initSmartGpio(void);
#if (defined(STM32F405xx) || defined(STM32F407xx) || defined (STM32F469xx))
#define STM_F4_FAMILY
#elif (defined(STM32F765xx) || defined(STM32F767xx) || defined(STM32F746xx))
#define STM_F7_FAMILY
#else
unexpected platform
#endif
#if EFI_TLE8888 || (BOARD_TLE6240_COUNT > 0)
#if defined(STM_F4_FAMILY)
#define SPI_CR1_16BIT_MODE SPI_CR1_DFF
#define SPI_CR2_16BIT_MODE 0
// TODO
#define SPI_CR1_24BIT_MODE 0
#define SPI_CR2_24BIT_MODE 0
#elif defined(STM_F7_FAMILY)
#define SPI_CR1_16BIT_MODE 0
#define SPI_CR2_16BIT_MODE SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0
#define SPI_CR1_24BIT_MODE 0
/* 3 x 8-bit transfer */
#define SPI_CR2_24BIT_MODE SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0
#else
unexpected platform
#endif
#endif /* EFI_TLE8888 */
#endif /* HW_LAYER_SMART_GPIO_H_ */

View File

@ -179,8 +179,13 @@ custom mass_storage_e 4 bits, U32, @OFFSET@, [0:1], @@mass_storage_e_enum@@
custom brain_input_pin_e 1 bits, U08, @OFFSET@, [0:6], @@brain_input_pin_e_enum@@
#define brain_pin_e_enum "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
custom brain_pin_e 1 bits, U08, @OFFSET@, [0:7], @@brain_pin_e_enum@@
#define smart_pin_e_enum "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
custom smart_pin_e 1 bits, U08, @OFFSET@, [0:7], @@smart_pin_e_enum@@
#define pin_output_mode_e_enum "default", "default inverted", "open collector", "open collector inverted"
custom pin_output_mode_e 1 bits, U08, @OFFSET@, [0:1], @@pin_output_mode_e_enum@@
@ -496,13 +501,13 @@ float mapFrequency100Kpa;;"Hz", 1, 0, 0, 100000, 2
brain_pin_e gps_rx_pin;
brain_pin_e gps_tx_pin;
brain_pin_e fuelPumpPin;
smart_pin_e fuelPumpPin;
pin_output_mode_e fuelPumpPinMode;
brain_pin_e malfunctionIndicatorPin;
smart_pin_e malfunctionIndicatorPin;
pin_output_mode_e malfunctionIndicatorPinMode;
pin_output_mode_e fanPinMode;
brain_pin_e fanPin;
smart_pin_e fanPin;
brain_pin_e clutchDownPin;some cars have a switch to indicate that clutch pedal is all the way down
brain_pin_e alternatorControlPin;
@ -1005,8 +1010,10 @@ tChargeMode_e tChargeMode;
float tpsAccelFractionDivisor;+A fraction divisor: 1 or less = entire portion at once, or split into diminishing fractions;"coef", 1, 0, 0, 100, 2
spi_device_e tle8888spiDevice;
spi_device_e tle6240spiDevice;
spi_device_e mc33972spiDevice;
int[613] mainUnusedEnd;
int[611] mainUnusedEnd;
end_struct

View File

@ -68,7 +68,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
; this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Fri Apr 12 18:24:15 EDT 2019
; this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Apr 13 10:44:04 EDT 2019
pageSize = 20000
page = 1
@ -252,12 +252,12 @@ page = 1
HD44780_db7 = bits, U08, 655, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
gps_rx_pin = bits, U08, 656, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
gps_tx_pin = bits, U08, 657, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
fuelPumpPin = bits, U08, 658, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
fuelPumpPin = bits, U08, 658, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
fuelPumpPinMode = bits, U08, 659, [0:1], "default", "default inverted", "open collector", "open collector inverted"
malfunctionIndicatorPin = bits, U08, 660, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
malfunctionIndicatorPin = bits, U08, 660, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
malfunctionIndicatorPinMode = bits, U08, 661, [0:1], "default", "default inverted", "open collector", "open collector inverted"
fanPinMode = bits, U08, 662, [0:1], "default", "default inverted", "open collector", "open collector inverted"
fanPin = bits, U08, 663, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
fanPin = bits, U08, 663, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
clutchDownPin = bits, U08, 664, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
alternatorControlPin = bits, U08, 665, [0:7], "NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
alternatorControlPinMode = bits, U08, 666, [0:1], "default", "default inverted", "open collector", "open collector inverted"
@ -848,7 +848,9 @@ page = 1
tpsAccelFractionPeriod = scalar, S16, 4018, "cycles", 1, 0, 0, 500, 0
tpsAccelFractionDivisor = scalar, F32, 4020, "coef", 1, 0, 0, 100, 2
tle8888spiDevice = bits,U32, 4024, [0:1], "Off", "SPI1", "SPI2", "SPI3"
;no TS info - skipping mainUnusedEnd offset 4028
tle6240spiDevice = bits,U32, 4028, [0:1], "Off", "SPI1", "SPI2", "SPI3"
mc33972spiDevice = bits,U32, 4032, [0:1], "Off", "SPI1", "SPI2", "SPI3"
;no TS info - skipping mainUnusedEnd offset 4036
cltCrankingCorrBins = array, F32, 6480, [8], "C", 1, 0, -100.0, 250.0, 2
cltCrankingCorr = array, F32, 6512, [8], "%", 1, 0, 0.0, 500.0, 2
idleAdvanceBins = array, F32, 6544, [8], "RPM", 1, 0, 0.0, 18000, 2
@ -2413,6 +2415,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
dialog = allPins1
field = "TLE8888 CS", tle8888_cs
field = "TLE8888 SPI", tle8888spiDevice
field = "tle6240 SPI", tle6240spiDevice
field = "mc33972 SPI", mc33972spiDevice
field = "warninig Led", warninigLedPin
field = "fatal Error Led", fatalErrorPin
field = "MAP ADC input", map_sensor_hwChannel

View File

@ -1504,6 +1504,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
dialog = allPins1
field = "TLE8888 CS", tle8888_cs
field = "TLE8888 SPI", tle8888spiDevice
field = "tle6240 SPI", tle6240spiDevice
field = "mc33972 SPI", mc33972spiDevice
field = "warninig Led", warninigLedPin
field = "fatal Error Led", fatalErrorPin
field = "MAP ADC input", map_sensor_hwChannel

View File

@ -1,6 +1,6 @@
package com.rusefi.config;
// this file was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Thu Apr 11 23:16:46 EDT 2019
// this file was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Apr 13 10:44:04 EDT 2019
public class Fields {
public static final int accelerometerSpiDevice_offset = 2736;
public static final int acCutoffHighRpm_offset = 1498;
@ -861,7 +861,7 @@ public class Fields {
public static final int mafSensorType_offset = 948;
public static final int mainRelayPin_offset = 706;
public static final int mainRelayPinMode_offset = 752;
public static final int mainUnusedEnd_offset = 4028;
public static final int mainUnusedEnd_offset = 4036;
public static final int malfunctionIndicatorPin_offset = 660;
public static final int malfunctionIndicatorPin_offset_hex = 294;
public static final int malfunctionIndicatorPinMode_offset = 661;
@ -913,6 +913,7 @@ public class Fields {
public static final int max31855spiDevice_offset_hex = 324;
public static final int maxKnockSubDeg_offset = 552;
public static final int maxKnockSubDeg_offset_hex = 228;
public static final int mc33972spiDevice_offset = 4032;
public static final int measureMapOnlyInOneCylinder_offset = 744;
public static final int NARROW_BAND_WIDE_BAND_CONVERSION_SIZE = 8;
public static final int narrowToWideOxygen_offset = 2320;
@ -1048,6 +1049,7 @@ public class Fields {
public static final int timingMode_offset = 448;
public static final int timingMultiplier_offset = 9872;
public static final int timingMultiplier_offset_hex = 2690;
public static final int tle6240spiDevice_offset = 4028;
public static final int tle8888_cs_offset = 3129;
public static final int tle8888_csPinMode_offset = 3130;
public static final int tle8888spiDevice_offset = 4024;
@ -1374,12 +1376,13 @@ public class Fields {
public static final Field HD44780_DB7 = Field.create("HD44780_DB7", 655, FieldType.INT8, brain_pin_e);
public static final Field GPS_RX_PIN = Field.create("GPS_RX_PIN", 656, FieldType.INT8, brain_pin_e);
public static final Field GPS_TX_PIN = Field.create("GPS_TX_PIN", 657, FieldType.INT8, brain_pin_e);
public static final Field FUELPUMPPIN = Field.create("FUELPUMPPIN", 658, FieldType.INT8, brain_pin_e);
public static final String[] smart_pin_e = {"NONE", "INVALID", "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6","PE7","PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15", "PF0","PF1","PF2","PF3","PF4","PF5","PF6","PF7","PF8","PF9","PF10","PF11","PF12","PF13","PF14","PF15", "PG0","PG1","PG2","PG3","PG4","PG5","PG6","PG7","PG8","PG9","PG10","PG11","PG12","PG13","PG14","PG15", "PH0","PH1","PH2","PH3","PH4","PH5","PH6","PH7","PH8","PH9","PH10","PH11","PH12","PH13","PH14","PH15","TLE6240_1", "TLE6240_2", "TLE6240_3", "TLE6240_4", "TLE6240_5", "TLE6240_6", "TLE6240_7", "TLE6240_8", "TLE6240_9", "TLE6240_10", "TLE6240_11", "TLE6240_12", "TLE6240_13", "TLE6240_14", "TLE6240_15", "TLE6240_16", "MC33972_1", "MC33972_2", "MC33972_3", "MC33972_4", "MC33972_5", "MC33972_6", "MC33972_7", "MC33972_8", "MC33972_9", "MC33972_10", "MC33972_11", "MC33972_12", "MC33972_13", "MC33972_14", "MC33972_15", "MC33972_16", "MC33972_17", "MC33972_18", "MC33972_19", "MC33972_20", "MC33972_21", "MC33972_22", "TLE8888_1", "TLE8888_2", "TLE8888_3", "TLE8888_4", "TLE8888_5", "TLE8888_6", "TLE8888_7", "TLE8888_8", "TLE8888_9", "TLE8888_10", "TLE8888_11", "TLE8888_12", "TLE8888_13", "TLE8888_14", "TLE8888_15", "TLE8888_16", "TLE8888_17", "TLE8888_18", "TLE8888_19", "TLE8888_20", "TLE8888_21", "TLE8888_22", "TLE8888_23", "TLE8888_24", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"};
public static final Field FUELPUMPPIN = Field.create("FUELPUMPPIN", 658, FieldType.INT8, smart_pin_e);
public static final Field FUELPUMPPINMODE = Field.create("FUELPUMPPINMODE", 659, FieldType.INT8, pin_output_mode_e);
public static final Field MALFUNCTIONINDICATORPIN = Field.create("MALFUNCTIONINDICATORPIN", 660, FieldType.INT8, brain_pin_e);
public static final Field MALFUNCTIONINDICATORPIN = Field.create("MALFUNCTIONINDICATORPIN", 660, FieldType.INT8, smart_pin_e);
public static final Field MALFUNCTIONINDICATORPINMODE = Field.create("MALFUNCTIONINDICATORPINMODE", 661, FieldType.INT8, pin_output_mode_e);
public static final Field FANPINMODE = Field.create("FANPINMODE", 662, FieldType.INT8, pin_output_mode_e);
public static final Field FANPIN = Field.create("FANPIN", 663, FieldType.INT8, brain_pin_e);
public static final Field FANPIN = Field.create("FANPIN", 663, FieldType.INT8, smart_pin_e);
public static final Field CLUTCHDOWNPIN = Field.create("CLUTCHDOWNPIN", 664, FieldType.INT8, brain_pin_e);
public static final Field ALTERNATORCONTROLPIN = Field.create("ALTERNATORCONTROLPIN", 665, FieldType.INT8, brain_pin_e);
public static final Field ALTERNATORCONTROLPINMODE = Field.create("ALTERNATORCONTROLPINMODE", 666, FieldType.INT8, pin_output_mode_e);
@ -1937,6 +1940,8 @@ public class Fields {
public static final Field TPSACCELFRACTIONPERIOD = Field.create("TPSACCELFRACTIONPERIOD", 4018, FieldType.INT16);
public static final Field TPSACCELFRACTIONDIVISOR = Field.create("TPSACCELFRACTIONDIVISOR", 4020, FieldType.FLOAT);
public static final Field TLE8888SPIDEVICE = Field.create("TLE8888SPIDEVICE", 4024, FieldType.INT);
public static final Field TLE6240SPIDEVICE = Field.create("TLE6240SPIDEVICE", 4028, FieldType.INT);
public static final Field MC33972SPIDEVICE = Field.create("MC33972SPIDEVICE", 4032, FieldType.INT);
public static final Field FSIOFORMULAS1 = Field.create("FSIOFORMULAS1", 6672, FieldType.INT);
public static final Field FSIOFORMULAS2 = Field.create("FSIOFORMULAS2", 6872, FieldType.INT);
public static final Field FSIOFORMULAS3 = Field.create("FSIOFORMULAS3", 7072, FieldType.INT);