mirror of https://github.com/rusefi/rusefi-1.git
Baro config (#2591)
* adjust API to allow i2c init to fail * init * proteus config * 🎠🎠🎠 * buh Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
This commit is contained in:
parent
17719c5da0
commit
742ea83bfa
|
@ -162,6 +162,9 @@ void setBoardConfigOverrides(void) {
|
||||||
|
|
||||||
engineConfiguration->canTxPin = GPIOD_1;
|
engineConfiguration->canTxPin = GPIOD_1;
|
||||||
engineConfiguration->canRxPin = GPIOD_0;
|
engineConfiguration->canRxPin = GPIOD_0;
|
||||||
|
|
||||||
|
engineConfiguration->lps25BaroSensorScl = GPIOB_10;
|
||||||
|
engineConfiguration->lps25BaroSensorSda = GPIOB_11;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setPinConfigurationOverrides(void) {
|
void setPinConfigurationOverrides(void) {
|
||||||
|
|
|
@ -9,7 +9,9 @@ constexpr uint8_t addr = 0x48;
|
||||||
#define ADS1015_HI_THRESH (3)
|
#define ADS1015_HI_THRESH (3)
|
||||||
|
|
||||||
bool Ads1015::init(brain_pin_e scl, brain_pin_e sda) {
|
bool Ads1015::init(brain_pin_e scl, brain_pin_e sda) {
|
||||||
m_i2c.init(scl, sda);
|
if (!m_i2c.init(scl, sda)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// ADS1015 has no ID register - so we read the Lo_thresh instead
|
// ADS1015 has no ID register - so we read the Lo_thresh instead
|
||||||
uint16_t loThresh = readReg(ADS1015_LO_THRESH);
|
uint16_t loThresh = readReg(ADS1015_LO_THRESH);
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
|
|
||||||
#include "io_pins.h"
|
#include "io_pins.h"
|
||||||
#include "efi_gpio.h"
|
#include "efi_gpio.h"
|
||||||
|
#include "pin_repository.h"
|
||||||
|
|
||||||
void BitbangI2c::sda_high() {
|
void BitbangI2c::sda_high() {
|
||||||
#if EFI_PROD_CODE
|
#if EFI_PROD_CODE
|
||||||
|
@ -35,9 +36,13 @@ void BitbangI2c::scl_low() {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void BitbangI2c::init(brain_pin_e scl, brain_pin_e sda) {
|
bool BitbangI2c::init(brain_pin_e scl, brain_pin_e sda) {
|
||||||
#if EFI_PROD_CODE
|
#if EFI_PROD_CODE
|
||||||
if (m_sdaPort) return;
|
if (m_sdaPort) return false;
|
||||||
|
|
||||||
|
if (!isBrainPinValid(scl) || !isBrainPinValid(sda)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
efiSetPadMode("i2c", scl, PAL_MODE_OUTPUT_OPENDRAIN); //PAL_STM32_OTYPE_OPENDRAIN
|
efiSetPadMode("i2c", scl, PAL_MODE_OUTPUT_OPENDRAIN); //PAL_STM32_OTYPE_OPENDRAIN
|
||||||
efiSetPadMode("i2c", sda, PAL_MODE_OUTPUT_OPENDRAIN);
|
efiSetPadMode("i2c", sda, PAL_MODE_OUTPUT_OPENDRAIN);
|
||||||
|
@ -52,6 +57,8 @@ void BitbangI2c::init(brain_pin_e scl, brain_pin_e sda) {
|
||||||
// Both lines idle high
|
// Both lines idle high
|
||||||
scl_high();
|
scl_high();
|
||||||
sda_high();
|
sda_high();
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BitbangI2c::start() {
|
void BitbangI2c::start() {
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
class BitbangI2c {
|
class BitbangI2c {
|
||||||
public:
|
public:
|
||||||
// Initialize the I2C driver
|
// Initialize the I2C driver
|
||||||
void init(brain_pin_e scl, brain_pin_e sda);
|
bool init(brain_pin_e scl, brain_pin_e sda);
|
||||||
|
|
||||||
// Write a sequence of bytes to the specified device
|
// Write a sequence of bytes to the specified device
|
||||||
void write(uint8_t addr, const uint8_t* data, size_t size);
|
void write(uint8_t addr, const uint8_t* data, size_t size);
|
||||||
|
|
|
@ -27,7 +27,9 @@ static constexpr uint8_t expectedWhoAmI = 0xBD;
|
||||||
#define REG_PressureOutH 0x2A
|
#define REG_PressureOutH 0x2A
|
||||||
|
|
||||||
bool Lps25::init(brain_pin_e scl, brain_pin_e sda) {
|
bool Lps25::init(brain_pin_e scl, brain_pin_e sda) {
|
||||||
m_i2c.init(scl, sda);
|
if (!m_i2c.init(scl, sda)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Read ident register
|
// Read ident register
|
||||||
auto whoAmI = m_i2c.readRegister(addr, REG_WhoAmI);
|
auto whoAmI = m_i2c.readRegister(addr, REG_WhoAmI);
|
||||||
|
|
|
@ -26,7 +26,7 @@ void initCanSensors();
|
||||||
void initLambda(DECLARE_ENGINE_PARAMETER_SIGNATURE);
|
void initLambda(DECLARE_ENGINE_PARAMETER_SIGNATURE);
|
||||||
void initFlexSensor(DECLARE_CONFIG_PARAMETER_SIGNATURE);
|
void initFlexSensor(DECLARE_CONFIG_PARAMETER_SIGNATURE);
|
||||||
void initFuelLevel(DECLARE_CONFIG_PARAMETER_SIGNATURE);
|
void initFuelLevel(DECLARE_CONFIG_PARAMETER_SIGNATURE);
|
||||||
void initBaro();
|
void initBaro(DECLARE_CONFIG_PARAMETER_SIGNATURE);
|
||||||
|
|
||||||
// Sensor reconfiguration
|
// Sensor reconfiguration
|
||||||
void reconfigureVbatt(DECLARE_CONFIG_PARAMETER_SIGNATURE);
|
void reconfigureVbatt(DECLARE_CONFIG_PARAMETER_SIGNATURE);
|
||||||
|
|
|
@ -3,21 +3,21 @@
|
||||||
|
|
||||||
#include "rusefi_hw_enums.h"
|
#include "rusefi_hw_enums.h"
|
||||||
|
|
||||||
|
EXTERN_ENGINE;
|
||||||
|
|
||||||
static Lps25 device;
|
static Lps25 device;
|
||||||
static Lps25Sensor sensor(device);
|
static Lps25Sensor sensor(device);
|
||||||
|
|
||||||
void initBaro() {
|
void initBaro(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
|
||||||
// If there's already an external (analog) baro sensor configured,
|
// If there's already an external (analog) baro sensor configured,
|
||||||
// don't configure the internal one.
|
// don't configure the internal one.
|
||||||
if (Sensor::hasSensor(SensorType::BarometricPressure)) {
|
if (Sensor::hasSensor(SensorType::BarometricPressure)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HW_PROTEUS
|
if (device.init(CONFIG(lps25BaroSensorScl), CONFIG(lps25BaroSensorScl))) {
|
||||||
if (device.init(GPIOB_10, GPIOB_11)) {
|
|
||||||
sensor.Register();
|
sensor.Register();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void baroUpdate() {
|
void baroUpdate() {
|
||||||
|
|
|
@ -20,7 +20,7 @@ void initNewSensors(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
||||||
initThermistors(PASS_CONFIG_PARAMETER_SIGNATURE);
|
initThermistors(PASS_CONFIG_PARAMETER_SIGNATURE);
|
||||||
initLambda(PASS_ENGINE_PARAMETER_SIGNATURE);
|
initLambda(PASS_ENGINE_PARAMETER_SIGNATURE);
|
||||||
initFlexSensor(PASS_CONFIG_PARAMETER_SIGNATURE);
|
initFlexSensor(PASS_CONFIG_PARAMETER_SIGNATURE);
|
||||||
initBaro();
|
initBaro(PASS_CONFIG_PARAMETER_SIGNATURE);
|
||||||
|
|
||||||
#if !EFI_UNIT_TEST
|
#if !EFI_UNIT_TEST
|
||||||
initFuelLevel(PASS_CONFIG_PARAMETER_SIGNATURE);
|
initFuelLevel(PASS_CONFIG_PARAMETER_SIGNATURE);
|
||||||
|
|
Loading…
Reference in New Issue