打印
[AT32F405]

【AT-START-F405测评】USB-ACM功能开发

[复制链接]
2783|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
USB的CDC类是USB通信设备类 (Communication Device Class)的简称。CDC类是USB组织定义的一类专门给各种通信设备(电信通信设备和中速网络通信设备)使用的USB子类。
其中最常见的是ECM、NCM、ACM,前两个模拟的是网卡设备,ACM模拟的是串口设备。
下面介绍如何在AT32F405上实现USB ACM设备。工程还是使用上一篇文章生成的工程。
1、驱动源码添加
将USB控制器驱动加入工程,USB控制器驱动分usb device驱动和usb host驱动,由于本工程里面只用实现device端的功能,因此只需要添加usb device驱动,如下图

usbd_class里面包含了典型的usb device子类,这里只需要增加usbcdc class

加入头文件相关路径

此外还需要设定使用哪个USB控制器,在宏定义中添加

这样就完成了驱动的添加
2、增加初始化函数
usb初始化需要先配置时钟,即开启otg clock和48m clock

这两个API的实现可以参考
AT32F402_405_Firmware_Library_V2.0.8\project\at_start_f405\examples\usb_device
下面的demo,这里不赘述
接着使能OTG的中断,优先级可以自行设定,这里默认设置为0
接着调用usbd_init函数,这个函数主要设定了usb device子类的回调函数,以及相关的描述符
3、实现中断函数
这里只需要直接调用usbd_irq_handler

这个中断在usb插拔和数据传输时都会进入
4、主循环中添加收发函数
主循环中定期调用usb_vcp_get_rxdata可以接收usbacm的数据

其中第二个参数为指定的缓冲区,返回值为收到数据的长度
到这里就完成了程序编写,下面来调试
将程序编译,下载到板上后,用一条USB线,将板上的HS_DEVICE接口和PC连接,此时PC端会出现一USB串口设备,如下图

其PID VID即为cdc_desc_handler中设定的
此时在调试模式下,可以看到,PC端串口工具发送数据与开发板接收到的一致

这样就完成了USB CDC ACM的开发

使用特权

评论回复
沙发
呐咯密密| | 2024-5-21 13:22 | 只看该作者
官方的驱动很不错,实现很简单啊

使用特权

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

本版积分规则

36

主题

777

帖子

2

粉丝