環境
- Ubuntu 18.04
- USBシリアルモジュール CP2102
- RobotDyn STM32F103 Dev.Board
- NFC RFID-RC522 モジュール
- ST-Link V2
「Arduino ESP32 と STM32 で NFC RFID-RC522」
https://qiita.com/nanbuwks/items/96c3c2d2af2cf97f3797
の実験をやっている時に、USBシリアルモジュールからデータが受け取れなくなる時がありました。
dmesgでは以下のようにエラーが出ます。
[212046.843899] cp210x ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[212048.518972] cp210x ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
[212284.985795] cp210x ttyUSB0: failed get req 0x8 size 1 status: -32
ぐぐると FT232のニセモノが問題だとか、ARMが原因だとか出てきましたが根拠のあるものでは無さそうです。
CP2102 USBシリアル変換アダプタ
このモジュール自体はいろんな実験で使っていて割と信頼みがありました。
刺した時のdemsは以下の通り。
[212467.319926] usb 1-1.2.1.2: new full-speed USB device number 123 using ehci-pci
[212467.460061] usb 1-1.2.1.2: New USB device found, idVendor=10c4, idProduct=ea60
[212467.460063] usb 1-1.2.1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[212467.460064] usb 1-1.2.1.2: Product: CP2102 USB to UART Bridge Controller
[212467.460065] usb 1-1.2.1.2: Manufacturer: Silicon Labs
[212467.460066] usb 1-1.2.1.2: SerialNumber: 0001
[212467.469347] cp210x 1-1.2.1.2:1.0: cp210x converter detected
解決方法
最初にこの記事をポストしたときには、ボーレートが遅すぎてフロー制御がうまくいってないのではないかという内容でしたが、それは間違いでした。
この実験では RobotDyn STM32F103 Dev.Board へ ST-Link から 3.3V の電源を供給していたのですが、供給力不足だったようです。RFID-RC522が動作した時に電圧降下が起こったかな?
ST-Linkからの電源供給をやめて、USBシリアルから5VをRobotDyn STM32F103 Dev.Board へ供給するようにしたら解消しました。