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

[复制链接]
 楼主| 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论坛可查看更多开源作品。

评论

牛叉  发表于 2023-12-8 17:44
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下,方便学习
鑫越电子 发表于 2024-3-7 11:15 | 显示全部楼层
很有用,学习了
WoodData 发表于 2024-3-21 23:05 | 显示全部楼层
学习
LEDyyds 发表于 2024-4-25 13:26 | 显示全部楼层
整理的很好,方便查找
chenjun89 发表于 2024-5-5 19:58 来自手机 | 显示全部楼层
学习mark一下,后续方便查看。
冯军003 发表于 2024-8-13 13:16 | 显示全部楼层
标记一下
duhemayi 发表于 2025-7-24 11:02 | 显示全部楼层
不错
星辰伴梦 发表于 2025-8-1 09:15 | 显示全部楼层
这些测评笔记真是宝藏,尤其是对于想要深入了解CH32X035的开发者来说。每一篇都提供了不同的应用场景和解决方案,非常实用。
彩虹捕手 发表于 2025-8-2 10:38 | 显示全部楼层
这些测评笔记真是太全面了,从基础的GPIO点灯到复杂的USB PD应用,CH32X035的功能被充分挖掘。
瞌睡虫本虫 发表于 2025-8-2 23:37 | 显示全部楼层
这些测评笔记真是太全面了,从基础的GPIO点灯到复杂的USBPD应用,CH32X035的功能被彻底挖掘。
彩虹彼岸 发表于 2025-8-6 14:49 | 显示全部楼层
USBPD获取不同电压,这个测评挺有意思,应该有很多应用场景的。
Labyrinth 发表于 2025-8-9 21:15 | 显示全部楼层
整理的都挺好的,方便后续有类似开发需求过来找
您需要登录后才可以回帖 登录 | 注册

本版积分规则

186

主题

724

帖子

41

粉丝
快速回复 在线客服 返回列表 返回顶部