1
0
forked from me/IronOS

Slow down I2C

This commit is contained in:
Ben V. Brown
2022-04-18 20:09:07 +10:00
parent 5edd735f72
commit c56772a779
4 changed files with 9 additions and 7 deletions

View File

@@ -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);

View File

@@ -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();

View File

@@ -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; }

View File

@@ -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) {