打印
[AT32F405]

【AT-START-F405测评】usb虚拟串口收发测试

[复制链接]
667|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
上一篇我们成功配置好开发环境,并点亮了led。
点灯不能停,那就做个usb模拟串口控制led。
USB虚拟串口,简称VCP,是Virtual COM Port的简写,它是利用 USB的 CDC类来实现的一种通信接口。我们可以利用USB功能,来实现一个USB虚拟串口,从而通过USB,实现电脑与单片机的数据互传。
只需要通过一个下载虚拟串口驱动程序+串口调试助手即可调试,非常实用。
打开官方的例程,关键只有几个文件cdc_desc.c/h是设备描述
序列号 、厂商产品ID、制造商、产品名、配置描述、接口描述都在这里配置
<p>#define USBD_CDC_DESC_MANUFACTURER_STRING   "Artery"  </p><p>#define USBD_CDC_DESC_PRODUCT_STRING         "AT32 Virtual Com Port  "</p><p>#define USBD_CDC_DESC_CONFIGURATION_STRING   "Virtual ComPort Config" </p><p>#define USBD_CDC_DESC_INTERFACE_STRING       "Virtual ComPort Interface"</p>


我们用到的虚拟串口功能在3.12有介绍

把while部分删掉,查看class.h文件看到咱们需要的发送接收函数就在这。

然后重建while循环,简单发送一个字符串
<p>unsigned char buf[] = "hello 21ic";</p><p>usb_vcp_send_data(&otg_core_struct.dev, buf, sizeof(buf));</p>


烧录程序后连接usbHS_Device接口,打开串口助手

可以看到串口正常打印。
再加一行代码实现上位机控制点灯的功能
flag == '1' ?gpio_bits_reset(GPIOF, GPIO_PINS_4):gpio_bits_set(GPIOF, GPIO_PINS_4);



时间仓促还有很多其他功能未测试,相关的修改地址在下面
<p class="MsoNormal">根据功能需求修改设备描述信息(<span lang="EN-US">cdc_desc.c, cdc_desc.h</span>)
<span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal">设备描述信息(<span lang="EN-US">g_usbd_descriptor</span>) <span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal">设备配置描述信息(<span lang="EN-US">g_usbd_configuration</span>) <span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal">其它描述 <span lang="EN-US" style="font-family:Symbol;mso-ascii-font-family:
等线;mso-ascii-theme-font:minor-latin;mso-hansi-font-family:等线;mso-hansi-theme-font:
minor-latin;mso-char-type:symbol;mso-symbol-font-family:Symbol">l</span><span lang="EN-US"> </span>根据功能修改要使用端点<span lang="EN-US">(cdc_class.c, cdc_class.h) <o:p></o:p></span></p><p class="MsoNormal">端点定义(<span lang="EN-US">cdc_class.h</span>) <span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal">端点初始化(<span lang="EN-US">class_init_handler</span>,<span lang="EN-US">class_clear_handler</span>) </p><p class="MsoNormal">修改使用的<span lang="EN-US">cdc</span>控制请求 控制请求修改(<span lang="EN-US">class_setup_handler</span>) <span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal">控制请求设置处理(<span lang="EN-US">class_ept0_rx_handler</span>) </p><p class="MsoNormal"><span lang="EN-US">cdc</span>发送接收数据处理修改<span lang="EN-US"> IN </span>数据处理(<span lang="EN-US">class_in_handler</span>) <span lang="EN-US"><o:p></o:p></span></p><p class="MsoNormal"><span lang="EN-US">OUT</span>数据处理(<span lang="EN-US">class_out_handler</span>) </p><p>



















</p><p class="MsoNormal">根据需求修改端点<span lang="EN-US">FIFO</span>大小分配(<span lang="EN-US">usb_conf.h</span>)</p>


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

137

帖子

0

粉丝