如何“通过”访问SMBus(i2c)设备,FT232RL(USB)芯片和MAX32213-v芯片。
请注意,我已经花了几天时间研究下面的错误和芯片。
我正在跑步: Linux saturn 4.15.0-45-generic#48〜16.04.1-Ubuntu SMP Tue Jan 29 18:03:48 UTC 2019 x86_64 x86_64 x86_64 GNU / Linux
和Python3.5.2
我有一个SMBus(/ dev / i2c- *)BP(血压)设备,其电缆具有2个串联芯片: 1. FT232RL-TUBE 768-1306-ND-说明:IC USB FS串行UART 28-SSOP 2. MAX32213-V至5.5V-RS-232线路驱动器和接收器
要使用BP设备,上述2个芯片需要进行双向协议转换。
请注意,当我从笔记本电脑上拔下USB电缆时,在/ var / log / syslog中会出现冗长的条目。但是,当我从BP设备拔出电话插孔{是的,电话插孔}时,在/ var / log / syslog中没有任何条目。因此,我得出的结论是,此时的通信被电缆中的芯片所阻塞。
lsusb给出: 总线001设备016:ID 0dbc:0003 A&D医疗和串行电缆[AND智能电缆]
具有: SUBSYSTEM ==“ usb”,ATTRS {idVendor} ==“ 0dbc”,ATTRS {idProduct} ==“ 0003”,SYMLINK + =“ serial / bp” 在/etc/udev/rules.d/99-usb-serial.rules中,在运行sudo udevadm control --reload-rules之后,我将/ dev / bus / usb / 001/016作为/ dev / serial / bp的符号链接&& sudo udevadm触发器
cat
root @ foobar:/ dev#cat
请注意,我在输出的第一行中获得了idVendor和idProduct ID。
我似乎正在与FT232RL .... USB FS串行UART交谈。似乎是供应商和产品ID的来源。
当我尝试使用python3代码从usb端口读取时:
从串行导入序列
句柄=串行(端口='/ dev / bus / usb / 001/016',波特率= 9600,超时= 3)
bytes_in = handle.readline() string_in = bytes_in.decode(“ utf-8”)
print(“ string_in =”,string_in)
我得到:
termios.error:(25,“设备的不适当的ioctl”)。
这些问题浮现在脑海:
cat实际上如何启动读取?
行内芯片是否将我的命令(包括cat)通过2个芯片传递到实际的BP设备? (鉴于lsusb的输出,我怀疑这种情况会发生,但是值得询问。)
我如何故意将“ FT232RL .... USB FS串行UART”设置为直通模式。
如何确认FT232RL芯片的状态?我在制造商的网站上找到了FT232RL的库。但是,我在AMD机器上运行,但它们似乎没有可用的AMD库。
提前感谢所有回应!
unixprgrmr01