新的项目中使用到了电池。电池的guage使用TI的bq20z75。kernel的驱动中已经有bq20z75的驱动,只要稍加修改就可以使用。

参考链接

http://www.ti.com/lit/er/sluu265a/sluu265a.pdf

http://www.ti.com/lit/an/slua421a/slua421a.pdf

http://www.deyisupport.com/question_answer/analog/battery_management/f/35/t/77397.aspx

https://www.element14.com/community/thread/26389/l/bus-speed-of-devi2c-2-on-imx6q?displayFullThread=true

driver

驱动源码位于 kernel/drivers/power/bq20z75.c

内核中添加驱动。

CONFIG_BATTERY_BQ20Z75:     

   Say Y to include support for TI BQ20z75 SBS-compliant
gas gauge and protection IC. Symbol: BATTERY_BQ20Z75 [=y]
Type : tristate
Prompt: TI BQ20z75 gas gauge
Defined at drivers/power/Kconfig:118
Depends on: POWER_SUPPLY [=y] && I2C [=y]
Location:
-> Device Drivers
-> Power supply class support (POWER_SUPPLY [=y])

调试的时候最好编译成模块。

device

kernel/arch/arm/mach-mx6/board-mx6q_sabresd.c

在对应的i2c总线上添加设备。

static struct i2c_board_info mxc_i2c2_board_info[] __initdata = {
{
...
{
I2C_BOARD_INFO("bq20z75", 0xb),
},
...
};

datasheet里面说地址是0x16,但是我发送地址0x16的时候,使用逻辑分析仪查看数据,并没有回应。查看资料有些说法是,芯片seal了,需要unseal。但是现在连地址都没有回应,所以可能是设备地址错了。

所以写了程序将i2c中线上的所有的地址都试了一遍,发现地址是0xb的时候有回应。所以设备的地址应该是0xb。

rootfs

imx6 添加bq20z75.

重新编译内核,驱动加载。

加载了驱动之后,会在/sys/class/power_supply生成battery目录,如下:

root@freescale /sys/class/power_supply$ ls
battery
root@freescale /sys/class/power_supply$ cd battery
root@freescale /sys/class/power_supply/battery$ ls
capacity device present time_to_empty_avg
charge_full energy_full serial_number time_to_full_avg
charge_full_design energy_full_design status type
charge_now energy_now subsystem uevent
current_now health technology voltage_max_design
cycle_count power temp voltage_now
root@freescale /sys/class/power_supply/battery$ cat temp
235
root@freescale /sys/class/power_supply/battery$ cat voltage_now
11822000

Tony Liu

2016-12-3, Shenzhen

linux bq20z75 驱动的更多相关文章

  1. Linux网络驱动--snull

    snull是<Linux Device Drivers>中的一个网络驱动的例子.这里引用这个例子学习Linux网络驱动. 因为snull的源码,网上已经更新到适合最新内核,而我自己用的还是 ...

  2. 浅谈Android系统移植、Linux设备驱动

    一.Android系统架构 第一层:Linux内核 包括驱动程序,管理内存.进程.电源等资源的程序 第二层:C/C++代码库 包括Linux的.so文件以及嵌入到APK程序中的NDK代码 第三层:An ...

  3. Linux设备驱动模型之I2C总线

    一.I2C子系统总体架构 1.三大组成部分 (1)I2C核心(i2c-core):I2C核心提供了I2C总线驱动(适配器)和设备驱动的注册.注销方法,提供了与具体硬件无关的I2C读写函数. (2)I2 ...

  4. linux设备驱动概述,王明学learn

    linux设备驱动学习-1 本章节主要学习有操作系统的设备驱动和无操作系统设备驱动的区别,以及对操作系统和设备驱动关系的认识. 一.设备驱动的作用 对设备驱动最通俗的解释就是“驱使硬件设备行动” .设 ...

  5. Smart210学习记录------linux串口驱动

    转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=27025492&id=327609 一.核心数据结构 串口驱动有 ...

  6. linux网卡驱动移植

    这里重要的是物理层PHY receiver,MAC(media access control)层,这里与软件中的协议栈不同,在硬件上MAC是PHY的下一层.DM9000A将MAC和PHY做到一起,也可 ...

  7. Linux USB驱动

    linux usb 驱动详解 一 http://blog.163.com/cl2006ky@126/blog/static/87195173201131245557340/ USB设备驱动开发-USB ...

  8. Linux设备驱动工程师之路——内核链表的使用【转】

    本文转载自:http://blog.csdn.net/forever_key/article/details/6798685 Linux设备驱动工程师之路——内核链表的使用 K-Style 转载请注明 ...

  9. linux设备驱动归纳总结(十三):1.触摸屏与ADC时钟【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-119723.html linux设备驱动归纳总结(十三):1.触摸屏与ADC时钟 xxxxxxxxxx ...

随机推荐

  1. BJOI2015 Day2

    轮到罗剑桥出题了 这是什么风格,中文名称与英文名称分明对不上吗233 T1: 似乎只会做这道题23333 A....BE ........ C....DF 据题意数学变形得A-C<=B-D,B- ...

  2. 获取枚举类型Description特性的描述信息

    C#中可以对枚举类型用Description特性描述. 如果需要对Description信息获取,那么可以定义一个扩展方法来实现.代码如下: public static class EnumExten ...

  3. redux-actions源码解读

    一.什么是redux-actions redux-actions是一个简化action和reducer创建的一个封装库,里面有5个js文件, createAction.js handleAction. ...

  4. python 面向对象的三大特征之 封装

    封装:私有化 class Person(object): def __init__(self): self.__gender = "man" #在类的属性名称前面加__ self. ...

  5. openstack是什么

    下面图片多来自互联网. 云计算: 云计算层次机构模型: IaaS 基础设施服务 PaaS 平台级服务 SaaS 软件级服务 官网:http://www.openstack.org/ openstack ...

  6. 平易近人、兼容并蓄——Spark SQL 1.3.0概览

    自2013年3月面世以来,Spark SQL已经成为除Spark Core以外最大的Spark组件.除了接过Shark的接力棒,继续为Spark用户提供高性能的SQL on Hadoop解决方案之外, ...

  7. hadoop-1.2.1伪分布模式配置

    1.hadoop-env.sh 修改 export JAVA_HOME=/Library/Java/Home #增加 JAVA_HOME 2.masters localhost 3.slaves lo ...

  8. POJ 2528 Mayor's posters(线段树区间染色+离散化或倒序更新)

    Mayor's posters Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 59239   Accepted: 17157 ...

  9. QuickStart OpenvirteX

    参考:ubuntu14.04安装OpenVirteX 预准备: Java 7 sudo add-apt-repository ppa:webupd8team/java sudo apt-get upd ...

  10. 【翻译】CEDEC2014[跨越我的尸体2]跨越Stylized Rendering

    Stylized Rendering相关的一篇PPT,PSV上的[跨越我的尸体2],本代的画风参照的是川瀬巴水的木版画风格.不过因为PSV硬件的限制,最后真机上的效果还是有不少折扣的.ppt里提到参考 ...