【问题标题】:Read data from USB Virtual COM in STM32 Nucleo-F767ZI [Ubuntu]从 STM32 Nucleo-F767ZI [Ubuntu] 中的 USB 虚拟 COM 读取数据
【发布时间】:2021-04-15 05:54:31
【问题描述】:

我编写了一个程序来通过USB端口CN13传输数据,使用这个video。我无法看到 USB 虚拟 COM 端口上的数据。当我连接 ST-LINK 和虚拟 COM 端口时,只有一个 USB 设备 ST-LINK 在尝试dmesg | grep usb 时被识别。我在 YouTube 上看到了许多基本的examples,这表明虚拟 COM USB 端口检测是在没有安装任何驱动程序的情况下发生的。 STM32 MOOCs 使用 Windows,但我安装了 Ubuntu 20.04。我已经尝试了一些堆栈溢出solutions。谁能指导我如何克服这个问题?

【问题讨论】:

  • 虚拟串行连接应显示为/dev/ttyACM0(或类似名称)。有这样的设备吗?为了查看串行输出,您需要使用终端程序。你用的是什么程序,能连接到/dev/tty...设备吗?
  • 是的,我得到 /dev/ttyACM0 ,它对应于 ST-LINK,当通过 dmesg 进行检查时......但不是虚拟 COM 端口......
  • “但不是虚拟 COM 端口”是什么意思? /dev/ttyACM0 是虚拟串行端口(或 Windows 术语中的 COM 端口)。再说一遍:您使用或计划使用什么终端程序?
  • Nucleo-144 F767ZI板子有两个USB口,一个是用来刷程序的,检测为ST-LINK,另一个是通信用的,是CN13针,应该是检测到的作为我的 ubuntu 中的虚拟 COM 端口。我正在使用默认终端查看 USB 设备并串行读取数据,我打算使用应用程序 CoolTerm
  • 我正在编写一个简单的程序来在打开 stm32 并尝试从 USB 端口读取数据时发送 hello world 字符串...我按照上面提到的示例链接进行操作,但我无法查看数据流...

标签: stm32 stm32f7


【解决方案1】:

我找到了一种使用 USB 端口进行通信的方法。这是使用 STM32CubeIDE 完成的

  1. 启动 STMCubeIDE 软件。
  2. 选择 USB_OTG_FS 并设置为仅设备模式。
  3. 然后在中间件选项卡中选择 FS IP 的类作为通信设备类(虚拟 com 端口)。
  4. 将 USB 的时钟频率设置为 48MHz。
  5. 生成项目。
  6. 读取 usbd_cdc_if.c 文件
  7. 在 main 中包含 usbd_cdc_if.h 并使用 CDC_Transmit_FS 发送一些数据
  8. 在 Ubuntu 中,打开终端并使用 ls /dev/tty 搜索两个 ACM 端口,ACM0 和 ACM1/ACM2(分别是 STLINK-V3 和 Virtual ComPort)
  9. 使用串口终端进行测试(如 Arduino IDE 的串口监视器)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-28
    • 2022-12-18
    • 2013-02-21
    • 1970-01-01
    • 2021-06-21
    • 2018-05-01
    • 2021-01-28
    • 2014-04-07
    相关资源
    最近更新 更多