linux i2c 端口 usb,做了一个电容屏的IIC接口转USB

做了一个电容屏的IIC接口转USB

[复制链接]

2a0fb537e2975b3e6b702942b53e1d04.gif

实现的功能:电容屏的触控芯片一般对外接口为IIC接口,无法在windows/linux等电脑主机上直接使用,通过增加一颗转接芯片实现IIC接口转免驱USB接口,可以直接在通用电脑上免驱使用触控屏。

实现框图如下:

a26d678767e8b431ecd7a25f1936bdc5.gif

USB转IIC图片.jpg (29.38 KB, 下载次数: 1)

2018-4-28 17:17 上传

目前转接方案已支持汇顶(如GT911/GT9110/GT928等)、墩泰(如FT5406/FT5446等)、集创北方(如ICNT88X6)等主流触控IC的IIC接口转USB接口。有需求或技术探讨的可直接联系球球1258305301.

应用场景:1、中小尺寸的触控屏,主板为windows/linux/Android等操作系统,这些操作系统提供多个USB接口可以支持多种USB设备,但是对外一般不提供IIC接口,所以对触控屏的需求是USB接口。

2、KTV的点歌机,一般触摸信号都是RS232或RS485连接到主机,但现在点歌主机也大多用windows/linux等系统,所以同样的需要将RS232等串口信号转换为USB信号。

方案构成:转接方案采用一颗USB单片机CH554来实现,USB端模拟成多点触控multi-touch设备,这种设备在windows/linux/Android等操作系统下无需安装驱动,即插即用。另一端通过IIC接口使用触控芯片的协议操作触控芯片实现触控数据的解析和传输。

a26d678767e8b431ecd7a25f1936bdc5.gif

图片1.jpg (13.28 KB, 下载次数: 0)

2018-4-28 17:18 上传

在此方案中CH554的主要作用是通过IIC接口驱动触控芯片并且将屏幕触摸数据转换成电脑可以识别的HID TouchScreen数据,(支持Windows/MAC OS/Linux/Android等常用操作系统)。当然触控芯片的接口不仅局限于IIC,如果是SPI接口或其他接口只要有通讯协议一样可以实现此功能。

用CH554模拟Multi Touch

软件部分:

一般电容触摸IC都是I2C/SPI接口,速度不超过400kbps,只需使用CH554模拟I2C总线接口读取相关的数据即可,如:按下释放状态、坐标、坐标ID、按下手指的数量等。 获取数据后通过USB接口将数据上报给主机。

原理图:

3e1451b5d7d24d37271d62f085937811.gif

USB2IIC原理图.pdf

(159.44 KB, 下载次数: 119)

2018-4-28 17:20 上传

点击文件名下载附件

