cj125 progress

This commit is contained in:
rusefi 2020-04-08 23:14:21 -04:00
parent 742bf3f8ab
commit 89474adb63
7 changed files with 71 additions and 46 deletions

View File

@ -12,10 +12,14 @@
#include "allsensors.h" #include "allsensors.h"
#include "fsio_impl.h" #include "fsio_impl.h"
#include "engine_configuration.h" #include "engine_configuration.h"
#include "cj125.h"
EXTERN_ENGINE; EXTERN_ENGINE;
void vag_18_Turbo(DECLARE_ENGINE_PARAMETER_SIGNATURE) { /**
* set engine_type 102
*/
void vag_18_Turbo(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
//Base Engine Settings //Base Engine Settings
@ -53,8 +57,6 @@ void vag_18_Turbo(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
engineConfiguration->afr.hwChannel = EFI_ADC_NONE; engineConfiguration->afr.hwChannel = EFI_ADC_NONE;
engineConfiguration->vbattAdcChannel = EFI_ADC_4; engineConfiguration->vbattAdcChannel = EFI_ADC_4;
engineConfiguration->vbattDividerCoeff = ((float) (10.0 + 33)) / 10 * 2; engineConfiguration->vbattDividerCoeff = ((float) (10.0 + 33)) / 10 * 2;
engineConfiguration->cj125ur = EFI_ADC_11;
engineConfiguration->cj125ua = EFI_ADC_12;
engineConfiguration->mafAdcChannel = EFI_ADC_8; engineConfiguration->mafAdcChannel = EFI_ADC_8;
//CAN Settings //CAN Settings
@ -90,9 +92,10 @@ void vag_18_Turbo(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
//SPI Settings //SPI Settings
engineConfiguration->is_enabled_spi_1 = true; engineConfiguration->is_enabled_spi_1 = true;
engineConfiguration->is_enabled_spi_2 = true;
engineConfiguration->is_enabled_spi_3 = false; engineConfiguration->is_enabled_spi_3 = false;
engineConfiguration->cj125SpiDevice = SPI_DEVICE_2;
cj125defaultPinout(PASS_CONFIG_PARAMETER_SIGNATURE);
engineConfiguration->cj125ur = EFI_ADC_11;
engineConfiguration->cj125CsPin = GPIOB_11; engineConfiguration->cj125CsPin = GPIOB_11;
//Digital Inputs/Outputs //Digital Inputs/Outputs
@ -111,10 +114,10 @@ void vag_18_Turbo(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
engineConfiguration->brakePedalPin = GPIOE_10; engineConfiguration->brakePedalPin = GPIOE_10;
engineConfiguration->camInputs[0] = GPIOA_2; engineConfiguration->camInputs[0] = GPIOA_2;
#if defined(STM32_HAS_GPIOG) && STM32_HAS_GPIOG #if defined(STM32_HAS_GPIOG) && STM32_HAS_GPIOG
engineConfiguration->triggerInputPins[0] = GPIOG_7; // engineConfiguration->triggerInputPins[0] = GPIOG_7;
#endif /* STM32_HAS_GPIOF */ #endif /* STM32_HAS_GPIOF */
#if defined(STM32_HAS_GPIOF) && STM32_HAS_GPIOF #if defined(STM32_HAS_GPIOF) && STM32_HAS_GPIOF
engineConfiguration->vehicleSpeedSensorInputPin = GPIOF_14; // engineConfiguration->vehicleSpeedSensorInputPin = GPIOF_14;
#endif /* STM32_HAS_GPIOF */ #endif /* STM32_HAS_GPIOF */

View File

@ -1,5 +1,5 @@
/* /*
* me7pnp.h * @file me7pnp.h
* *
* Created on: 1. mai 2019 * Created on: 1. mai 2019
* Author: Ola * Author: Ola

View File

@ -66,6 +66,7 @@
#include "test_engine.h" #include "test_engine.h"
#include "sachs.h" #include "sachs.h"
#include "vw.h" #include "vw.h"
#include "me7pnp.h"
#include "vw_b6.h" #include "vw_b6.h"
#include "daihatsu.h" #include "daihatsu.h"
#include "chevrolet_camaro_4.h" #include "chevrolet_camaro_4.h"
@ -1321,6 +1322,9 @@ void resetConfigurationExt(Logging * logger, configuration_callback_t boardCallb
case TOYOTA_JZS147: case TOYOTA_JZS147:
setToyota_jzs147EngineConfiguration(PASS_CONFIG_PARAMETER_SIGNATURE); setToyota_jzs147EngineConfiguration(PASS_CONFIG_PARAMETER_SIGNATURE);
break; break;
case VAG_18_TURBO:
vag_18_Turbo(PASS_CONFIG_PARAMETER_SIGNATURE);
break;
case TEST_33816: case TEST_33816:
setTest33816EngineConfiguration(PASS_CONFIG_PARAMETER_SIGNATURE); setTest33816EngineConfiguration(PASS_CONFIG_PARAMETER_SIGNATURE);
break; break;

View File

@ -286,7 +286,7 @@ void executeTSCommand(uint16_t subsystem, uint16_t index) {
startIdleBench(); startIdleBench();
#endif /* EFI_IDLE_CONTROL */ #endif /* EFI_IDLE_CONTROL */
} else if (subsystem == 0x18) { } else if (subsystem == 0x18) {
#if EFI_CJ125 #if EFI_CJ125 && HAL_USE_SPI
cjCalibrate(); cjCalibrate();
#endif /* EFI_CJ125 */ #endif /* EFI_CJ125 */
} else if (subsystem == 0x20 && index == 0x3456) { } else if (subsystem == 0x20 && index == 0x3456) {

View File

@ -1,6 +1,10 @@
/* /*
* @file CJ125.cpp * @file CJ125.cpp
* *
* https://github.com/rusefi/rusefi/tree/master/hardware/CJ125_board
*
* https://github.com/rusefi/hw_modular/tree/master/cj125_Module
*
* @date: Jun 24, 2016 * @date: Jun 24, 2016
* @author Andrey Belomutskiy, (c) 2012-2020 * @author Andrey Belomutskiy, (c) 2012-2020
* *
@ -11,19 +15,17 @@
#include "pwm_generator.h" #include "pwm_generator.h"
#include "rpm_calculator.h" #include "rpm_calculator.h"
EXTERN_ENGINE;
#if EFI_CJ125 && HAL_USE_SPI #if EFI_CJ125 && HAL_USE_SPI
#include "adc_inputs.h" #include "adc_inputs.h"
#if EFI_PROD_CODE
#include "mpu_util.h" #include "mpu_util.h"
#endif
//#define CJ125_DEBUG //#define CJ125_DEBUG
//#define CJ125_DEBUG_SPI //#define CJ125_DEBUG_SPI
EXTERN_ENGINE;
#include "hardware.h" #include "hardware.h"
#include "backup_ram.h" #include "backup_ram.h"
#include "pin_repository.h" #include "pin_repository.h"
@ -154,10 +156,22 @@ static uint32_t get16bitFromVoltage(float v) {
return (uint32_t)(v * CJ125_VOLTAGE_TO_16BIT_FACTOR); return (uint32_t)(v * CJ125_VOLTAGE_TO_16BIT_FACTOR);
} }
static void cjPrintState() {
scheduleMsg(logger, "cj125: state=%d diag=0x%x (vUa=%.3f vUr=%.3f) (vUaCal=%.3f vUrCal=%.3f)",
globalInstance.state, globalInstance.diag,
globalInstance.vUa, globalInstance.vUr,
globalInstance.vUaCal, globalInstance.vUrCal);
}
static void cjInfo() {
cjPrintState();
printSpiConfig(logger, "cj125", CONFIG(cj125SpiDevice));
}
static void cjPrintData(void) { static void cjPrintData(void) {
#ifdef CJ125_DEBUG if (engineConfiguration->isCJ125Verbose) {
scheduleMsg(logger, "cj125: state=%d diag=0x%x (vUa=%.3f vUr=%.3f) (vUaCal=%.3f vUrCal=%.3f)", state, globalInstance.diag, vUa, vUr, globalInstance.vUaCal, globalInstance.vUrCal); cjPrintState();
#endif }
} }
static void cjPrintErrorCode(cj125_error_e errCode) { static void cjPrintErrorCode(cj125_error_e errCode) {
@ -320,35 +334,13 @@ void CJ125::setError(cj125_error_e errCode DECLARE_ENGINE_PARAMETER_SUFFIX) {
cjWriteRegister(INIT_REG2_WR, CJ125_INIT2_RESET); cjWriteRegister(INIT_REG2_WR, CJ125_INIT2_RESET);
} }
// engineConfiguration->spi2SckMode = PAL_STM32_OTYPE_OPENDRAIN; // 4
// engineConfiguration->spi2MosiMode = PAL_STM32_OTYPE_OPENDRAIN; // 4
// engineConfiguration->spi2MisoMode = PAL_STM32_PUDR_PULLUP; // 32
// CONFIG(cj125CsPin) = GPIOA_15;
// engineConfiguration->cj125CsPinMode = OM_OPENDRAIN;
void cj125defaultPinout(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
engineConfiguration->cj125ua = EFI_ADC_13; // PC3
engineConfiguration->cj125ur = EFI_ADC_4; // PA4
CONFIG(wboHeaterPin) = GPIOC_13;
CONFIG(isCJ125Enabled) = false;
CONFIG(spi2mosiPin) = GPIOB_15;
CONFIG(spi2misoPin) = GPIOB_14;
CONFIG(spi2sckPin) = GPIOB_13;
CONFIG(cj125CsPin) = GPIOB_0;
CONFIG(isCJ125Enabled) = true;
CONFIG(is_enabled_spi_2) = true;
}
static void cjStartSpi(DECLARE_ENGINE_PARAMETER_SIGNATURE) { static void cjStartSpi(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
globalInstance.cj125Cs.initPin("cj125 CS", CONFIG(cj125CsPin), globalInstance.cj125Cs.initPin("cj125 CS", CONFIG(cj125CsPin),
&engineConfiguration->cj125CsPinMode); &engineConfiguration->cj125CsPinMode);
// Idle CS pin - SPI CS is high when idle // Idle CS pin - SPI CS is high when idle
globalInstance.cj125Cs.setValue(true); globalInstance.cj125Cs.setValue(true);
cj125spicfg.cr1 += getSpiPrescaler(_150KHz, engineConfiguration->cj125SpiDevice); cj125spicfg.cr1 += getSpiPrescaler(_150KHz, CONFIG(cj125SpiDevice));
cj125spicfg.ssport = getHwPort("cj125", CONFIG(cj125CsPin)); cj125spicfg.ssport = getHwPort("cj125", CONFIG(cj125CsPin));
cj125spicfg.sspad = getHwPin("cj125", CONFIG(cj125CsPin)); cj125spicfg.sspad = getHwPin("cj125", CONFIG(cj125CsPin));
@ -357,7 +349,7 @@ static void cjStartSpi(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
// error already reported // error already reported
return; return;
} }
scheduleMsg(logger, "cj125: Starting SPI driver"); scheduleMsg(logger, "cj125: Starting SPI driver %s", getSpi_device_e(engineConfiguration->cj125SpiDevice));
spiStart(driver, &cj125spicfg); spiStart(driver, &cj125spicfg);
} }
@ -491,10 +483,12 @@ static void cjStartCalibration(void) {
globalInstance.state = CJ125_CALIBRATION; globalInstance.state = CJ125_CALIBRATION;
} }
static void cjStartTest(void) { static void cjRestart(void) {
if (!cjCheckConfig()) if (!cjCheckConfig())
return; return;
globalInstance.state = CJ125_INIT; globalInstance.state = CJ125_INIT;
globalInstance.errorCode = CJ125_NO_ERROR;
cjInfo();
} }
#endif /* EFI_UNIT_TEST */ #endif /* EFI_UNIT_TEST */
@ -527,7 +521,7 @@ float cjGetAfr(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
return globalInstance.lambda * CJ125_STOICH_RATIO; return globalInstance.lambda * CJ125_STOICH_RATIO;
} }
bool cjHasAfrSensor(DECLARE_ENGINE_PARAMETER_SIGNATURE) { bool cjHasAfrSensor(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
if (!CONFIG(isCJ125Enabled)) if (!CONFIG(isCJ125Enabled))
return false; return false;
return globalInstance.isValidState(); return globalInstance.isValidState();
@ -588,10 +582,34 @@ void initCJ125(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) {
addConsoleActionI("cj125_set_init2", cjSetInit2); addConsoleActionI("cj125_set_init2", cjSetInit2);
#endif /* CJ125_DEBUG */ #endif /* CJ125_DEBUG */
addConsoleAction("cj125", cjStartTest); addConsoleAction("cj125_info", cjInfo);
addConsoleAction("cj125_restart", cjRestart);
addConsoleAction("cj125_calibrate", cjStartCalibration); addConsoleAction("cj125_calibrate", cjStartCalibration);
chThdCreateStatic(cj125ThreadStack, sizeof(cj125ThreadStack), LOWPRIO, (tfunc_t)(void*) cjThread, NULL); chThdCreateStatic(cj125ThreadStack, sizeof(cj125ThreadStack), LOWPRIO, (tfunc_t)(void*) cjThread, NULL);
} }
#endif /* EFI_CJ125 && HAL_USE_SPI */ #endif /* EFI_CJ125 && HAL_USE_SPI */
#if EFI_CJ125
// engineConfiguration->spi2SckMode = PAL_STM32_OTYPE_OPENDRAIN; // 4
// engineConfiguration->spi2MosiMode = PAL_STM32_OTYPE_OPENDRAIN; // 4
// engineConfiguration->spi2MisoMode = PAL_STM32_PUDR_PULLUP; // 32
// CONFIG(cj125CsPin) = GPIOA_15;
// engineConfiguration->cj125CsPinMode = OM_OPENDRAIN;
void cj125defaultPinout(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
engineConfiguration->cj125ua = EFI_ADC_13; // PC3
engineConfiguration->cj125ur = EFI_ADC_4; // PA4
CONFIG(wboHeaterPin) = GPIOC_13;
CONFIG(spi2mosiPin) = GPIOB_15;
CONFIG(spi2misoPin) = GPIOB_14;
CONFIG(spi2sckPin) = GPIOB_13;
CONFIG(cj125CsPin) = GPIOB_0;
CONFIG(isCJ125Enabled) = true;
CONFIG(is_enabled_spi_2) = true;
CONFIG(cj125SpiDevice) = SPI_DEVICE_2;
}
#endif /* EFI_CJ125 */

View File

@ -106,5 +106,5 @@ void initCJ125(Logging *shared DECLARE_ENGINE_PARAMETER_SUFFIX);
void cjCalibrate(void); void cjCalibrate(void);
float cjGetAfr(DECLARE_ENGINE_PARAMETER_SIGNATURE); float cjGetAfr(DECLARE_ENGINE_PARAMETER_SIGNATURE);
bool cjHasAfrSensor(DECLARE_ENGINE_PARAMETER_SIGNATURE); bool cjHasAfrSensor(DECLARE_CONFIG_PARAMETER_SIGNATURE);
void cj125defaultPinout(); void cj125defaultPinout(DECLARE_CONFIG_PARAMETER_SIGNATURE);

View File

@ -86,7 +86,7 @@
#define EFI_IDLE_PID_CIC FALSE #define EFI_IDLE_PID_CIC FALSE
#define EFI_MAIN_RELAY_CONTROL FALSE #define EFI_MAIN_RELAY_CONTROL FALSE
#define EFI_HIP_9011 TRUE #define EFI_HIP_9011 TRUE
#define EFI_CJ125 FALSE #define EFI_CJ125 TRUE
#define EFI_CAN_SUPPORT FALSE #define EFI_CAN_SUPPORT FALSE
#define EFI_MAX_31855 FALSE #define EFI_MAX_31855 FALSE