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->canRxPin = GPIOD_0;
|
||||
|
||||
engineConfiguration->lps25BaroSensorScl = GPIOB_10;
|
||||
engineConfiguration->lps25BaroSensorSda = GPIOB_11;
|
||||
}
|
||||
|
||||
void setPinConfigurationOverrides(void) {
|
||||
|
|
|
@ -9,7 +9,9 @@ constexpr uint8_t addr = 0x48;
|
|||
#define ADS1015_HI_THRESH (3)
|
||||
|
||||
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
|
||||
uint16_t loThresh = readReg(ADS1015_LO_THRESH);
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
#include "io_pins.h"
|
||||
#include "efi_gpio.h"
|
||||
#include "pin_repository.h"
|
||||
|
||||
void BitbangI2c::sda_high() {
|
||||
#if EFI_PROD_CODE
|
||||
|
@ -35,9 +36,13 @@ void BitbangI2c::scl_low() {
|
|||
#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 (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", sda, PAL_MODE_OUTPUT_OPENDRAIN);
|
||||
|
@ -52,6 +57,8 @@ void BitbangI2c::init(brain_pin_e scl, brain_pin_e sda) {
|
|||
// Both lines idle high
|
||||
scl_high();
|
||||
sda_high();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void BitbangI2c::start() {
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
class BitbangI2c {
|
||||
public:
|
||||
// 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
|
||||
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
|
||||
|
||||
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
|
||||
auto whoAmI = m_i2c.readRegister(addr, REG_WhoAmI);
|
||||
|
|
|
@ -26,7 +26,7 @@ void initCanSensors();
|
|||
void initLambda(DECLARE_ENGINE_PARAMETER_SIGNATURE);
|
||||
void initFlexSensor(DECLARE_CONFIG_PARAMETER_SIGNATURE);
|
||||
void initFuelLevel(DECLARE_CONFIG_PARAMETER_SIGNATURE);
|
||||
void initBaro();
|
||||
void initBaro(DECLARE_CONFIG_PARAMETER_SIGNATURE);
|
||||
|
||||
// Sensor reconfiguration
|
||||
void reconfigureVbatt(DECLARE_CONFIG_PARAMETER_SIGNATURE);
|
||||
|
|
|
@ -3,21 +3,21 @@
|
|||
|
||||
#include "rusefi_hw_enums.h"
|
||||
|
||||
EXTERN_ENGINE;
|
||||
|
||||
static Lps25 device;
|
||||
static Lps25Sensor sensor(device);
|
||||
|
||||
void initBaro() {
|
||||
void initBaro(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
|
||||
// If there's already an external (analog) baro sensor configured,
|
||||
// don't configure the internal one.
|
||||
if (Sensor::hasSensor(SensorType::BarometricPressure)) {
|
||||
return;
|
||||
}
|
||||
|
||||
#if HW_PROTEUS
|
||||
if (device.init(GPIOB_10, GPIOB_11)) {
|
||||
if (device.init(CONFIG(lps25BaroSensorScl), CONFIG(lps25BaroSensorScl))) {
|
||||
sensor.Register();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void baroUpdate() {
|
||||
|
|
|
@ -20,7 +20,7 @@ void initNewSensors(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
|||
initThermistors(PASS_CONFIG_PARAMETER_SIGNATURE);
|
||||
initLambda(PASS_ENGINE_PARAMETER_SIGNATURE);
|
||||
initFlexSensor(PASS_CONFIG_PARAMETER_SIGNATURE);
|
||||
initBaro();
|
||||
initBaro(PASS_CONFIG_PARAMETER_SIGNATURE);
|
||||
|
||||
#if !EFI_UNIT_TEST
|
||||
initFuelLevel(PASS_CONFIG_PARAMETER_SIGNATURE);
|
||||
|
|
Loading…
Reference in New Issue