我正在尝试为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 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.
线程标识和进程标识之间的关系
BlueZ – 00:00:00:00:00:00之间的连接
ContextMenuStrip向上或向下滚动button
在按下button的C#播放声音
Linux / C ++:获取Internet IP地址(不是本地计算机的IP)
WPF excel interop error.'Window'是'System.Windows.Window'和'Microsoft.Office.Interop.Excel.Window'
Windows推送通知服务由于超时而失败
如何在进程死于Windows之前做些事情
将USB主机桥接到设备
访问()有什么问题?
在相同的读/写操作中,在字节之间不发送停止位。 i2c_master_recv可能是你需要的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。