SMBus学习记录 SMBus 是 System Management Bus 的缩写,译为系统管理总线,SMBus是一种二线制串行总线,1996年第一版规范开始商用。它大部分基于I2C总线规范。...SMBus为系统和电源管理相关任务提供控制总线。系统可以使用SMBus将消息传递到设备和设备之间,而不使用单独的控制线。可减少引脚数。...9.SMBus Host Notify protocol 为了防止消息从未知设备以未知格式发送到SMBus主机控制器,只允许一种通信方法,即修改后的写字协议形式。...当SMBus设备成为主设备时,必须使用此协议,以便与充当从属的SMBus主机通信。 从SMBus设备到SMBus主机的通信以SMBus主机地址(0001 000b)开始。...消息的命令代码是启动SMBus设备的地址。由此,SMBus主机知道以下16位设备状态的来源。状态的内容是特定于设备的。 SMBus主机必须支持主机通知协议。
协议 参考资料: Linux内核文档:Documentation\i2c\smbus-protocol.rst SMBus协议: http://www.smbus.org/specs/ SMBus...SMBus是I2C协议的一个子集 SMBus: System Management Bus,系统管理总线。 SMBus最初的目的是为智能电池、充电电池、其他微控制器之间的通信链路而定义的。...SMBus 为系统和电源管理这样的任务提供了一条控制总线,使用 SMBus 的系统,设备之间发送和接收消息都是通过 SMBus,而不是使用单独的控制线,这样可以节省设备的管脚数。...SMBus是基于I2C协议的,SMBus要求更严格,SMBus是I2C协议的子集。 SMBus有哪些更严格的要求?跟一般的I2C协议有哪些差别?...SMBus和I2C的建议 因为很多设备都实现了SMBus,而不是更宽泛的I2C协议,所以优先使用SMBus。 即使I2C控制器没有实现SMBus,软件方面也是可以使用I2C协议来模拟SMBus。
与I2C的差别 详细参考: SMBus与I2C的区别 SMbus 最早是由 Intel 公司提出来的....很明显的,I2C与SMBus的交集运作频率即是10kHz~100kHz间。...类似的,SMBus对介面被重置(Reset)后的恢复时间(Timeout)也有要求,一般而言是35mS,I2C这方面亦无约束,可以任意延长时间。...ohm,3V Vdd时当大於8.5k ohm,不过这个定义并非牢不可破,就一般实务而言,在SMBus上也可用2.4k~3.9k ohm范畴的阻值。...电容限制 再者是相关限制,I2C有线路电容的限制,SMBus却没有,但也有相类似的配套规范,即是准位下拉时的电流限制,当SMBus的开集极接脚导通其闸极而使线路接地时,流经接地的电流不得高於350uA,
转载自:http://forum.ubuntu.org.cn/viewtopic.php?t=481315 在虚拟机上运行Linux内核版本为4.7或以上的系...
__path__) 得到 django 安装目录 ['/Library/Python/2.7/site-packages/django'] 查看对象内的所有方法 from smbus import...SMBus bus = SMBus(1) print dir(bus)
实际上,IPMI 为NIC 定义了两个边带通道:SMBus和NC-SI。NC-SI是SMBus的现代替代品,可实现更快的传输速率和其他新功能。...所以,我们坚持使用SMBus。 SMBus 根据维基百科的说法,系统管理总线(SMBus)是一种单端简单的双线总线,用于轻量级通信。最常见的是在电脑主板发现与ON / OFF指示电源的沟通。”。...我们连接了I²C探针并扫描了SMBus,但没有任何有用的东西可以读取。读数据表显示只有在设置了特定的寄存器位时才会使能SMBus。该值从板载EEPROM加载。是时候深入挖掘了。...在卡片上启用SMBus访问 同样,查看数据表。SMBus访问似乎受限于从NIC EEPROM加载的特定寄存器值。幸运的是,EEPROM可以通过flashrom读取。...我们选择了SMBus警报,因为其他模式允许NIC在SMBus上执行异步请求。
/i2cdetect -F 1 Functionalities implemented by /dev/i2c-1: I2C yes SMBus...Quick Command yes SMBus Send Byte yes SMBus Receive Byte...yes SMBus Write Byte yes SMBus Read Byte yes SMBus Write Word...yes SMBus Read Word yes SMBus Process Call yes SMBus Block Write...yes SMBus Block Read yes SMBus Block Process Call no SMBus PEC
# ADC.write(Value) # Value范围从0到255 # #------------------------------------------------------ #SMBus...(System Management Bus,系统管理总线) import smbus #在程序中导入“smbus”模块 import time # for RPI version 1, use..."bus = smbus.SMBus(1)" # 0 代表 /dev/i2c-0, 1 代表 /dev/i2c-1 ,具体看使用的树莓派那个I2C来决定 bus = smbus.SMBus(1)...#创建一个smbus实例 #在树莓派上查询PCF8591的地址:“sudo i2cdetect -y 1” def setup(Addr): global address address
设备地址 0x1a 代表寄存器地址 4、对16位数据的读 在基本的命令后加上 w 即可实现 四、I2C编程 因为使用树莓派我一直使用的语言是Python,故i2c编程只学到了Python 首先需要安装smbus...库 sudo apt-get install python-smbus 示例代码如下 import smbus import time bus = smbus.SMBus(1) addr=0x2a recount_th0...bus.read_word_data(address,recount_th0) print data bus.write_word_data(address,recount_th0,0x01d6) 注:bus = smbus.SMBus...(1) 在树莓派版本2中,I2C设备位于/dev/I2C-1,所以此处的编号为1 python封装SMBUS操作函数具体代码请查看:https://github.com/bivab/smbus-cffi
WAKE# Output Open Drain active Low signal Auxiliary Signals (3.3V Compliant) SMB_DATA Input/Output SMBus...data signal compliant to the SMBUS 2.0 specification Auxiliary Signals (3.3V Compliant) SMB_DATA Input...SMBus data signal compliant to the SMBUS 2.0 specification Communications Specific Signals LED_WPAN#
y:关闭交互式,不会显示警告信息 a:扫描总线上所有设备 q:使用SMBus的"quick write"命令进行检测,不建议使用 r:使用SMBus的"receive byte"命令进行检测...: c (byte, no value) b (byte data, default) w (word data) i (I2C block data) s (SMBus...block data) Append p for SMBus PEC f:强制访问 y:指令执行自动yes,否则会提示确认执行Continue?...MODE is one of: b (byte, default) w (word) W (word on even register addresses) s (SMBus...block) i (I2C block) c (consecutive byte) Append p for SMBus PEC r:指定寄存器范围,只能扫描从
注意,不要直接使用read(),write()操作函数,直接使用i2c_smbus_write_word_data,i2c_smbus_read_word_data。...return -1; } if (strcmp(argv[3], "r") == 0) { addr = strtoul(argv[4], NULL, 0); data = i2c_smbus_read_word_data...0) && (argc == 6)) { addr = strtoul(argv[4], NULL, 0); data = strtoul(argv[5], NULL, 0); i2c_smbus_write_byte_data
(10); i2c_smbus_write_byte_data(client, MMA7660_XOUT, 0x3f); i2c_smbus_write_byte_data(client, MMA7660..._YOUT, 0x01); i2c_smbus_write_byte_data(client, MMA7660_ZOUT, 0x15); val = i2c_smbus_read_byte_data..._SPCNT, 0xA0); /* Tap detect and debounce ~4ms */ i2c_smbus_write_byte_data(client, MMA7660_PDET,...4); i2c_smbus_write_byte_data(client, MMA7660_PD, 15); /* Enable interrupt except exiting Auto-Sleep...*/ i2c_smbus_write_byte_data(client, MMA7660_MODE, 0x59); mdelay(10); /* Save current tilt status
Python SMBus库函数介绍 4....从类型上说,SMBus协议可看成是I2C总线协议的子类,采用Python语言访问I2C设备可直接使用SMBUS库/SMBUS模块。 1....Python SMBus库函数介绍 在树莓派中,我们可用Python SMBus库函数访问串行I2C设备,导入SMBus模块及常用SMBus库函数介绍如下。...(1) Import SMBus ●To access I2C bus on Raspberry Pi using SMBus Python module, import SMBus module as...follows. import smbus ●Create object of SMBus class to access I2C based Python function. = smbus.SMBus
, u8 command, int size, union i2c_smbus_data *data); //用于检查I2C主控制器所支持访问接口,如I2C_FUNC_SMBUS_BYTE,查看是否支持...该函数会调用i2c_smbus_xfer ?..., u8 command, int size, union i2c_smbus_data *data); //用于检查I2C主控制器所支持访问接口,如I2C_FUNC_SMBUS_BYTE,查看是否支持...smbus单字节读取和写操作 u32 (*functionality) (struct i2c_adapter *); } ?...所以只会向下执行,当执行到i2c_smbus_xfer_emulated ,会调用 ? 该函数会调用 ?
领取专属 10元无门槛券
手把手带您无忧上云