打印
[AT32F405]

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

[复制链接]
2541|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左右,非常小。这些资料已经足够进行开发和测试了。
    截个图,官网下载下来的资料汇总

三、开发环境搭建
    因一直用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方式)。实现后的工程如下:

工程文 AT32F405_001.zip (3 MB)

    4)作为一个新单片机的简单测试,以上几个测试下来,起码的开发流程应该已经没有问题后,后续仅是熟悉熟练的过程了,正好有时间,就想着将USBHS高速虚拟串口与实际串口结合起来,实现一个USB转串口的简单应用,而且上面两个工程已经可以支撑了。
    以SC0139_AT32F405_USBHS_Speed_Test_V2.0.0工程项目为基础,在此项目中加入图形配置软件AT32_Work_Bench生成的工程文件at32f402_405_wk_config.c和at32f402_405_wk_config.h,做适当修改(主要是自己定义变量的声明,底层和自动生成的程序都没有修改),一个结合USB虚拟串口和实际串口的透传工程就完成了。因时间较短,没有进行7×24小时的连续测试,但结合测试的几个小时表现,程序运行的稳定性应该问题不大。

    以上图片中,一个是虚拟串口,一个是实际的串口,两个串口透传数据。
工程文 SC0139_AT32F405_USBHS_Speed_Test_V2.0.0_G.zip (9.72 MB)

五、总结
    自己基本上算是AT32单片机的新手,从开始准备资料到最后工程测试完成,大概1天时间吧,入手非常顺利,说明雅特力提供的资料和例程质量非常高。一个带USB的项目能在这么短时间内达到可用的程序,原来是不可现象的,想当年一个网络接口的项目,硬是啃半年才基本实现。
    通过简单测试,个人感受就是雅特力的AT32单片机软件开发资料齐全质量高,入手容易。在如今的大环境下,国产单片机品牌已经10几家了,估计雅特力的资料和例程质量应该排在前3吧,希望国产单片机越来越好,不要太卷,还是以器件质量为第一发展目标。
    哎,嵌入式单片机的门槛真是越来越低了,如果不持续提升个人的综合能力,这淘汰的速度真是杠杠的。





    项目中的程序编辑、查看用的是TKStudio软件,周立功早期的IDE软件,已停止开发,但作为编辑器使用非常方便,快速简洁的方面比si软件好使,就是可惜没有后续了,在win10下工程建立时界面不全了,哎。



使用特权

评论回复
沙发
gouguoccc| | 2024-6-10 17:47 | 只看该作者
USB做host挂在U盘实现自动升级。

使用特权

评论回复
板凳
trucyw| | 2024-6-10 17:56 | 只看该作者
正好近期也打算学习这个

使用特权

评论回复
地板
呐咯密密| | 2024-6-12 10:33 | 只看该作者
保持学习,不能懈怠

使用特权

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

本版积分规则

23

主题

202

帖子

4

粉丝