问题标签 [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.
c - 如何使用文件描述符刷新写入?
事实证明,对 open() 与 fopen() 的整个误解源于 ARM 上的 Linux 2.6.14 内核中存在错误的 I2C 驱动程序。向后移植一个工作位 bashed 驱动程序解决了我试图在这里解决的问题的根本原因。
我试图找出 Linux (I2C) 中串行设备驱动程序的问题。看来,通过在设备上的写入和读取之间添加定时操作系统暂停(睡眠),事情会工作......(好多了)。
旁白:I2C 的本质是主机读取或写入的每个字节都由线路另一端(从机)上的设备确认 - 改善事情的暂停鼓励我将驱动程序视为异步工作 - 我无法与公共汽车的工作方式相协调。随便...
我想确保刷新写入(而不是使用固定持续时间的暂停),或者以某种方式测试写入/读取事务是否以多线程友好的方式 完成。
使用的问题fflush(fd);
是它需要'fd'作为流指针(不是文件描述符),即
我的问题是我需要使用ioctl()
不使用流指针的 。IE
建议?
c - 在 Linux 上使用 I2C 进行读/写
我正在尝试读取/写入FM24CL64-GTR FRAM
通过地址上的 I2C 总线连接的芯片0b 1010 011
。
当我尝试写入 3 个字节(数据地址 2 个字节,+ 数据 1 个字节)时,我收到一条内核消息 ( [12406.360000] i2c-adapter i2c-0: sendbytes: NAK bailout.
),并且写入返回 != 3。请参见下面的代码:
但是,当我写入 2 个字节,然后再写入另一个字节时,我没有收到内核错误,但是当尝试从 FRAM 读取时,我总是返回 0。这是从 FRAM 读取的代码:
这些函数都没有返回错误值,我也尝试过:
这也成功了,但总是返回 0。这是否表明硬件问题,或者我做错了什么?
在 Linux 上是否有任何用于 FM24CL64-GTR over I2C 的 FRAM 驱动程序,API 是什么?任何链接都会有所帮助。
linux - 如何为 i2c 设备编写新的 Linux 驱动程序?
我有一个带有一些 i2c 控制功能的 USB 设备,我想添加一个用户空间 API 来处理这些位。如何将 i2c 支持添加到设备的现有驱动程序?
c - I2C ISR 和中断
平台 - ARM9
我有一个通过 I2C 连接到 ARM9 的第三方设备。我的问题是 I2C 读/写发生了变化。看起来 IRQ 线已被断言,但在有数据要读取时从未被取消断言。由于第三方设备对地址包进行 NACK,读取失败。所以任何后续的写入都会失败。
我想知道我的中断处理是否正常。在为 IRQ 提供服务的 ISR 中,我禁用中断,取消注册中断处理程序,然后向任务发出信号以从 I2C 总线读取。最后,我重新启用中断。
当任务为上面发布的信号提供服务时,我尝试从 I2C 总线读取数据,但这失败了。最后,我总是在读取尝试后重新注册 ISR。在处理读取信号期间不会发生中断禁用/启用。
我的问题是读取/写入 I2C 总线时是否需要禁用中断?
选择的编程语言是使用专有 RTOS 的 c。
embedded - PIC I2C 从机确认数据
我正在研究 PIC16F88X 的 I2C 协议。我想做的是根据 I2C 上接收到的数据使 I2C 从机能够进行 ACK 或 NACK。
PIC 可以对在线发送的 I2C 地址进行 ACK 或 NACK,但从我读到的内容来看,它总是会在后续接收到的字节上进行 ACK。那是对的吗?
在以下通讯中:
我希望从站能够根据寄存器_
值中的值进行确认或确认。如果从机不了解寄存器_
值,它不应该 Ack。
有人可以确认这是不可能的,还是告诉我该怎么做?
avr - 如何在 AVR Studio 中打开文件?
我有两个 ATMEGA88(主机和从机)通过 I2C 发送测试 [] 正常工作。
工作环境:AVR Studio 使用 C.
我需要的是让主服务器能够向从服务器发送指定的文件,例如 mydoc.txt。
我应该使用另一个应用程序来构建 UI 吗?如何连接不同的 IDE 并使其工作?有专业的吗?还是示例代码?
谢谢!
linux - Linux 内核中的 I2C 写确认轮询
这里平淡无奇的反应让我想知道这一点。
我一直背负着一个设备(Analog Devices 525x)(来自数据表,第 16 页):
在内部 [EEPROM] 写周期中禁用 I2C 接口。
这似乎不公平,例如“我现在要从沙发上下来,所以暂时不要使用它,因为我让座垫裂开了一个”。老实说,为什么这应该是我的问题?
无论如何,数据表表明确认轮询是答案 - 进入 Linux 内核...... Linux GPIO bit bashed I2C 驱动程序是否提供了这样做的机制? 本质上是发送一个设置了写入位的地址并继续这样做,直到出现 ACK。
我在 ARM 上使用 2.6.14 并带有反向移植的 GPIO 位抨击驱动程序(我认为来自 2.6.19)。
c - 制作一个指向两个字节的指针
除了呼吸之外,我在所有方面都是新手,如果我不清楚,很抱歉,但这里是:
我在 C 中有一个函数,它通过 I2C 总线将字节写入电路,在头文件中它看起来像这样:
- hJida:板把手。
- dwType:I2C 总线的从零开始的编号。
- bAddr:I2C 总线上设备的地址,写入总线时的完整 8 位。
- pBytes:指向包含字节的位置的指针。
- dwLen:要写入的字节数。
如果我只想将一个字节写入地址为 0x98 的电路,我会这样做:
这似乎可行,但如果我想写两个字节,比如 0x10FF,它不会。那么如何创建一个指向两个字节而不是一个字节的指针呢?
谢谢
communication - 关于基于中断的通信
我们有一个简单的架构:
- 主芯片(基于arm9)
- PIC控制器
PIC 通过基于中断的 I2C 通信协议与 ARM 通信以传输数据。在中断内部,我们发出一个从 I2C 层(总线)读取数据的任务。
如果数据有限,我们通常不会有太大的问题来读取数据并将其发送到上层。如果这个数据非常大,中断将被捆绑很长时间。
第一个问题是:
我对吗?
如果我是对的,如何避免同样的情况?...或者我们可以采取不同的解决方案吗?