迅维网
标题: 通过南桥的SMBus访问笔记本的充电管理芯片,发现问题 [打印本页]
作者: mashimaro221 时间: 2013-10-30 12:25
标题: 通过南桥的SMBus访问笔记本的充电管理芯片,发现问题
本帖最后由 mashimaro221 于 2013-10-30 19:38 编辑
通过南桥的SMBus访问笔记本的充电管理芯片,发现问题
(刚注册的账号,不能在笔记本维修板块发帖,还拜请版主帮我移过去,先谢了)
使用RW访问南桥的SMBus(通过IO来访问),
使用这个网页提供的Word Read方法来访问SMBus(去掉连接前面的*号)
h*ttp://white5168.blogspot.com/2012/09/rwsmbus-device.html#.UnBnvlggevw
能够正常读取地址0b1010000(Memory SlaveAddress)中的内容
使用的笔记本是宏碁M5-481,充电管理芯片为TI的bq24707A,照片附在最后。
充电芯片的手册说明如下
可以通过设置”command”为0xFF和0xFE来读取数据可以确认该芯片。
开始操作:
设置Transmit Slave Address Register为0x13H(0x12H+1),设置HostCommand Register为0xFE,按Word protocols读取数据,发现Host Status Register变为0x44(BUS_ERR)
然后想遍历Slave Address来找到该芯片。依次设置Transmit Slave Address Register为0x01H,0x03H,0x05H …0xFF,读取0xFEH寄存器。大部分的结果是Host Status Register变为0x44H,但在地址为0xA1H时,会返回正常的状态(0x42)和读取结果。在地址为0x89H时,状态显示正常,但是返回结果为0xFF00(Host Data 0 Register=0,Host Data 1 Register=0xFF),接着测试,发现只要地址为0x89H,command为任意值时,返回结果均为0xFF00
所以现在感到非常困惑,从图上看充电管理芯片的SDA和SCL管脚确实是焊到了主板上,难道是没有连到南桥芯片的SMBus总线上吗?还是说我访问SMBus的方法不对?望高人指点。
另外,是不是笔记本电池上面还有一块控制电池充放电的芯片,连到了南桥的SM总线上呢?在遍历地址的过程中,我也没发现这块芯片。像BatteryMon这类监控电池状态的软件是怎么访问到这块芯片的呢?或者问这类软件是怎么检测笔记本电池参数的?难道所有的笔记本的电池芯片的SM地址都是(0b0001011),控制命令都相同吗?
上图是我实拍的那块充电管理芯片,上面标的是“BQ07A”是TI公司的BQ24707A芯片的简写。
另外我顺便想问一个与本主题关系不大的问题,图中那个空着的排线插座是干什么用的?维修过宏基M5-481的兄弟能解答一下吗?
补充内容 (2013-10-31 21:45):
已解决,谢谢
作者: 欲望泯灭人性 时间: 2013-10-30 13:25
好高深 没弄明白啥意思
作者: 794897717 时间: 2013-10-30 13:40
搞不明白是啥东东
作者: 吴正海 时间: 2013-10-30 14:52
楼主研究方向错误,笔记本充电管理芯片和电池数据线路使用同一条线路,然后到io的数据脚上,而其他设备要访问该数据要通过南桥和io的总线,这中间就有一个数据的转换(数据总线的不同,数据的传输方式不同),而不是在器存器读取的那个数据和元数据比较,io作为数据读取,转换,控制的中心芯片,其工作是由软件来定义的,软件要想访问该芯片,就要通过总线来访问io,io再去读取电池芯片的数据来返回给软件,而实时状态和控制是由io通过smb总线控制充放电芯片来完成的。楼主你在吧这中间的关系顺清吧,
作者: 吴正海 时间: 2013-10-30 14:54
你的最后一个图片不明白什么意思,如果你有图纸,上面会表明什么借口或者什么总线
作者: mashimaro221 时间: 2013-10-30 18:19
本帖最后由 mashimaro221 于 2013-10-30 18:28 编辑
吴正海 发表于 2013-10-30 14:52
楼主研究方向错误,笔记本充电管理芯片和电池数据线路使用同一条线路,然后到io的数据脚上,而其他设备要访 ...
哦,我想的其中的关系是这样的。南桥中集成的smbus controller 是挂在pci总线上,然后可以通过RW软件通过IO读写来操作smbus controller的寄存器,controller自身会处理smbus的访问任务。望指正。
附上我电脑南桥芯片的数据手册中的相关部分的截图。
通过操作这些smbus controller的寄存器,能够给controller下达访问sm总线的任务,然后返回结果到寄存器,具体的sm总线操作是由controller独立来完成。
作者: mashimaro221 时间: 2013-10-30 18:29
吴正海 发表于 2013-10-30 14:52
楼主研究方向错误,笔记本充电管理芯片和电池数据线路使用同一条线路,然后到io的数据脚上,而其他设备要访 ...
我的思路是这样的。
南桥中集成的smbus controller 是挂在pci总线上,然后可以通过RW软件通过IO读写来操作smbus controller的寄存器,controller自身会处理smbus的访问任务。
附上我电脑南桥芯片的数据手册中的相关部分的截图。
通过操作图中这些smbus controller的寄存器,能够给controller下达访问sm总线的任务,然后返回结果到寄存器,具体的sm总线操作是由controller独自来完成。
望指正。
作者: mashimaro221 时间: 2013-10-30 18:35
吴正海 发表于 2013-10-30 14:54
你的最后一个图片不明白什么意思,如果你有图纸,上面会表明什么借口或者什么总线
最后一个图是我实拍的那块充电管理芯片,上面标的是“BQ07A”是TI公司的BQ24707A芯片的简写。
另外我顺便想问一个与本主题关系不大的问题,图中那个空着的排线插座是干什么用的?维修过宏基M5-481的兄弟能解答一下吗?
作者: mashimaro221 时间: 2013-10-30 18:45
本帖最后由 mashimaro221 于 2013-10-30 18:46 编辑
我说的“使用RW访问南桥的SMBus(通过IO来访问)”
是指下面网页中说明的方法:
h*ttp://white5168.blogspot.com/2012/09/rwsmbus-device.html#.UnBnvlggevw
可能服务器不稳定,有的时候不能访问到,我把内容贴出来吧
-
作者: mashimaro221 时间: 2013-10-30 18:58
续
作者: 吴正海 时间: 2013-10-31 15:50
大哥我研究硬件的,虽然我的英语专业16级,但是看不懂这些 ,不知道你是研究干什么用的,做电池吗?
作者: mashimaro221 时间: 2013-10-31 21:28
吴正海 发表于 2013-10-31 15:50
大哥我研究硬件的,虽然我的英语专业16级,但是看不懂这些 ,不知道你是研究干什么用的,做电池吗?
我只是想搞清楚一下笔记本充电管理的机制。感谢大家的回复。
昨天在论坛找了一份宏基M5-481的电路原理图,电池中的控制芯片是挂在了EC的smbus上,而EC再通过spi总线连到南桥上。EC肯定不会开放直接访问电池芯片的接口。
这样的话应该就没办法直接访问控制电池中的管理芯片了。要获得电池状态只能透过WMI或是windows的API获得电池信息的。
另外,主板上的充电控制芯片BQ24707并没有连到任何smbus上。可能这块芯片出厂的时候设好了充电参数后就不再需要更改了。
作者: 吴正海 时间: 2013-11-3 11:37
你看到这个图电池是比较新的,而新电池都支持自动电源管理,在电池内部的程序中都已经定义好了充放电机制,而电源管理芯片的功能就可以限于充电,所以你的电源管理芯片可以不串总线中去,而通过电池的芯片就可以完成所有必需的动作。
作者: 晒太阳 时间: 2013-11-3 11:51
电池SMBUS总线是有EC访问的
作者: 图难于易 时间: 2013-11-25 19:36
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~发错了
作者: 大爱小翻茄 时间: 2013-11-25 22:50
吴正海 发表于 2013-11-3 11:37
你看到这个图电池是比较新的,而新电池都支持自动电源管理,在电池内部的程序中都已经定义好了充放电机制, ...
想请教一下,如果充电芯片输出OK,电池OK,但充不进电的机是偿试更换EC还是刷BIOS来修复?之前遇到这样的机,但不懂总线是如何去控制电池的,所以很茫然,心里一直留有疑惑。希望您能够抽空回答一下
| 欢迎光临 迅维网 (https://www.chinafix.com/) |
Powered by Discuz! X3.4 |