目录
概述
本文主要是使用AT32F403A开发板,基于V2库实现usb hid touch screen 设备功能。
串口工具使用的Atlink-ez自带的串口功能。
工程建立、调试工具配置在前面章节有详细介绍。开发板
硬件
硬件方面使用的是参考官方AT32F437 SURF板子而设计的一个AT32F403A开发板,板子上的芯片是AT32F403AVGT7的型号,开发板上面还板载了一个atlink-ez的仿真器,atlink-ez除了可以在线仿真和下载之外还有一个串口的功能,硬件上是通过跳线帽接到了MCU的串口1,pa9/10上面。
如下图是开发板pcb图,以及硬件资源。(左边上角的就是atlink-ez,用usb线接到pc即可):
如下为实物图:
本章是usb hid touch screen功能的测试,相关原理图如下:
软件
本文是使用usb实现的hid touch screen 触摸屏功能,通过修改官方bsp里面的custom hid 以达到可以在pc上识别到 touch screen 类型的设备,同时模拟上传触摸数据。
新建立一个工程,添加usb 库的源码和把custom hid 中的设备描述和class源码复制到项目文件中,再都添加到keil工程里面,并把main中的相关函数复制到新工程的main里面。
如下图:
时钟注意点 :
USBFS 48M 时钟有两种配置来源:一种是使用内部的48M高速时钟,一种是使用ppl的分频,当使用ppl的分频的时候,系统的时钟一定是48M的整数倍,这样才能分出48M给usb使用,所以使用usb并且ppl提供usb时钟的时候,系统时钟最高是192M的主频。通过void usb_clock48m_select(usb_clk48_s clk_s)来设置即可。
本文使用内部his提供usb时钟,系统主频跑240M。
修改设备描述符:
触摸类型的,只需要上报触摸数据即可,所以只需要配置一个输出端点即可。同时要记得修改USBD_CUSHID_CONFIG_DESC_SIZE 的大小。
修改报告描述符:
设置为touch screen 设备,上传数据格式为5个字节。
第一个字节:最低位为是否按下,bit1:1有触摸 0没触摸
第二个字节:X坐标低8位
第三个字节:X坐标高8位
第四个字节:Y坐标低8位
第五个字节:Y坐标高8位
同时要记得修改USBD_CUSHID_SIZ_REPORT_DESC 的大小。
修改custom_hid_class.c的内容:
测试
测试代码:
代码是通过按键触发,在屏幕上画一条横线。
测试结果:
可以通过bus hound软件看到设备,pc系统里面也识别到了触摸设备;打开pc的画图软件后,放大,再按板子的按键,可以看到一条横线,测试成功。
最后
有问题的可以加QQ群技术交流,同时相关代码上传到QQ群中。