逐飞科技CH32V103开源库来啦
各位车友好,众所周知,沁恒微电子成为了第十六届全国大学生智能汽车竞赛的赞助商之一,赛规限定CH32V103微控制器为全向行进组的主控芯片,CH32V103为沁恒微电子自主研发的32位通用RISC-V架构MCU,为更好的支持同学们参与全国大学生智能汽车竞赛,沁恒微电子与逐飞科技达成合作,联合逐飞科技一起为同学们提供更完善的技术支持,并委托逐飞科技为参赛同学设计制作了CH32V103R8T6核心板与拓展学习板。基于逐飞的核心板和拓展学习板硬件平台,逐飞科技首先为大家带来的是今天的主角:“逐飞科技CH32V103开源库”


01.png

逐飞CH32V103R8T6核心板

一、CH32V103开源库简介:

CH32V103开源库继续沿用逐飞其他开源库的代码风格,使用过逐飞库的同学应该知道,逐飞库的特点是简洁易懂,容易上手。本次CH32V103开源库使用MounRiver Studio进行编写。使用官方SDK作为最底层。然后将各个模块使用的寄存器进行二次封装,提升易用性。如果有同学有更多需求,发现库的现有功能不满足自己使用需求时,可以采用同样的方式自己调用SDK或者寄存器来实现所需要的功能。

大家可以通过逐飞的库来学习官方的SDK怎么使用,当自己学会怎么使用官方的SDK之后也可以直接使用SDK,这样的好处是控制自己的工程没有多余的代码,降低代码体积,提高效率。我们也并不希望用户只会用我们的库来做开发,制作开源库的目的是希望初学者不被门槛给拦在外面,提供一个入门学习的渠道。


好了,正式进入CH32V103开源库的介绍吧,首先来看一看CH32V103开源库的目录结构图:

02.png


CODE文件夹下放置的是用户自己添加的代码文件,当用户自己添加文件的时候我们建议全部添加在这个文件夹内。

board文件夹下放置的是内核时钟初始化,以及数据类型声明,board等文件。

doc文件夹下放置的是版本文档说明。

seekfree_libraries文件夹下放置的是逐飞科技精心编写的底层驱动,底层驱动是用WCH提供的CH32V103的SDK进行二次封装,以简化各个模块的使用步骤,使用更加方便。如果不是参加竞赛的用户可以使用这一层的驱动来实现CH32V103的快速上手,也可以通过查看我们的代码用于寄存器如何使用。目前支持ADC、GPIO、FLASH、SPI、PIT、QTIME、UART、PWM、SYSTICK。如果有需要其他功能亦可直接调用寄存器来实现其他功能。

seekfree_peripheral文件夹下放置的是各类常用的模块驱动,当使用到这些模块时只需要调用函数即可实现相应的功能,非常的简单方便。目前实现线性CCD、1.8寸TFT、ICM20602六轴陀螺仪、IIC通讯协议(模拟IO)、1.14寸IPS液晶屏、MPU6050六轴陀螺仪、OLED显示屏、虚拟示波器通讯协议、无线转串口模块。

USER文件夹下放置的是main.c、isr.h、isr.c文件


03.jpg

逐飞WCH-Link下载器


二、底层驱动功能模块

目前逐飞CH32V103库实现了芯片中ADC、GPIO、FLASH、SPI、PIT、QTIME、UART、PWM、SYSTICK功能模块的使用,以下几个模块单独说明下:

FLASH模块 通过操作FLASH的方式来,存储变量数据,方便调整参数。。

QTIMR模块 是通过定时器来采集编码器数据。同时支持正交解码编码器和带方向的编码器,这两种类型的编码器。

PWM模块是通过定时器输出PWM,可以输出四组PWM。一组PWM可以同时有四路引脚输出。

PIT模块通过定时器模块,实现周期中断功能。

SYSTICK模块通过嘀嗒定时器,进行硬件延时。


三、常用外设模块的底层适配

逐飞CH32V103开源库依旧包含各个常用外设模块的底层适配,如下图所示。并且验证了CH32V103能驱动总钻风,这下赛道的识别就更加方便了。

04.jpg


四、库例程

