打印
[单片机芯片]

国产MCU之光 第47期: 初识庐山面目,沁恒CH32Vx03 及 CH582 开发实践二三事

[复制链接]
8627|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

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


背景:项目进度已经基于CH32V003 PWM DMA模式驱动了WS2812B 灯光效果。但是ch32V003有两个定时器,TIM1已经配置为Encoder模式,TIM2要改成PWM输出,所以不能用以驱动WS2812灯了,故而希望以SPI DMA的模式去驱动实现炫彩灯光效果。
软件设计:因为不确定CH32V003的SPIDMA能否驱动WS2812B,所以这里我创建了独立的工程去验证一下,整个项目的代码这里不方便贴出。
其实WS2812B这类灯光效果的实现国外开源一大堆,比如开源大户Arduino,但是它是8位的AVR芯片,对于我们32位机,优先考虑STM32的,因为方便移植。


MultiTimer这样一个软件定时器拓展模块真的很方便,但是如果如果任务回调函数中执行了太耗时的任务的话,可能会导致其他任务来不及执行,相关的tick没法实现自加,现在就我们使用过程遇到的一些问题与大家分享一下





今天分享的是CH32V003实现Flash模拟EEPROM的过程,其中遇到很多坑。现在分享给大家,避免再次踩坑!!!
首先我一开始是想直接移植正点原子的stmflash,虽然是基于STM32的,但是移植到ch32v003,其实没什么困难的,玩过沁恒微ch32的同学应该都知道,ch32的很多库函数名字很多跟STM32标准库是同名的,这给我们的移植工作带来了极大的便利!
一、CH32V003内部闪存组织结构芯片内部闪存组织结构
二、编程与擦除方式
三、踩坑经历1
四、移植正点原子的stmflash是真香!



1、MultiButton
这次给大家带来的仍旧是作者0x1abin开源项目是 MultiButton,这是一个小巧简单易用的事件驱动型按键驱动模块,可无限量扩展按键,按键事件的回调异步处理方式可以简化你的程序结构,去除冗余的按键处理硬编码,让你的按键业务逻辑更清晰。目前在GitHub收获 802 个star,遵循 MIT 开源许可。
2、MultiButton的使用方法:
3、移植MultiButton到CH32V103




问题背景:
这次客户需要实现八个模拟通道,32个按键的摇杆,但是客户不需要全部摇杆都接上,只是接其中1~3个,而我们的ADC是浮空输入的,如果不接摇杆的话会导致引脚浮空,造成电压不稳,如下图,如果Z和X旋转(CH2&CH3)悬空不接,摇动XY摇杆(CH0&CH1)会发现Z和Rx跟着动
解决方案
通过网上收集资料和论坛的提问和FAE的支持,学习总结如下解决方案:
1、将采样周期设置的大一些或增大相邻两个通道之间的采样延时,一定情况下会降低干扰;
2、把相邻通道分别配置到ADC1和ADC2上面,彻底隔离。
3、使用DMA的话可一次只配置一个通道,挨个使用DMA进行采集
4、在AD管脚上并联一个100nf左右的电容




一般的我自己学习单片机,为了更加了解硬件,我都会画了一块CH32V103最小系统板,然后外接其他功能模块实现一些应用,最近翻箱底有一款超声波测距,HC-SR04,那么现在就开始实现HC-SR04 超声波测距模块轮询读取距离数据
1、硬件接口:我们定义PA0映射TRIG,PA1-TIM2CH2映射ECHO,供电为5V。
2、软件说明
3、下载验证



帖子是关于使用CH32V203替代旧STM32F103实现USB霍尔摇杆的项目。关于调试经验啥的,主要分享CH32V203的USB使用。
1、关于硬件
由于需要兼容STM32的USB,所以这里使用了PA11(DM)和PA12(DP),对应CH32V203的USB1,我看USB Device 的实现跟STM32 的HAL库居然有点一致了,之前一致是在中断回调函数中枚举的。其实我更喜欢第二种方式,可能效率会更高。不过USB2好像还是原来的方式。
2、软件设计
我是在懒得新建工程,移植USB Library了,干脆直接在官方工程上改,我用的是EXAM\USB\USBD\CompositeKM,USBD目录的工程用的USB1口对应PA11(DM)和PA12(DP),大家不要搞错了,我就搞错过,还寄了芯片给WCH的FAE调试,后来发现我自己用错IO了。
(1)时钟初始化配置,
(2)USB端点配置、描述符配置标准请求的实现等。




