diff --git a/source/Core/BSP/Magic/BSP.cpp b/source/Core/BSP/Magic/BSP.cpp index 0fd337b4..7c3069e5 100644 --- a/source/Core/BSP/Magic/BSP.cpp +++ b/source/Core/BSP/Magic/BSP.cpp @@ -47,6 +47,7 @@ uint16_t getInputVoltageX10(uint16_t divisor, uint8_t sample) { } void unstick_I2C() { + MSG((char *)"I2C Unstick\r\n"); /* configure SDA/SCL for GPIO */ // GPIO_BC(GPIOB) |= SDA_Pin | SCL_Pin; // gpio_init(SDA_GPIO_Port, GPIO_MODE_OUT_OD, GPIO_OSPEED_50MHZ, SDA_Pin | SCL_Pin); diff --git a/source/Core/BSP/Magic/I2C_Wrapper.cpp b/source/Core/BSP/Magic/I2C_Wrapper.cpp index f97ed9d3..34d1aac0 100644 --- a/source/Core/BSP/Magic/I2C_Wrapper.cpp +++ b/source/Core/BSP/Magic/I2C_Wrapper.cpp @@ -30,9 +30,9 @@ uint8_t FRToSI2C::I2C_RegisterRead(uint8_t add, uint8_t reg) { } bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address, uint8_t *p_buffer, uint16_t number_of_byte) { - if (!lock()) + if (!lock()) { return false; - + } I2C_Transfer_Cfg i2cCfg = {0, DISABLE, 0, 0, 0, 0}; BL_Err_Type err = ERROR; i2cCfg.slaveAddr = DevAddress >> 1; @@ -53,9 +53,9 @@ bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t read_address, uint8_t *p_b } bool FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress, uint8_t *p_buffer, uint16_t number_of_byte) { - if (!lock()) + if (!lock()) { return false; - + } I2C_Transfer_Cfg i2cCfg = {0, DISABLE, 0, 0, 0, 0}; BL_Err_Type err = ERROR; i2cCfg.slaveAddr = DevAddress >> 1; @@ -120,7 +120,7 @@ bool FRToSI2C::wakePart(uint16_t DevAddress) { i2cCfg.subAddrSize = 0; // one byte address err = I2C_MasterReceiveBlocking(I2C0_ID, &i2cCfg); - // MSG((char *)"I2C wakePart %02X - %d\r\n", DevAddress >> 1, err); + MSG((char *)"I2C wakePart %02X - %d\r\n", DevAddress >> 1, err); bool res = err == SUCCESS; if (!res) { I2C_Unstick(); diff --git a/source/Core/BSP/Magic/IRQ.cpp b/source/Core/BSP/Magic/IRQ.cpp index 75e0b09f..15a21204 100644 --- a/source/Core/BSP/Magic/IRQ.cpp +++ b/source/Core/BSP/Magic/IRQ.cpp @@ -202,7 +202,7 @@ bool getFUS302IRQLow() { uint16_t getADCHandleTemp(uint8_t sample) { return ADC_Temp.average() >> 1; } -uint16_t getADCVin(uint8_t sample) { return ADC_Vin.average(); } +uint16_t getADCVin(uint8_t sample) { return ADC_Vin.average() >> 1; } // Returns either average or instant value. When sample is set the samples from the injected ADC are copied to the filter and then the raw reading is returned -uint16_t getTipRawTemp(uint8_t sample) { return ADC_Tip.average(); } +uint16_t getTipRawTemp(uint8_t sample) { return ADC_Tip.average() >> 2; } diff --git a/source/Core/BSP/Magic/Setup.cpp b/source/Core/BSP/Magic/Setup.cpp index 83925c65..616fa580 100644 --- a/source/Core/BSP/Magic/Setup.cpp +++ b/source/Core/BSP/Magic/Setup.cpp @@ -27,6 +27,7 @@ void hardware_init() { gpio_set_mode(KEY_B_Pin, GPIO_INPUT_PD_MODE); setup_slow_PWM(); setup_adc(); + I2C_ClockSet(I2C0_ID, 400000); } void setup_adc(void) {