Merge pull request #5677 from u-blox/c030_bq24295_voltage_fix

C030 Battery Charger Voltage Fix
pull/5723/head
Martin Kojtal 2017-12-20 14:42:18 +00:00 committed by GitHub
commit 806b762473
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 162 additions and 0 deletions

View File

@ -0,0 +1,34 @@
/* mbed Microcontroller Library
* Copyright (c) 2006-2017 ARM Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "battery_charger_i2c.h"
BatteryChargerI2c::BatteryChargerI2c(PinName sda, PinName scl):_i2c(), _hz(100000)
{
i2c_init(&_i2c, sda, scl);
}
bool BatteryChargerI2c::read_from_i2c(int i2c_address, char* data_read, int length)
{
int bytes_read = i2c_read(&_i2c, i2c_address, data_read, length, 1);
return (length == bytes_read);
}
bool BatteryChargerI2c::write_to_i2c(int i2c_address, const char* data_write, int length)
{
int bytes_written = i2c_write(&_i2c, i2c_address, data_write, length, 1);
return (length == bytes_written);
}

View File

@ -0,0 +1,43 @@
/* mbed Microcontroller Library
* Copyright (c) 2006-2017 ARM Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef BATTERY_CHARGER_I2C
#define BATTERY_CHARGER_I2C
#include "hal/i2c_api.h"
#ifdef __cplusplus
extern"C"{
#endif
class BatteryChargerI2c{
public:
BatteryChargerI2c(PinName sda, PinName scl);
bool read_from_i2c(int i2c_address, char *data_read, int length);
bool write_to_i2c(int i2c_address, const char *data_write, int length);
virtual ~BatteryChargerI2c() {}
private:
i2c_t _i2c;
int _hz;
};
#ifdef __cplusplus
}
#endif
#endif //BATTERY_CHARGER_I2C

View File

@ -0,0 +1,48 @@
/* mbed Microcontroller Library
* Copyright (c) 2006-2017 ARM Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "min_battery_voltage.h"
#include "battery_charger_i2c.h"
/** Defining HAL_MspInit strong function
* in user defined file as described in documentation
*/
void HAL_MspInit(void)
{
set_minimum_battery_voltage();
}
void set_minimum_battery_voltage()
{
char data_write[2] = {0};
char data_read;
BatteryChargerI2c i2c_object(I2C_SDA_B, I2C_SCL_B);
if (i2c_object.write_to_i2c(BQ24295_I2C_ADDRESS,&data_write[0] , 1)){
i2c_object.read_from_i2c(BQ24295_I2C_ADDRESS, &data_read, 1);
data_read = data_read & MIN_BATTERY_VOLTAGE_MASK;
data_write[0] = 0x0;
data_write[1] = data_read;
if (i2c_object.write_to_i2c(BQ24295_I2C_ADDRESS,&data_write[0] , 2)){
//Battery Voltage is set to 3880mV
}
}
else{
// Minimum battery voltage could not be set. This is not a critical error, no need to stop execution
// It simply means that longer cabling or USB ports with lower output voltages may cause problems.
}
}

View File

@ -0,0 +1,37 @@
/* mbed Microcontroller Library
* Copyright (c) 2006-2017 ARM Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef MIN_BATTERY_VOLTAGE_H
#define MIN_BATTERY_VOLTAGE_H
#ifdef __cplusplus
extern"C"{
#endif
#define BQ24295_I2C_ADDRESS (0x6B << 1)
#define MIN_BATTERY_VOLTAGE_MASK (0x87)
/** Initializes an instance of class BatteryChargerI2c which is using the STM HAL I2C APIs
* This allows longer USB cables or USB ports with lower output voltages to power the board correctly.
*/
void set_minimum_battery_voltage(void);
#ifdef __cplusplus
}
#endif
#endif // MIN_BATTERY_VOLTAGE_H