第三十章 AT32F403A基于V2库 usb hid通信

目录

概述

硬件

USB

软件

添加源码

时钟注意点      

修改代码

测试

最后


概述

         本文主要是使用AT32F403A开发板,基于V2库实现usb hid通讯。

         串口工具使用的Atlink-ez自带的串口功能。

         工程建立、调试工具配置在前面章节有详细介绍。


硬件

         硬件方面使用的是参考官方AT32F437 SURF板子而设计的一个AT32F403A开发板,板子上的芯片是AT32F403AVGT7的型号,开发板上面还板载了一个atlink-ez的仿真器,atlink-ez除了可以在线仿真和下载之外还有一个串口的功能,硬件上是通过跳线帽接到了MCU的串口1,pa9/10上面。

         如下图是开发板pcb图,以及硬件资源。(左边上角的就是atlink-ez,用usb线接到pc即可):


        如下为实物图:

        本章是usb hid功能的测试,相关原理图如下:


USB

         AT32F403A的USBFS 实现了 USB2.0 全速设备协议,总线速度 12Mb/s,支持控制传输(Control)、批量传输(Bulk)、 同步传输(Isochronous)、中断传输(Interrupt),同时支持 USB 挂起/恢复操作。 USBFS 设计有 8 个可配置双向端点,每个端点可根据具体需求配置为不同的传输类型,USBFS 有一块 双端口的 SRAM 用于端点与用户程序的数据交互,同时为了提高传输效率,还实现了批量端点/同步端点 的双缓冲机制。USBFS PHY 内置了 DP 上拉电阻,以满足设备需求。

         官方提供了很多的usb的通信方式的例子,源码在AT32F403A的bsp里面的usb外设文件夹里面,包含虚拟串口、虚拟磁盘、鼠标、键盘、hid、usb耳机等,同时官网也有对应的使用文档介绍。

        如下图:


软件

         本文是使用usb实现的hid的通信功能,官方bsp里面的custom hid虽然也是hid的通信,但是这是和官网提供的上位机对应的,所以本文是通过修改这个示例的部分源码,可以达到和常规的hid通信测试软件进行通信。

         本文使用的hid通信测试软件:

添加源码

         新建立一个工程,添加usb 库的源码和把custom hid 中的设备描述和class源码复制到项目文件中,再都添加到keil工程里面,并把main中的相关函数复制到新工程的main里面。

         如下图: 

时钟注意点      

        USBFS 48M 时钟有两种配置来源:一种是使用内部的48M高速时钟,一种是使用ppl的分频,当使用ppl的分频的时候,系统的时钟一定是48M的整数倍,这样才能分出48M给usb使用,同时分频系数还不能超4,所以使用usb并且ppl提供usb时钟的时候,系统时钟最高是192M=48M*4的主频。通过void usb_clock48m_select(usb_clk48_s clk_s)来设置即可。

        本文使用内部his提供usb时钟,系统主频跑240M。

修改代码

        修改报告描述符:

        修改数据处理函数,把收到的数据复制再发出来,这样就形成一个回环的效果,方便测试。 


测试

         测试代码

         主循环每秒通过串口1输出log信息,hid的是回环测试,上面已经有图片。

测试结果

         Hid工具发出的数据,和收到的数据是一致的,测试通过。

最后

         有问题的可以加QQ群技术交流,同时相关代码上传到QQ群中。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值