问题标签 [i2c]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 将 32 位寄存器地址传递给 I2C_RDWR
我需要编写一个 I2C 程序,该程序可以使用 I2C_RDWR ioctl 将数据写入 32 位和 16 位寄存器地址。
据我所知,设备地址和数据使用 linux i2c 驱动程序中定义的 i2c_msg 结构中的相同缓冲区 buf 一起传递到设备中:
目前我正在传递 32 位寄存器地址,如下所示:
如果寄存器地址为 16 位,则执行以下代码:
我如何让设备知道有多少缓冲区数组包含地址?
另外,这段代码正确吗?
不幸的是,我目前没有任何 I2C 设备可供测试。
欢迎任何帮助。
谢谢。
linux - I2C_SLAVE ioctl 用途
我正在编写使用通用 linux驱动程序实现简单i2c
读/写功能的代码i2c
linux/i2c-dev.h
我对以下内容感到困惑ioctl
:I2C_SLAVE
内核文档说明如下:
您可以使用 read(2) 和 write(2) 调用来执行普通的 i2c 事务。您不需要传递地址字节;而是在尝试访问设备之前通过 ioctl I2C_SLAVE 设置它
但是我正在使用ioctl I2C_RDWR
where 我再次使用i2c_msg.addr
.
内核文档还提到以下内容:
一些 ioctl() 调用用于管理任务,由 i2c-dev 直接处理。示例包括 I2C_SLAVE
那么一定要使用ioctl I2C_SLAVE
吗?如果是这样,我只需要设置一次还是每次执行读写时都需要设置它?
如果我有一i2c
台设备,我可以只测试设备上的代码,不会打扰你们,但不幸的是我现在没有。
谢谢您的帮助。
arduino - 使用 Arduino 进行液晶 LCD 编程?
我希望我的 LCD 显示“Voltage =(sensorValue)”,但现在我可以让程序在我转动电位器时识别该值的唯一方法是,如果我把它放在一个循环中。但是当我把它放在一个循环中时,整个屏幕会充满 1s、2s、3s、4s 或 5s,具体取决于电位器的设置位置。
如果我没有将它放在一个循环中,那么无论电位器的设置是什么,都会在屏幕上弹出,并且如果电位器转动则不会改变。
如何将循环的结果放在循环之外,以便我可以拥有“(Voltage = sensoreValue)”?
这是我的程序:
linux - 从 Linux 用户空间实现 i2c
很抱歉对我的问题进行了冗长的描述:-)
我接到了一项任务,在我们新的基于 PC 的电路板设计上对 I2C 设备执行简单的读写操作。该板将使用 Portwell 的 Qseven 迷你 PC 构建,该 PC 使用 Intel Tunnel Creek (ATOM) 处理器(本质上是 x86 处理器)和 EG20T IOH 芯片。
I2C 从设备是 TI AIC3254 音频编解码器。操作系统是 Ubuntu 10.04 LTS 32 位。
该设备的 PC 部分本质上是通用 PC。
PC/OS 需要在系统初始化时通过 I2C 加载编解码器(寄存器)。之后,编解码器将由 Atmel 处理器控制,该处理器将成为 I2C 总线上的第二个主控器(在初始化完成之前保持静默)。ATOM 不会与 AIC3254 进行额外的直接交互。
据我所知,我需要做的就是通过 I2C 总线将编解码器的“程序”复制到它,然后将其读回(穷人的负载检查)。
似乎合乎逻辑的方法是使用用户空间程序与 AIC3254 对话,而不是尝试创建设备驱动程序。但是,在我modprobe i2c-dev 之后;depmod -a no I2C bus 出现在 /dev 和i2c_tools中的 i2cdetect 找不到总线(设备?)。
我需要的是对 Linux I2C 访问编码有所了解。在这里完成菜鸟。
毕竟我需要设备驱动程序吗?对于通用程序,我不需要任何花哨的界面,只需对总线/页面/寄存器进行一次简单的读/写操作。也许是一个简单的字符模式驱动程序?我读过一些暗示存在这种事情的东西。
我是否需要在/sys/bus/i2c/devices/i2c-0/中放置 *new_device* 和 *delete_device* 文件?
即使安装了 i2c-dev.ko,/sys/bus/i2c/devices/中也没有出现 i2c-x“文件” 我在这里缺少什么?
我可以假设或找出这个内核是否知道 EG20T IOH 芯片吗?或者这些芯片是否足够通用,i2c-dev可以处理它们?
我需要 i2c-core.ko 吗?在 Ubuntu 映像上找不到它。如果我需要它,我需要什么来获得它?
我对i2c-algo_???.ko有用吗?
很抱歉成为这样的菜鸟。谢谢你的帮助。
linux - i2c 数字音频流作为 linux 音频中的输入
目前我有一个 A/D(模数转换器),我用它来将模拟音频流转换为数字,以通过 I2C 输入计算机音频系统。最终目标是获取数字流并通过 I2C 总线将其泵送到运行 Debian Linux 的计算机,然后将其作为音频输入接收以进行修改(对音频进行效果)或仅输出据说是电脑的麦克风输入。
目前我不确定在 linux 中从哪里开始。任何和所有的帮助将不胜感激。
我还没有设置数字音频的 I2C 输出流,因为我不知道如何在 linux 端解释数据。
谢谢,埃里克
linux - 在 linux 中访问 i2c:/dev/ vs /sys/class
您好,我是一名新手嵌入式 linux 工程师,仍在学习中。
我之前从事过一个项目,我必须使用 i2c 总线来访问外围设备。我只是通过使用 /dev/i2c-1 设备文件来做到这一点。
我现在在一个新项目中,客户似乎根本没有使用 /dev/ 目录来做任何事情。当我看到 /dev/i2c-1 不存在时,我认为内核不是使用 i2c 支持构建的。我问了客户,他们将我指向目录 /sys/class/i2c-dev/i2c-1/。
我不明白这与 /dev/ 文件有何不同,为什么他们选择这样做,或者我如何使用它。
这是一个相对开放的问题。我想我正在寻找上述问题的答案,并且可能会指向一些可以扩大我的理解的文档。
c++ - Mac OS X 上 IOKit 中的 i2c 通信
我正在尝试使用 MacOS X 函数 IOI2CSendRequest 通过 ddc/ci 与显示器通信。如果我只发送“设置”命令,一切正常,比如设置亮度。我看到显示接收命令,因为显示改变亮度。
但是当我试图从显示器接收回复时,我收到了一些垃圾。使用 IOI2CSendRequest 发送和接收回复的正确方法是什么?
这是我当前的代码:
kr 和 request.result 都等于 kIOReturnSuccess,但 buf 中没有有效数据。发送的命令是“51 82 01 10 AC”,其中 AC 是校验和。
操作系统为 10.6.8(雪豹)
知道这段代码有什么问题吗?
verilog - 我的 I2C 链接有什么问题?它在不应该的时候切换 LED
我有两个通过 I2C 连接到我的 Arduino 的 Lattice 芯片。每个 Lattice 板包含 8 个 LED。我的 Arduino 是大师。
我的目标是驱动每个板上的 LED。
到目前为止一切顺利,但存在一些错误。我通过告诉格子板开始这个过程,我正在寻址,我即将发送我希望它驱动的引脚。我现在通过发送一个设置为 10 的字节来做到这一点。在此之后,我发送我希望它以这样的字节驱动的引脚,10110111,其中索引 0 是第一个 LED,索引 1 是第二个 LED,依此类推,依此类推到 8。
用于此的 Verilog 代码:
最后我发送一个字节,一个 11,它告诉 Lattice 板它的设置并驱动连接到 8 个 LED 的引脚。
其余代码基于此处的 I2C 从机实现。
我的问题是,如果我从 Arduino 发送 drivePins 字节,第一个索引中有 1 (例如 0000110 0),那么它会吓坏并打开它不应该打开的 LED。LED 模式最终看起来像这样:11110110,来自这个 11111110。那么有人知道发生了什么吗?
在 Arduino 上,我正在使用 Wire 库。
传输看起来像这样。
android - 三星 Galaxy S3 上的 I2C 驱动程序
我想从 Android 应用程序访问我的三星 S3 GT19300 上的 I2C 驱动程序。
我需要root设备才能做到这一点吗?
提前致谢。