USB与微控制器通信问题

USB与微控制器通信问题

我是 Linux 新手,目前使用 Ubuntu 12.04。它在 Windows 分区中运行。我开发了一个 Python 程序,它通过 USB 端口从微控制器读取串行数据。一切运行正常,直到两天前它开始崩溃。在dmesg | grep tty控制台输入时,我得到以下输出:

[    0.000000] console [tty0] enabled
[   14.599394] cdc_acm 3-1:1.0: ttyACM0: USB ACM device
[  290.236065] cdc_acm 3-1:1.0: ttyACM0: USB ACM device
[ 1105.915191] cdc_acm 3-1:1.0: ttyACM0: USB ACM device

每次我连接和断开 USB 时,我都会得到一条包含相同数据的新线路。唯一的区别是时间。这是正确的吗?还是我有问题?任何帮助都将不胜感激。谢谢

更新:

问题出在微控制器上。每次它在一段时间内没有收到任何传感器的数据包时,它都会重新启动。微控制器是无线传感器网络上的路由器。每次微控制器重新启动时,其连接端口都会增加,例如ttyACM0增加到ttyACM1。将控制器连接到 Raspberry PI 后,这种情况就不会再发生了。

答案1

  1. 检查 USB 供应商 ID、产品 ID 和序列号。

    $ dmesg | grep usb
    [...]
    [11427.635362] usb 2-1.2: new high-speed USB device number 8 using ehci-pci
    [11427.730823] usb 2-1.2: New USB device found, idVendor=04e8, idProduct=685e
    [11427.730830] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    [11427.730834] usb 2-1.2: Product: SAMSUNG
    [11427.730838] usb 2-1.2: Manufacturer: Android
    [11427.730842] usb 2-1.2: SerialNumber: S610275b03f86
    [11427.742314] usb-storage 2-1.2:1.0: USB Mass Storage device detected
    [11427.742436] scsi8 : usb-storage 2-1.2:1.0
    [11427.786013] usbcore: registered new interface driver cdc_acm
    

    或者udevadm info -a /dev/ttyUSB1可能更完整。

  2. 创建新的 udev 规则文件。以 Android 手机、Arduino、Bus pirate 和 ARM 套件的规则为例。

    $ sudo nano /etc/udev/rules.d/99-my-usb-serial.rules
    SUBSYSTEM=="tty", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="685e", ATTRS{serial}=="S610275b03f86", SYMLINK+="android"
    SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A6008isP", SYMLINK+="arduino"
    SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A7004IXj", SYMLINK+="buspirate"
    SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTDIF46B", SYMLINK+="ttyUSB.ARM"
    

参考:

相关内容