we need TLE8888 driver #714

This commit is contained in:
rusefi 2019-03-25 20:30:36 -04:00
parent d7f00070e1
commit fc590524c2
9 changed files with 55 additions and 16 deletions

View File

@ -1,4 +1,4 @@
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Mon Mar 25 14:42:37 EDT 2019
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Mon Mar 25 20:15:52 EDT 2019
// begin
#ifndef ENGINE_CONFIGURATION_GENERATED_H_
#define ENGINE_CONFIGURATION_GENERATED_H_
@ -2218,7 +2218,11 @@ typedef struct {
/**
* offset 3130
*/
uint8_t unusedTest55[2];
pin_output_mode_e tle8888_csPinMode;
/**
* offset 3131
*/
uint8_t unusedTest55;
/**
* Optional timing advance table for Cranking (see useSeparateAdvanceForCranking)
* offset 3132
@ -2615,4 +2619,4 @@ typedef struct {
#endif
// end
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Mon Mar 25 14:42:37 EDT 2019
// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Mon Mar 25 20:15:52 EDT 2019

View File

@ -1584,8 +1584,10 @@
#define stepperEnablePin_offset_hex c38
#define tle8888_cs_offset 3129
#define tle8888_cs_offset_hex c39
#define unusedTest55_offset 3130
#define unusedTest55_offset_hex c3a
#define tle8888_csPinMode_offset 3130
#define tle8888_csPinMode_offset_hex c3a
#define unusedTest55_offset 3131
#define unusedTest55_offset_hex c3b
#define crankingAdvanceBins_offset 3132
#define crankingAdvanceBins_offset_hex c3c
#define crankingAdvance_offset 3148

View File

@ -778,5 +778,5 @@ int getRusEfiVersion(void) {
if (initBootloader() != 0)
return 123;
#endif /* EFI_BOOTLOADER_INCLUDE_CODE */
return 20190312;
return 20190324;
}

View File

@ -1,10 +1,16 @@
/**
*
* TLE8888 driver
*
* at the moment only Enable Outputs is implemented - this command is needed to get parallel control pins
*
* @date Mar 25, 2019
* @author Andrey Belomutskiy, (c) 2012-2019
*/
#include "engine.h"
#include "tle8888.h"
#include "hardware.h"
/**
* 15.2 SPI Frame Definition
@ -12,7 +18,7 @@
*/
#define Cmd_write_access 1
#define CmdOE 0x1C
#define DATA_OE_ENABLE 00000010b
#define DATA_OE_ENABLE 0b00000010
static unsigned char tx_buff[2];
@ -20,11 +26,31 @@ EXTERN_ENGINE;
static SPIDriver *driver;
static SPIConfig spiConfig;
static OutputPin tle8888Cs;
static SPIConfig spiConfig = { NULL,
/* HW dependent part.*/
NULL, 0, SPI_CR1_MSTR | SPI_CR1_CPHA | SPI_CR1_BR_0 | SPI_CR1_BR_1 | SPI_CR1_BR_2 };
void initTle8888(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
if (engineConfiguration->tle8888_cs == GPIO_UNASSIGNED) {
return;
}
tle8888Cs.initPin("tle8888 CS", engineConfiguration->tle8888_cs,
&engineConfiguration->tle8888_csPinMode);
//spiConfig.cr1 = SPI_BaudRatePrescaler_8;
driver = getSpiDevice(engineConfiguration->tle8888spiDevice);
spiConfig.ssport = getHwPort("tle8888", engineConfiguration->tle8888_cs);
spiConfig.sspad = getHwPin("tle8888", engineConfiguration->tle8888_cs);
spiStart(driver, &spiConfig);
tx_buff[0] = Cmd_write_access + CmdOE;
tx_buff[1] = DATA_OE_ENABLE;
// todo: extract 'sendSync' method?
spiSelect(driver);
spiSend(driver, 2, tx_buff);
spiUnselect(driver);
}

View File

@ -90,14 +90,14 @@ static int cjReadRegister(unsigned char regAddr) {
#endif /* EFI_UNIT_TEST */
}
static void cjWriteRegister(unsigned char regAddr, unsigned char regValue) {
tx_buff[0] = regAddr;
tx_buff[1] = regValue;
#ifdef CJ125_DEBUG_SPI
scheduleMsg(logger, "cjWriteRegister: addr=%d value=%d", regAddr, regValue);
#endif /* CJ125_DEBUG_SPI */
// todo: extract 'sendSync' method?
spiSelect(driver);
tx_buff[0] = regAddr;
tx_buff[1] = regValue;
spiSend(driver, 2, tx_buff);
spiUnselect(driver);
}