今天给大家分享的是移植1.3寸I2C的OLED屏STM32驱动到CH32V203的过程。
1、硬件资料:
(1) 1.3寸OLED屏
这里我们用的是中景园1.3寸OLED屏,原理图如下图,其中I2C地址是0x78,因为是默认DC接GND,R11是焊接的,另外我们可以看到这款屏幕用的是SSH1106驱动的。
(2)SH1106
(3)CH32V203评估板
2、软件移植
官方提供的例程是有基于STM32、STM8和51的,我们选择STM32F103C8T6的。




今天要跟大家分享的是WCH的CH582作为Central连接其他厂芯片peripheral遇到的坑。踩完这个坑,感觉越来越喜欢CH582了。良心的蓝牙芯片,特别是对于我们这些搞电脑游戏外设的开发者来说,真乃国产良“芯”!!
1、硬件环境
2、软件设计
本人软硬件都会一点,但都不精。所以软硬件开发时候都很容易遇到bug。
这次遇到的bug是连接参数问题。
3、个人总结
因为公司是小微企业,所以需要掌握很多技能,项目的迭代非常快,基本上每个人手头都是至少3个项目并行进行的。导致了很难深入学习。
但是我们不用担心学不到东西,我们需要做的是,做好笔记,利用闲暇时间总结一下,比如多发帖子!另外就是遇到bug不要慌,找原厂FAE,这里真的非常感谢WCH的FAE,技术支持力度真的很到位。




在我们游乐和电脑、游戏外设行业,WS2812这种类型的灯珠应用还是很广的,有些可以在游乐场的游乐设备上面增加对应的灯板实现绚丽的彩灯效果,有些可以在键盘上,或有些游戏外设上的七彩彩虹灯,七彩呼吸灯等等。有网友评论雷蛇是灯厂,就是因为其键盘鼠标上的炫酷的灯光效果。
CH582的出现,对于我们搞电脑游戏外设的工程师来说,可以说解决了我们很多选型上面遇到的问题,对于公司生产成本的减低可以说是具有重要意义的,因为其具备了2.4G+蓝牙5.0+USB三种模式。这样极大节约了增加蓝牙模块,2.4G模块带来的成本,而且两个USB外设都支持主从模式!
我们使用CH582M TIM的PWMDMA模式驱动。



使用特权

评论回复
评论
goniu 2023-6-1 22:51 回复TA
点赞+收藏 
lulugo 2023-5-31 16:43 回复TA
安富莱电子的H7-TOOL可以仿真沁恒和国芯的单片机 
沙发
lmn2005| | 2023-4-14 19:57 | 只看该作者
先收藏,有空再研究研究。

使用特权

评论回复
板凳
内政奇才| | 2023-5-15 11:33 | 只看该作者
初识庐山真面目

使用特权

评论回复
地板
weqweqw入| | 2023-5-17 20:51 | 只看该作者
66666

使用特权

评论回复
5
cooldog123pp| | 2023-5-27 10:22 | 只看该作者
楼主讲的很详细,非常感谢楼主的讲解,mark一下,收藏学习,受教受教。

使用特权

评论回复
6
lulugo| | 2023-5-31 17:05 | 只看该作者
安富莱电子H7-TOOL开发工具可以仿真沁恒和国芯的单片机

使用特权

评论回复
7
janewood| | 2023-7-5 20:45 | 只看该作者
跟其他的芯片的兼容性非常好。              

使用特权

评论回复
8
tabmone| | 2023-7-5 21:09 | 只看该作者
CH32V003 的价格怎么样              

使用特权

评论回复
9
wangdezhi| | 2023-7-5 21:15 | 只看该作者
这个沁恒的芯片非常厉害。              

使用特权

评论回复
10
maqianqu| | 2023-7-5 21:21 | 只看该作者
CH32Vx03的性价比太高了。

使用特权

评论回复
11
Q80351951| | 2023-7-11 22:08 | 只看该作者
CH32Vx03的性价比太高了

使用特权

评论回复
12
guijial511| | 2023-7-12 19:26 | 只看该作者
沁恒实现了接口转换方便的需求。

使用特权

评论回复
13
七毛钱| | 2023-8-1 15:58 | 只看该作者
光看标题就知道沁恒的芯片有多厉害了

使用特权

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

本版积分规则

158

主题

696

帖子

30

粉丝