我正在使用ADM1032ARMZ-2R温度传感器(作为初学者,我不允许在这里发布超过2个链接,我已经发布了2个链接用于下面的图像 - 对于数据表,请谷歌ADM1032ARMZ-2R)与Beaglebone Black Rev C预装了Debian(内核--3.8.13)。 ADM1032的数据表显示该芯片可通过SMBus协议在地址0x4D进行通信。我之前从未使用过SMbus,但发现I2C与SMBus的兼容性为100 KHz以下。我试着做以下事情
我写了一个设备树叠加层。它看起来像跟随(我保持频率为100 KHz)
// I2C1的器件树覆盖使用引脚P9.17(SCLK)& P9.18所(SDA)
/dts-v1/;
/plugin/;
/ {
compatible = "ti,beaglebone", "ti,beaglebone-black";
part-number = "BBB-I2C1-4D";
version = "00A0";
exclusive-use =
"P9.18", /* i2c1_sda */
"P9.17", /* i2c1_scl */
/* the hardware ip uses */
fragment@0 {
target = <&am33xx_pinmux>;
__overlay__ {
bb_i2c1_pins: pinmux_bb_i2c1_pins {
pinctrl-single,pins = <
0x158 0x72 /* spi0_d1.i2c1_sda, SLEWCTRL_SLOW | INPUT_PULLUP | MODE2 */
0x15c 0x72 /* spi0_cs0.i2c1_scl, SLEWCTRL_SLOW | INPUT_PULLUP | MODE2 */
>;
};
};
};
fragment@1 {
target = <&i2c1>;
__overlay__ {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&bb_i2c1_pins>;
clock-frequency = <100000>;
#address-cells = <1>;
#size-cells = <0>;
/* adding adm1032 as i2c child device on the bus here */
tempsense: tempsense@4d {
compatible = "onsemi,adm1032";
reg = <0x4d>;
};
};
};
};
编译此文件,将生成的.dtbo文件复制到/ lib / firmware目录中,并使用echo命令将其成功插入/sys/devices/bone_capemgr.9/slots中的虚拟披肩。 It looks like this
我尝试使用以下命令
dtc -f -I fs / proc / device-tree |少
Intended things are happening and it looks like this(请注意,对于i2c1,图片中的&#34; ti,hwmods&#34;字段显示&#34; i2c2&#34;,但实际上是i2c1所以请不要&#39我担心它。我已经读过它,确保无论它显示的是什么都是正确的)
i2cdetect -r 1
但我无法发现任何事情
在0x02,有一个可用于读取的状态寄存器
i2cget -y -f 0x4d 0x02
我 读取失败的 响应
我哪里错了?请帮忙。