和以前一样,各个模块的库例程也都为大家准备好了,如下图截图所示,图中所示各模块为逐飞为大家编写的库例程,目的是让新手朋友或者没有使用过我们库的小伙伴能够快速上手,大家可以看到目录全部采用英文,这样避免出现各种奇怪的问题,所以建议写代码的小伙伴都用全英文的路径避免出问题,下面的excel中有讲解所有例程是什么用途(中文写的哦,很友好的阅读体验)。

05.jpg


五、使用示例

接下来我们举一个采集总钻风摄像头图像并显示在TFT屏幕上例子,来展示CH32V103开源库如何使用。

根据任务,需要我们到seekfree_peripheral文件夹下查找所需函数,可以找到SEEKFREE_MT9V03X与SEEKFREE_18TFT文件,我们只需要调用相关的函数即可实现上述任务需求,具体实现例程如下。

1.  #include "headfile.h"  

2.    

3.  int main(void)  

4.  {  

5.      DisableGlobalIRQ();  

6.      board_init();    //务必保留,本函数用于初始化MPU 时钟 调试串口  

7.    

8.      lcd_init();      //初始化TFT屏幕  

9.      mt9v03x_init();  //总钻风摄像头采集初始化  

10.  

11.    EnableGlobalIRQ();  

12.    while(1)  

13.    {  

14.        if(mt9v03x_finish_flag)  

15.        {  

16.            //标志位清0  

17.            mt9v03x_finish_flag = 0;  

18.            //使用LCD显示函数,显示摄像头图像  

19.            lcd_displayimage032(mt9v03x_image[0], MT9V03X_W, MT9V03X_H);  

20.        }  

21.    }  

22.}  


看完上面的介绍是否手痒痒的想让手里的CH32V103跑起来了呢?别急,要真正用起来,还需要熟悉一个东西,就是我们用来开发的IDE—MounRiver Studio。下载连接:http://www.mounriver.com/

 

使用过逐飞库的同学看完上面的介绍一定很熟悉啦,没使用过小白也完全不用担心,使用库来进行开发的底层工作变得非常简单,但因为开发环境不再是大家熟悉的IAR或者MDK,而是较为陌生的MounRiver Studio,基于这个因素,逐飞又贴心的为大家准备了逐飞科技MounRiver Studio环境使用说明这份专门的使用教程,就问你感动不感动吧。拿着这两个神器,从此不再为RISC-V内核的CH32V103发愁。

06.jpg

逐飞科技MounRiver Studio环境使用说明目录截图


其实我们做开源库以及做MounRiverStudio教程的目的是为了让前期比较盲目的初学者能通过这些学习资料快速上手,不被门槛拦在外面,尽快入门,想尽快的把全新单片机使用起来,的确需要多查阅一些资料,去学习怎么使用这些单片机的资源,我们做的工作也仅限于方便初学者能多一条路子把单片机用起来。同时,我们鼓励学有余力的车友们自己开发底层,这个过程会让你积累很多嵌入式开发的技能和知识。

说了这么多,同学们应该迫切的想知道在哪儿下载开源库了吧,还是老规矩,逐飞科技将这个开源项目推送到了gitee。


逐飞科技CH32V103开源库下载链接:https://gitee.com/seekfree/CH32V103_Library


07.png

 

本期的CH32V103开源库介绍就到这里了,大家在使用库的过程中如果遇到什么BUG,请及时联系我们!我们将尽快修复。PS:可通过QQ群(沁恒全向麦轮技术支持交流群--逐飞科技983308060)或在逐飞科技微信公众号下留言联系到我们。

 

最后,剧透一下,CH32V103单核+总钻风+4编码器的全向行进样车演示及参考方案也会很快公布出来,很多同学有疑问的编码器、电机、摄像头资源分配也会给出参考方案。咱们“下周一”见。


08.jpg

逐飞CH32V103R8T6与WCH-Link连接示意图


最最后,逐飞CH32V103R8T6核心板与WCH-Link均已到货,现货发售中,拓展学习板也即将到货,欢迎选购。

沁恒免费芯片申请还在继续,点击可跳转了解详情:沁恒免费申样

09.jpg

库下载来参考学习,我的习惯是优先使用寄存器命令,不会使用寄存器的地方才使用库命令,STM32我对 GPIO的初始化全部使用寄存器配置和调用, 实际体验调用寄存器命令速度快了1/3以上.但我也是半路出家的半吊子都不算的爱好者,很多都是参考前辈们的范例学习和参考.谢谢!


只有登录才能回复,可以选择微信账号登录