Usb 设置Devantech数字罗盘的i2c从机地址
我正在尝试与这里找到的Devantech数字指南针接口- 我正在使用i2c usb转换器将其插入我的笔记本电脑- 首先,我对电气工程知之甚少。我对最基本的东西有一个很好的想法,但之后我就迷路了 我正在努力学习本教程- 然而,当我试图设置设备地址时,我在一开始就被卡住了Usb 设置Devantech数字罗盘的i2c从机地址,usb,i2c,slave,digital-compass,Usb,I2c,Slave,Digital Compass,我正在尝试与这里找到的Devantech数字指南针接口- 我正在使用i2c usb转换器将其插入我的笔记本电脑- 首先,我对电气工程知之甚少。我对最基本的东西有一个很好的想法,但之后我就迷路了 我正在努力学习本教程- 然而,当我试图设置设备地址时,我在一开始就被卡住了 if( ioctl( fd, I2C_SLAVE, ADDRESS ) < 0 ) { fprintf( stderr, "Failed to set slave address: %m
if( ioctl( fd, I2C_SLAVE, ADDRESS ) < 0 )
{
fprintf( stderr, "Failed to set slave address: %m\n" );
return 2;
}
为什么您要尝试向设备发送
0xAA
?
据我所知,这不是它的寄存器(对于CMPS03
,唯一的命令是register15
,它的用法并不常见:更改I2C
地址,工厂重置,…)。
而且0x55
似乎显然不是设备的地址0xC0
应为写入代码
可能是/dev/i2c-0
未正确创建/不正确?
您是如何创建/dev/ic2-0
的
for(int i=0x0;i<0x100;i++) {
if( ioctl( fd, I2C_SLAVE, i ) < 0 )
fprintf( stderr, "Failed to set slave address for address %i: %m\n", i );
}
#define ADDRESS 0x55
int fd = open("/dev/i2c-0", O_RDWR);
if (fd < 0) {
printf("\n<0, %m", errno);
return -1;
}
if( ioctl( fd, I2C_SLAVE, ADDRESS ) < 0 ) {
fprintf( stderr, "Failed to set slave address: %m\n" );
return 2;
}
if( i2c_smbus_write_byte( fd, 0xAA ) < 0 )
fprintf( stderr, "Failed to write 0xAA to I2C device: %m\n" );
Failed to write 0xAA to I2C device: No such device or address