lichee zero 的尝试i2c
# i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
# i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: [ 25.766326] i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
-- [ 27.846321] i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
-- [ 29.926323] i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
-- [ 32.006326] i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
-- [ 34.086333] i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
-- [ 36.166322] i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
-- [ 38.246323] i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
-- [ 40.326324] i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
-- [ 42.406330] i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
-- [ 44.486322] i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
-- [ 46.566369] i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
-- [ 48.646323] i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
-- ^C
[ 50.726323] i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
i2c0 看dts tree 是配置了ns2009, i2c1 应该没有接东西,我dts 里面打开了i2c
&i2c1 {
status = "okay";
pinctrl-0 = <&i2c1_pins>;
};&pio {
i2c1_pins: i2c1 {
pins = "PE21", "PE22";
function = "i2c1";
};
};
但是i2c-1 不工作。为什么?
离线
PE21/PE22 上拉了吗?
离线
肯定没有上拉,默认的lichee zero 的板子。 还没有找到这个板子的原理图。
i2c0 的我还可以接I2C的设备做测试吧,例如:ads1115 。
离线
如果没上拉,就会出现上面那个错误。
离线
我用
i2c1_pins: i2c1 {
pins = "PE21", "PE22";
function = "i2c1";
};
没问题:
# i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- 53 -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
但是用
i2c1_pins: i2c1 {
pins = "PB8", "PB9";
function = "i2c1";
};
无法detect 到0x53,也许还需要其他特别设置
离线
看到电路图里有上拉的,TWI0 & TWI 都有上拉,但是为什么我的"PB8", "PB9" detect 不到设备呢?
离线
看到电路图里有上拉的,TWI0 & TWI 都有上拉,但是为什么我的"PB8", "PB9" detect 不到设备呢?
是不是被其他功能复用了?比如 UART
离线
我在linux dts已经把uart0 delete 掉了,回头直接在uboot dts 去掉uart0 试试!
离线
我的nano 配上i2c0 也是这样
离线
小熊猫 说:检查 I2C SCL/SDA 有无上拉
这个咋检查,是要看原理图,再自己增加电路,还是,能够使用软件上拉(这样按照以前的经验,是不行的),但是买的licheezero的板子已经画好了,看原理图也没有加上拉,就是引脚引出,这是表示自己要跳线吗。:|
离线
@forever_rainy
你i2c连设备了吗?设备上的scl sda上拉了吗?
如果设备和zero都没上拉,那肯定不能正常工作。
离线
@forever_rainy
你i2c连设备了吗?设备上的scl sda上拉了吗?
如果设备和zero都没上拉,那肯定不能正常工作。
需要一点时间测试,因为手里没有i2c设备,但是有个stm32f1的核心板,就暂时试试stm32 i2c slave,还要给引脚加上拉电阻,比较麻烦,感谢提示,自己着急了,静不了心下来去研究。
离线
用STM32的话,应该可以配置GPIO的内部上拉,通信速度慢一点应该是可以用的
离线