View File

@ -945,7 +945,8 @@ float[MAP_ACCEL_TAPER] mapAccelTaperMult;;"mult", 1, 0, 0.0, 300,
adc_channel_e externalKnockSenseAdc;
brain_pin_e stepperEnablePin;
brain_pin_e tle8888_cs;
uint8_t[2] unusedTest55;
pin_output_mode_e tle8888_csPinMode;
uint8_t[1] unusedTest55;
float[CRANKING_ADVANCE_CURVE_SIZE] crankingAdvanceBins;Optional timing advance table for Cranking (see useSeparateAdvanceForCranking);"RPM", 1, 0, 0.0, 18000, 2
float[CRANKING_ADVANCE_CURVE_SIZE] crankingAdvance ;Optional timing advance table for Cranking (see useSeparateAdvanceForCranking);"deg", 1, 0, -20, 90, 2

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 Mon Mar 25 14:42:37 EDT 2019
; this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Mon Mar 25 20:16:49 EDT 2019
pageSize = 20000
page = 1
@ -797,7 +797,8 @@ page = 1
externalKnockSenseAdc = bits, U08, 3127, [0:4] "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PB0", "PB1", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "Disabled", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
stepperEnablePin = bits, U08, 3128, [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"
tle8888_cs = bits, U08, 3129, [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"
;no TS info - skipping unusedTest55 offset 3130
tle8888_csPinMode = bits, U08, 3130, [0:1], "default", "default inverted", "open collector", "open collector inverted"
;no TS info - skipping unusedTest55 offset 3131
crankingAdvanceBins = array, F32, 3132, [4], "RPM", 1, 0, 0.0, 18000, 2
crankingAdvance = array, F32, 3148, [4], "deg", 1, 0, -20, 90, 2
servoOutputPins1 = bits, U08, 3164, [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"
@ -2543,6 +2544,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
field = "comm status light", communicationLedPin
field = "running status light", runningLedPin
field = "TLE8888 Chip Select", tle8888_cs
field = "TLE8888 CS Mode", tle8888_csPinMode
dialog = allPins1_2, "", xAxis

View File

@ -1639,6 +1639,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
field = "comm status light", communicationLedPin
field = "running status light", runningLedPin
field = "TLE8888 Chip Select", tle8888_cs
field = "TLE8888 CS Mode", tle8888_csPinMode
dialog = allPins1_2, "", xAxis

View File

@ -1,6 +1,6 @@
package com.rusefi.config;
// this file was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Mon Mar 25 14:42:37 EDT 2019
// this file was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Mon Mar 25 20:16:49 EDT 2019
public class Fields {
public static final int LE_COMMAND_LENGTH = 200;
public static final int BLOCKING_FACTOR = 400;
@ -1009,7 +1009,8 @@ public class Fields {
public static final int externalKnockSenseAdc_offset = 3127;
public static final int stepperEnablePin_offset = 3128;
public static final int tle8888_cs_offset = 3129;
public static final int unusedTest55_offset = 3130;
public static final int tle8888_csPinMode_offset = 3130;
public static final int unusedTest55_offset = 3131;
public static final int crankingAdvanceBins_offset = 3132;
public static final int crankingAdvance_offset = 3148;
public static final int servoOutputPins1_offset = 3164;
@ -1889,6 +1890,8 @@ public class Fields {
public static final Field EXTERNALKNOCKSENSEADC = Field.create("EXTERNALKNOCKSENSEADC", 3127, FieldType.INT, adc_channel_e);
public static final Field STEPPERENABLEPIN = Field.create("STEPPERENABLEPIN", 3128, FieldType.INT, brain_pin_e);
public static final Field TLE8888_CS = Field.create("TLE8888_CS", 3129, FieldType.INT, brain_pin_e);
public static final Field TLE8888_CSPINMODE = Field.create("TLE8888_CSPINMODE", 3130, FieldType.INT, pin_output_mode_e);
public static final Field UNUSEDTEST55 = Field.create("UNUSEDTEST55", 3131, FieldType.INT);
public static final Field SERVOOUTPUTPINS1 = Field.create("SERVOOUTPUTPINS1", 3164, FieldType.INT, brain_pin_e);
public static final Field SERVOOUTPUTPINS2 = Field.create("SERVOOUTPUTPINS2", 3165, FieldType.INT, brain_pin_e);
public static final Field SERVOOUTPUTPINS3 = Field.create("SERVOOUTPUTPINS3", 3166, FieldType.INT, brain_pin_e);