[单片机芯片]

国产MCU专栏 第71期: 48篇沁恒CH32X035测评笔记,开启PDUSB创意应用

[复制链接]
9563|5
手机看帖
扫描二维码
随时随地手机跟帖
21ic小能手|  楼主 | 2023-11-30 16:19 | 显示全部楼层 |阅读模式
img_**_wch.jpg

*阅读说明:以下仅做简要总结展示,排名不分先后。详细测评过程描述、源码、资料等请戳原链接查看。


  • 测评1:
本人就WS2812例程进行了二次封装,并且发现一些BUG,于是乎就有了本篇文章。

CH32X035的SPI只有一个,那就是SPI1,挂载在APB2总线,最大时钟48MHz。SPI支持单工发送和双工发送,在GC9A01驱动中使用单工主机模式。使用SPI+DMA的方式进行数据的发送,可以使屏幕的刷新更快,本人使用IO模拟SPI和硬件SPI来驱动GC9A01效果都不理想,唯有使用SPI+DMA才能使我满意。

CH32X035的SDI(SerialData Interface)是沁恒微电子RISC-V内核的私有外设接口,主要功能是提供下载调试。最近发现CH32 RISC-V系列的EVT提供了SDI的printf打印功能,但是怎么用没有详细的教程,那么本篇文章将教大家怎么使用SDI下载调试接口启用printf功能。

CH32X035的USART接口拥有4个,高级定时器2个,通用定时器1个。在以往的工作中使用了Modbus(RTU)的仪器仪表以及一些工控板,在CH32系列芯片使用体验还是不错的。

此篇评测的是利用CH32X035的TIM2高级定时器外设捕获霍尔的三个信号,计算相位差,从而知道霍尔板的好坏。

CH32X035拥有设备控制器(USBFS),可以使用其为USB键盘设备,本评测基于官方例程修改而来,进一步封装只需要调用结构体成员函数即可完成相关字符的输出。

CH32X035拥有设备控制器(USBFS),可以使用其为USB_Serial设备,即USB转模拟UART设备,直接使用USB模拟UART,直接省去CH340等USB-to-UART。本例程使用官方例程修改而来。



  • 测评2:

本开发板所用芯片是USB+USBPD微控制器CH32X035,X035是基于青稞RISC-V内核的MCU,目前还没有实践过RISC-V内核的芯片,所以这次使用官方推荐的MounRiver Studio作为本次试用活动的主要开发环境。

显示单元的驱动:本次测试选用的是1.54寸tft作为显示元件,主要参数是240*240分辨率,主控是7789,通过SPI/8080进行通信,在本次测试使用SPI进行通信,同时驱动部分也是对SPI功能的试用。这里面分别使用IO口模拟及硬件SPI来驱动。

本次主要是对定时器进行多重得体验,通过板载得两个LED灯结合按键进行多种展示功能切换。

针对USBPD的体验这次使用的是CH32X035EVT中EXAM中的USBPD例程。



  • 测评3:
开发板:CH32X035C-R0-1V2
IDE:MounRiverStudio
仿真器:WCHLINKE
例程参考自官方example TIM-> PWM_Output:PWM输出例程

SPI底层 flash驱动官方已经写好了只要调用就好了。



  • 测评4:

(1)新建工程
(2)usb配置相关描述符
(3)程序现象

FreeRTOS是一款迷你型实时操作系统内核,功能包括:任务管理、时间管理、信号量、消息队列、内存管理等功能,可基本满足较小系统的需要。



  • 测评5:

CH32X035评估板上有2个LED灯,LED正极与3.3V正电相连,负极可以根据端口进行连接,以实现GPIO对KED的控制。本例中使用PA4控制LED实现呼吸灯效果。

这段程序主要实现了使用 TIM1 定时器和 PWM 输出模式来控制 GPIOB 引脚 9 的 PWM 输出。



  • 测评6:
例程包里的工程文件结构是都链接一部分公共文件的,当我们要自己在其他路径上复制其中的例程时会编译报错,是因为例程的公共文件找不到。我来介绍一下如何使用例程创建一份自己的工程,不再受公共文件路径的影响。


实例分为两个工程程序,一个是bootloader程序,一个是application程序,两个程序的核心功能是基本一致的,仅在部分节点的执行操作上有所不同,原本想使用一个工程来实现的,但对MounRiver Studio的一些设置不太熟悉,暂时使用两个功能来实现。


X035的开发板上有个USB-A口,之前实现了使用SD卡的固件升级,这次来实现一个U盘固件更新功能,同时分享一下遇到的问题。



  • 测评7:


本文使用模拟IIC来驱动0.91  寸OLED,因为使用模拟IIC在任何平台上都可以快速的驱动屏幕,点亮一个屏幕的只需要 导入3个.c 和对应 .h 文件(共6个文件),需要提供delay 函数 和 翻转IO接口即可点亮屏幕!



  • 测评8:
因为之前使用CH32V307的时候用307驱动过一个OLED液晶,这次就准备将这个OLED.C完整的移植到CH32X035上。

CH32X035EVT中的串口DMA测试是串口2与串口3进行数据相互收发兵进行数据对比。






  • 测评9:
介绍了CH32X035的环境介绍以及入门点灯程序。

说一下CH32X035的串口收发实验。串口通信目前主流的与上位机通讯协议,CH32X035有4 组通用同步异步收发器(USART1/2/3/4)。

下面是用CH32X035芯片模拟检测
电压报警系统,方案设计如下:
1、使用滑动电阻进行电压输入
2、使用CH32X035芯片做为主控芯片时实读取电压值通过串口反馈上位机,
3、假设0-2.5V为正常电压,不断给上位机进行实时反馈,一旦超过2.5V认为电压异常,进行蜂鸣器报警提示,并反馈上位机error异常信息,上位机收到error信息后控制其他设备进行其他操作。



  • 测评10:
这个芯片内置3组比较器,今天就来简单测试一下比较器。

运放电路多种多样,今天就简单的测试一下运放的负反馈电路比例放大。




  • 测评11:
CH32X035是一款基于Cortex-M0核心的微控制器,具有35个通用IO引脚,可以用于点亮LED,和其它外设。

CH32X035系列微控制器内置了12位ADC,可以用于采集模拟信号并将其转换为数字信号。

CH32X035系列微控制器有4组通用同步异步收发器(USART1/2/3/4)。下面以USART1为例,简单介绍串口收发实验。



  • 测评12:





  • 测评13:



  • 测评14:



  • 测评15:



》》访问沁恒USB蓝牙MCU论坛可查看更多开源作品。

使用特权

评论回复
评论
gaojun1981 2023-12-8 17:44 回复TA
牛叉 
weifeng90| | 2023-12-11 22:18 | 显示全部楼层
MARK一下,方便后续查阅。

使用特权

评论回复
代码输出机| | 2023-12-20 15:42 | 显示全部楼层
圆形屏幕的驱动很赞

使用特权

评论回复
xu@xupt| | 2023-12-26 08:27 | 显示全部楼层
mark一下

使用特权

评论回复
michaelsrh| | 2024-1-9 16:44 | 显示全部楼层
mark下,方便学习

使用特权

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

本版积分规则

132

主题

661

帖子

22

粉丝