Articles of i2c

Linux的i2c模块不完整的xfer(0x48)错误

我工作i2c设备连接到A13embedded式linux.I试图只是从寄存器获取数据,但总是得到不完整的xfer(0x48)error.ifindi2c-sunxi.c文件中的错误代码。 case 0x48: /* SLA+R has been transmitted; NOT ACK has been received */ err_code = 0x48;//err,wakeup the thread 我的i2c模块function是; unsigned char buf[1] = { 0 }; struct i2c_msg msgs[] = { { this_client->addr, 0, 1, buf }, /* setup read ptr */ { this_client->addr, I2C_M_RD, 1, buf }, /* read status + date */ […]

访问设备的注册i2c

我最近买了一个gy-521板 ,我试图通过以下连接与Raspberry Pi 3一起使用 RPi3 | GY-521 ——————— 3.3V <——-> Vcc GND <——-> GND SCL <——-> SCL SDA <——-> SDA 使用i2cdetect -y 1我得到以下内容 0 1 2 3 4 5 6 7 8 9 abcdef 00: — — — — — — — — — — — — — 10: — — — — — — […]

Raspberry PI,如何configuration其他GPIO作为I2C工作

我正在使用Raspberry PI作为我的一个项目。 在这个项目中,我需要两个不同的I2C接口同时运行。 我知道如何将GPIO-0和GPIO-1设置为I2C(在任何地方都有教程,例如: 在树莓中启用I2C的教程之一 )。 另外在这个链接RPi低级周边它说,任何GPIO可以作为I2C工作。 我如何configuration其他GPIO作为I2C工作,所以我可以有不同的接口并行。 (我知道我需要添加上拉电阻,但是我不知道如何在Linux shell或C中进行configuration)。 有人可以通过简单的步骤解释我如何做到这一点? 谢谢,阿德里安。

如何在MIPS开发板的u引导代码中添加对bit-banging i2c总线的支持

我有一个MIPS板AR9341 ,我想从u启动本身而不是从内核中添加对位i2c总线的支持。 我还有两个免费的GPIO ,可用于SDA和SCL引脚。 我也读了一些文件,以及如何添加支持在u启动i2c总线的支持,但没有得到正确的想法。 有没有人有任何文件或想法如何增加使用从u启动GPIO的bit-banging i2c总线的支持? 如果有人对此有所了解,请尽快帮助我。 我试图设置和清除两个从u启动LED指示灯 ,并没有任何问题,它工作正常。 现在我想连接这两个GPIos作为SDA和SCL线来进行软件比特分离。 有没有人有想法如何configuration这个GPIO作为SDA和SCL线在u引导代码本身?

如何在Linux上通过USB从i2c设备检索数据

我有一个温度传感器,它使用USB-I2C适配器连接( http://www.robot-electronics.co.uk/htm/usb_i2c_tech.htm )我将此设备连接到我的Linux计算机(suse10)。 我inputdmesg然后看到 usb 3-3: new full speed USB device using ohci_hcd and address 10 usb 3-3: new device found, idVendor=0403, idProduct=6001 usb 3-3: new device strings: Mfr=1, Product=2, SerialNumber=3 usb 3-3: Product: FT232R USB UART usb 3-3: Manufacturer: FTDI usb 3-3: SerialNumber: A7007K93 usb 3-3: configuration #1 chosen from 1 choice ftdi_sio 3-3:1.0: […]

使用linux的I2C驱动程序

我有一个要求,写一个Linux设备驱动程序接口的外围显示板上有button和LED。 在驱动程序中,我需要通过I2C读写外设板上的另一个I2C设备,然后将button事件发送到驱动程序内的应用程序代码。 我想我已经设法使用input子系统“模拟”键/button事件,直到应用程序,我对这部分需求非常满意。 然而,我正在苦于如何通过I2C总线与外围I2C设备进行通话。 我不想写新的I2C通信例程,因为我希望可以使用已经存在的I2C通信API。 我的问题是,有很多关于如何在应用程序(用户空间)中使用I2C的文档,通过在内核中使用i2c-dev,但没有发现有用的解释如何在特定的I2C调用I2C总线,从我自己的驱动程序(我的驱动程序调用i2c驱动程序??)。 我希望这是有道理的,我已经在网上看了很多东西,但似乎没有解释的东西简单。 任何帮助apprciated, 谢谢

在Beaglebone黑色的DS1307

我正在尝试将DS1307 RTC整合在beaglebone黑色上,我正在用rootfs构build一个定制的内核,我使用了beagle P9.17&P9.18的SCL和SDA引脚; 在beaglebone黑色I2C-1,但当我尝试做 i2cdetect -r 1 它没有显示DS1307的0x68从机地址,按照教程http://learn.adafruit.com/adding-a-real-time-clock-to-beaglebone-black/wiring-the-rtc 有关这个问题的任何想法?

errnos在哪里定义? 例如,用于i2c的linux c / c ++程序

当一个经典的linux c / c ++软件出现问题时,我们有了一个魔术variableserrno,它给我们提供了错误的线索。 但是这些错误在哪里定义? 我们来举个例子(它实际上是一个Qt应用程序的一部分,因此qDebug())。 if (ioctl(file, I2C_SLAVE, address) < 0) { int err = errno; qDebug() << __FILE__ << __FUNCTION__ << __LINE__ << "Can't set address:" << address << "Errno:" << err << strerror(err); …. 下一步是看看errno是什么,所以我们可以决定是否退出或试图解决这个问题。 所以我们可能在这个时候添加一个if或者switch。 if (err == 9) { // do something… } else { //do someting else } […]

一个i2c设备的linux驱动 – 读两个字节

我正在尝试为I2C设备编写一个Linux驱动程序,它似乎与典型设备略有不同。 具体来说,我需要读取一行中的两个字节,而不发送停止位之间,如下所示: [S] [Slave Addr | 0] [A] [Reg Addr 1] [A] [Sr] [Slave Addr | 1] [Data Byte 1] [NA] [Sr][Slave Addr | 0] [A] [Reg Addr 2] [A] [Sr] [Slave Addr | 1] [Data Byte 2] [NA] [P] 我已经看了几个这样做的方法,包括i2c_transfer(),i2c_master_send()和i2c_master_recv(),但我不知道他们是否会支持这些。 有没有办法直接与这些function,这是不是非常痛苦? 我迄今发现的文件在这个问题上还没有完全清楚。 编辑#1:添加符号的关键,使其可读性。 致敬http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/i2c/i2c-protocol Key to symbols ============== S (1 bit) : Start bit […]

用distutilscross交叉编译python本地C扩展,setup.py将不接受'-x'参数

我有一个Python的工作交叉编译,但是我已经尝试使用distutilscross从i2c工具交叉编译py-smbus扩展,并且无法通过命令行。 文档( https://pypi.python.org/pypi/distutilscross )表明它应该像python setup.py build -x (在设置适当的环境variables之后)一样简单,但是当我运行该命令时,'-x '触发错误的参数错误。 有谁知道如何解决这一问题?