此内容由EEWORLD论坛网友明天会更好124原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要读取通过 I2C USB 接口发送来的数据,你需要遵循以下步骤: 1. 确认设备连接 首先,你需要确认设备已经正确连接到计算机,并且在 Debian 系统中被正确地检测到。你可以使用 `lsusb` 命令来查看连接的 USB 设备列表。如果设备未在列表中显示,可能需要安装额外的驱动程序或配置。 2. 安装 i2c-tools 要与 I2C 设备进行通信,你需要安装 i2c-tools 包。可以使用以下命令来安装: ``` sudo apt-get install i2c-tools ``` 3. 确认 I2C 地址 确认 I2C 设备的地址,这个地址在设备的数据手册中可以找到。你可以使用以下命令来扫描 I2C 总线并列出已连接的设备: ``` sudo i2cdetect -y 8 ``` 在这个命令中,`-y` 选项指定了 I2C 总线的编号,`8` 是我们的 I2C 总线号。如果设备正确连接并且能够被检测到,你应该能够在扫描结果中看到该设备的地址。 4. 读取数据 要读取从设备发送的数据,你可以使用 `i2cget` 命令。该命令的语法如下: ``` sudo i2cget -y 8 [设备地址] [寄存器地址] [数据格式] ``` 在这个命令中,`-y` 选项指定了 I2C 总线的编号,`8` 是我们的 I2C 总线号。`[设备地址]` 应该是你在前一步中找到的 I2C 设备地址。`[寄存器地址]` 是要读取的数据所在的寄存器地址。`[数据格式]` 指定了读取数据的格式,可以是 `b`(byte)、`w`(word)或 `c`(block)。 例如,要读取设备地址为 0x50、寄存器地址为 0x00 的字节数据,你可以使用以下命令: ``` sudo i2cget -y 8 0x50 0x00 b ``` 如果一切设置正确,该命令应该返回一个字节的数据。 ### 回答2: 在Debian中,要读取通过I2CUSB设备发送的数据(如/dev/i2c-8),可以按照以下步骤进行: 1. 安装必要的软件包:使用apt命令安装i2c-tools软件包,该软件包为I2C工具提供了必要的命令和实用程序。 ``` sudo apt install i2c-tools ``` 2. 确认设备存在:使用i2cdetect命令来扫描系统上连接的I2C设备,并确认USB设备在I2C总线上的地址。 ``` sudo i2cdetect -y 8 ``` 3. 设置权限:默认情况下,I2C设备的读写权限是root用户。为了让当前用户能够访问设备,可以将其添加到i2c用户组中。 ``` sudo adduser <username> i2c ``` 4. 测试读取数据:使用i2cget命令来读取I2C设备上指定地址的数据。 ``` sudo i2cget -y 8 <device-address> <register-address> ``` 其中,`<device-address>`是通过i2cdetect命令获得的设备地址,`<register-address>`是要读取的数据寄存器地址。运行后,会返回I2C设备上指定地址的数据值。 5. 使用编程语言读取数据:如果需要在编程语言中读取数据,可以使用相应的I2C库来访问I2C总线。在Python中,可以使用smbus库来进行I2C通信。 ```python import smbus bus = smbus.SMBus(8) # 选择对应的I2C总线 data = bus.read_byte_data(<device-address>, <register-address>) ``` 其中,`<device-address>`和`<register-address>`是具体的设备地址和寄存器地址。读取后,数据将赋值给`data`变量。 通过以上步骤,你可以在Debian中成功读取通过I2CUSB设备发送来的数据。 ### 回答3: Debian操作系统是一款开源的Linux发行版,它可以在各种不同的硬件平台上运行,并且支持多种接口和协议,包括I2C。 要在Debian中读取通过I2CUSB(/dev/i2c-8)发送的数据,你需要按照以下步骤进行操作: 1. 安装I2C工具包:在Debian系统中,你需要安装适用于I2C的工具包。输入以下命令来安装: sudo apt-get install i2c-tools 2. 配置I2C内核模块:在Debian系统上,I2C内核模块默认是加载的。你可以通过以下命令来验证: lsmod | grep i2c 如果没有任何输出,则表示I2C内核模块未加载。你可以通过编辑/boot/config.txt文件来启用I2C内核模块,并重启系统。 3. 确定I2C设备的地址:使用以下命令来扫描I2C总线并查找连接的设备: sudo i2cdetect -y 8 这里的"8"表示I2C总线号,根据你的实际情况进行修改。该命令输出的结果将显示在I2C总线上找到的设备的地址。 4. 读取数据:一旦你知道了I2C设备的地址,就可以使用i2cget命令来读取数据。以下命令演示了如何读取地址为0x50的设备上的一个字节数据: sudo i2cget -y 8 0x50 这里的"8"表示I2C总线号,"0x50"表示设备地址。该命令将输出一个字节数据。 通过以上步骤,你可以在Debian操作系统中读取通过I2CUSB发送来的数据。请注意,具体的命令和参数可能会根据你的实际情况稍有不同,可以根据需要进行适当的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值