mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			C030 Battery Charger Voltage Fix
							parent
							
								
									2e1c2a1cdf
								
							
						
					
					
						commit
						a40469e7c5
					
				| 
						 | 
				
			
			@ -0,0 +1,33 @@
 | 
			
		|||
/* 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);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
#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
 | 
			
		||||
| 
						 | 
				
			
			@ -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.
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
#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
 | 
			
		||||
		Loading…
	
		Reference in New Issue