smbus协议的command_SMBus读取从设备数据总结

本文介绍了SMBus协议中字节读取和块读取数据的方法,通过ICH9规范解释了SMBus执行命令过程中涉及的寄存器状态变化。在DOS环境下,使用RU软件和汇编代码进行了测试,强调了HST_STS、INTR、DEV_ERR等标志位的重要性。对于Block读取,讨论了E32B位的影响,以及如何读取超过32个字节的数据。
摘要由CSDN通过智能技术生成

本帖最后由 HarmonyHu 于 2010-9-5 10:47 编辑

说明:本人刚入门,写该文只是为了总结刚学到的知识。全部内容都是经过实践得出来的。但实践上的结果并不能反映理论上的正确。所以若有不对的地方还请指正。另外本文也借鉴了LightSeed前辈()的相关文章。

要阅读本文,您可能需要ICH9 spec。要实践本文,您需要纯DOS环境,RU软件或者ADU软件。

本打算贴上图片说明问题,但是不知道怎么贴图片,所以就都改用文字描述了。

SMBus主要读取方式有byte data(字节读取)方式和block(块读取)方式。当用byte data读取方式时,涉及到的IO寄存器有HST_STS,HST_CNT,HST_CMD,XMIT_SLVA,HST_D0。如果采用block的读取方式,除了前面需要关注的几个寄存器,还要关注两个寄存器,HOST_BLOCK_DB和AUX_CTL。当然这些只是最需要关注的寄存器,还有其他的寄存器可能也会影响到读取数据的过程,比如SMBUS PCI配置中的I2C_EN以及HST_EN等等(目前测试过程以及对应的程序无法保证百分百的考虑到位)。这里只把它们当成是默认设置。

在ICH9 spec中有一段关于SMBus执行命令过程中HST_STS变化情况的描述,很重要,如下:

In all of the following commands, the Host Status Register (offset 00h) is used to determine the progress of the command. While the command is in operation, the HOST_BUSY bit is set. If the command completes suc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值