[AT32F405]

【AT-START-405测评】串口2与高速USB虚拟串口透传

[复制链接]
1169|3
手机看帖
扫描二维码
随时随地手机跟帖
tdh03z|  楼主 | 2024-6-10 10:29 | 显示全部楼层 |阅读模式
本帖最后由 tdh03z 于 2024-6-10 10:34 编辑

AT-START-405测评串口2与高速USB虚拟串口透传
    5月初收到官方的AT-START-405开发板,因工作较忙一直出差,这几天稍微空闲,正好测试下。涉及到的软硬件如下:
    软件:MDK5、AT32_Work_Bench、
    硬件:AT-START-405官方开发板(自带ATLink)、CH343串口转USB板

一、概述
    工作中前期用过很长一段时间的8位单片机(主要是51和PIC),直到STM32系列单片机资料很多的情况下,才转到ARM内核的单片机上,哈,年纪大了不愿折腾新东西了。
    STM32的单片机调试方式相比老的8位单片机好用太多,最近几年用32位单片机写程序,感觉越来越接近上位机编程了,各种库、各种教程,自己不用在扣底层寄存器的各个位说明了,编程效率大大提高,编程难度大幅下降。以前要实现一个USB通讯,估计要啃大半年才能实现功能,稳定性和可靠性都不一定很好。在STM32单片机的涨价缓解后,发现国内ARM核的32位单片机大量出现,期间用APM32、GD32与STM32的兼容型号设计了一些电路,完全满足现在的产品要求,所以后续设计中逐步使用国内产品了,但首选的还是有多家兼容的型号,被涨价坑惨了。
    产品中串口通讯用的较多,正好论坛上有申请雅特力AT32F405开发板的活动,想测试下雅特力的单片机,前期查看雅特力的资料,非常完善,很容易找到对应的开发资料。

二、资料准备
    要测试一款单片机,相关资料肯定少不了,在21ic的雅特力版块,有官方网址连接,点进去后,直接找到AT32F405链接,点进去后与F405相关的资料全部汇总到一起了,非常直观,按链接全部下载下来了,总共也就600M左右,如果不用AT32自己的IDE开发环境,资料也就150M左右,非常小。这些资料已经足够进行开发和测试了。
87877666661fee182a.png
    截个图,官网下载下来的资料汇总

三、开发环境搭建
    因一直用MDK5开发环境,所以这次也延续老的开发方式。
    1)要在MDK5中开发,在下载的资料Keil5_AT32MCU_AddOn_V2.3.5.zip中找到ArteryTek.AT32F402_405_DFP.2.0.8.pack,安装后,MDK5中就可以找到AT32F405的型号了。
    2)然后解压AT32F402_405_Firmware_Library_V2.0.9.zip固件库,里面有大量的例程,可以作为项目的参考或借助例程增加自己的应用程序。
基本上就以上2步,即可开始AT32程序的开发了,非常方便,实际上与STM32的开发流程一样,MDK5也要单独安装STM32的开发包和固件库。
    如果要测试图形化配置,用AT32_Work_Bench_Win-x86_64_V1.0.09.zip中的程序即可,免安装,解压后直接运行即可,后面也是用这个程序生成的工程进行测试的,非常好用。

四、功能测试
    1)在开发环境搭建好后,直接打开了固件库例程中的\AT32F402_405_Firmware_Library_V2.0.9\project\at_start_f405\examples\gpio\led_toggle\mdk_v5\led_toggle.uvprojx工程,此工程控制AT-START-F405开发板上的3个LED轮流闪烁。主要目的是测试开发环境中编译、下载有没有问题。实际测试中,编译下载都正常,修改延时函数时间,编译下载,可以看到闪烁间隔对应的改变了。
    2)确定正常后,看到论坛上有一个USBHS虚拟串口传输速度测试的帖子,看了后感觉后续项目中有可能会用到此功能,下载了帖子中的程序SC0139_AT32F405_USBHS_Speed_Test_V2.0.0(好像官方的固件库例程中也有这个,\AT32F402_405_Firmware_Library_V2.0.9\project\at_start_f405\examples\usb_device\vcp_loopback),直接编译后下载,按照帖子中的说明连接到电脑USB口,测试了下虚拟串口的速度,运行一切正常,确实能达到16M的速度。但这个例程仅能作为测试用,看程序一旦接收到数据,就会一直发送,不符合实际项目需求。更改为接收到的数据原样返回的方式,然后用串口调试助手不停的发送数据,对比发送接收字节数,连续运行后测试的速度大约4M,主要是程序中接收缓存usb_buffer数组大小为4096,想改大此数组,好像没成功,这个后续再测吧,现在的速度已经可以满足绝大部分应用了。
但我一台老的win7系统的电脑,好像插入USB口后,不能虚拟成串口,看网上说明win7系统没有集成需要装驱动,从官网下载驱动后安装,好像也没有成功,这个后来没有详细查找原因,后续再看吧。
    3)以上测试的2个项目都是例程中的项目,本着学习测试的目的,想亲手建立一个工程项目,又不想从头开始,就用雅特力的图形配置软件AT32_Work_Bench,看看能到什么程度。具体的软件使用细节就不描述了,最终实现的功能是3个LED的控制,用定时器1作为系统时基(不喜欢硬延时,LED灯闪烁间隔用系统时基控制),用串口2实现自收自发(接收:空闲中断+DMA;发送:DMA方式)。实现后的工程如下:
87916666621b2b26b.png

工程文 AT32F405_001.zip (3 MB)

使用特权

评论回复
gouguoccc| | 2024-6-10 17:47 | 显示全部楼层
USB做host挂在U盘实现自动升级。

使用特权

评论回复
trucyw| | 2024-6-10 17:56 | 显示全部楼层
正好近期也打算学习这个

使用特权

评论回复
呐咯密密| | 2024-6-12 10:33 | 显示全部楼层
保持学习,不能懈怠

使用特权

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

本版积分规则

21

主题

198

帖子

4

粉丝