Slow down I2C
This commit is contained in:
@@ -47,6 +47,7 @@ uint16_t getInputVoltageX10(uint16_t divisor, uint8_t sample) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void unstick_I2C() {
|
void unstick_I2C() {
|
||||||
|
MSG((char *)"I2C Unstick\r\n");
|
||||||
/* configure SDA/SCL for GPIO */
|
/* configure SDA/SCL for GPIO */
|
||||||
// GPIO_BC(GPIOB) |= SDA_Pin | SCL_Pin;
|
// GPIO_BC(GPIOB) |= SDA_Pin | SCL_Pin;
|
||||||
// gpio_init(SDA_GPIO_Port, GPIO_MODE_OUT_OD, GPIO_OSPEED_50MHZ, 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) {
|
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;
|
return false;
|
||||||
|
}
|
||||||
I2C_Transfer_Cfg i2cCfg = {0, DISABLE, 0, 0, 0, 0};
|
I2C_Transfer_Cfg i2cCfg = {0, DISABLE, 0, 0, 0, 0};
|
||||||
BL_Err_Type err = ERROR;
|
BL_Err_Type err = ERROR;
|
||||||
i2cCfg.slaveAddr = DevAddress >> 1;
|
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) {
|
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;
|
return false;
|
||||||
|
}
|
||||||
I2C_Transfer_Cfg i2cCfg = {0, DISABLE, 0, 0, 0, 0};
|
I2C_Transfer_Cfg i2cCfg = {0, DISABLE, 0, 0, 0, 0};
|
||||||
BL_Err_Type err = ERROR;
|
BL_Err_Type err = ERROR;
|
||||||
i2cCfg.slaveAddr = DevAddress >> 1;
|
i2cCfg.slaveAddr = DevAddress >> 1;
|
||||||
@@ -120,7 +120,7 @@ bool FRToSI2C::wakePart(uint16_t DevAddress) {
|
|||||||
i2cCfg.subAddrSize = 0; // one byte address
|
i2cCfg.subAddrSize = 0; // one byte address
|
||||||
|
|
||||||
err = I2C_MasterReceiveBlocking(I2C0_ID, &i2cCfg);
|
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;
|
bool res = err == SUCCESS;
|
||||||
if (!res) {
|
if (!res) {
|
||||||
I2C_Unstick();
|
I2C_Unstick();
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ bool getFUS302IRQLow() {
|
|||||||
|
|
||||||
uint16_t getADCHandleTemp(uint8_t sample) { return ADC_Temp.average() >> 1; }
|
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
|
// 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);
|
gpio_set_mode(KEY_B_Pin, GPIO_INPUT_PD_MODE);
|
||||||
setup_slow_PWM();
|
setup_slow_PWM();
|
||||||
setup_adc();
|
setup_adc();
|
||||||
|
I2C_ClockSet(I2C0_ID, 400000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup_adc(void) {
|
void setup_adc(void) {
|
||||||
|
|||||||
Reference in New Issue
Block a user