Slow down I2C
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user