簡體   English   中英

用於i2c設備的linux驅動程序 - 兩個字節讀取

[英]linux driver for an i2c device — two byte read

我正在嘗試為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(),但我不確定他們是否會支持這些。 有沒有辦法直接使用這些不是非常痛苦的功能? 到目前為止,我發現的文件在這個問題上並不完全清楚。

編輯#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
P     (1 bit) : Stop bit
Rd/Wr (1 bit) : Read/Write bit. Rd equals 1, Wr equals 0.
A, NA (1 bit) : Accept and reverse accept bit. 
Addr  (7 bits): I2C 7 bit address. Note that this can be expanded as usual to 
                get a 10 bit I2C address.
Comm  (8 bits): Command byte, a data byte which often selects a register on
                the device.
Data  (8 bits): A plain data byte. Sometimes, I write DataLow, DataHigh
            for 16 bit data.
Count (8 bits): A data byte containing the length of a block operation.
[..]: Data sent by I2C device, as opposed to data sent by the host adapter.

在相同的讀/寫操作中,在字節之間不發送停止位。 i2c_master_recv可能就是你所需要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM