第三十一章 AT32F403A基于V2库 usb hid touch screen触摸屏

目录

概述

硬件

软件

        时钟注意点 :    

        修改设备描述符:

        修改报告描述符: 

        修改custom_hid_class.c的内容:

测试

        测试代码:

        测试结果:

最后


概述

        本文主要是使用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群中。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值