基于stm32f103c8t6主控芯片+RH6016CB触摸芯片+WS2812B的触摸台灯设计方案
原标题:基于stm32f103c8t6的触摸台灯设计方案
简介:采用stm32f103c8t6作为主控芯片,触摸芯片采用的是RH6016CB,一共使用了四个。 分别用来:开关,亮度增强,亮度减弱和切换照明模式。灯用的是WS2812B。
开源协议: Public Domain
描述这个项目是我在立创的暑假训练营基础班在结题的时候选择的一个项目。也算是自己从电路设计到程序编写,从下而上的第一个项目。在设计方面肯定会有很多的不足。发布出来一方面为了让各位电子爱好者看到,给出一些建议。另一方面也是对自己这一周以来的工作的一个总结。
器件选择
主控芯片选择的是stm32f103c8t6,选择这个单纯是因为自己对stm32更加熟悉,容易上手一点,然后价格不算高,其实用stc的芯片应该可以更便宜,但从来没有用过,也懒得学。。,逃 然后触摸芯片是用的RH6016CB这个后面证实触摸是很敏感的,需要注意得是一定要仔细阅读datasheet中触摸板pcb布线要求,注意的点还是很多的 灯采用的是WS2812B,这个是莫工推荐的,因为别人写的驱动移植过来总是出问题,所以就自己写了一个驱动,用spi。另外因为比较菜,也没认真读datasheet踩了不少坑。比如01code编码的时间不对。 另外就是一些常用的电子元件,可以看原理图
原理图
在绘制第一版原理图的时候居然把ws2812b的输入输出给接反了,买回来检查了好久才发现泪崩。后面就重新画了一个索性把灯板改成了圆形。
触控板
灯板
因为ws2812b采用的是5v供电,而主控是3.3v供电。所以中间的通讯需要有转换电路。其他的电路参考datasheet即可。
驱动程序
程序其实比较的简单,但因为很久没有编过stm32所以还是花了几天,中间还遇到各种奇怪的bug,后面发现都是自己的疏忽。最主要的方面就是ws2812b的驱动编写。 刚开始想采用SysTick直接延时来驱动,但后面发现太占用系统资源,而且貌似实现不了。直接采用spi,采用的是spi 9M传输速率用两个字节表示一位的方法。 然后按键直接用四个exti中断就行,触摸芯片在触摸是会变成高电平,所以用起来还是很方便的。 另外记一个很痛心的教训SysTick的默认优先级别是最低的所以如果想在其他中断中用SysTick 来延时。一定要调整SysTick的中断优先级别。
注意
注意注意,我在主控板上忘记画复位电路了,所以现在断电后想要重新运行的画只有两个方法1、重新下载2、自己手动复位(用导线把复位引脚接一下地)(哭) 这个工程链接里面只有主控板,灯在这https://lceda.cn/editor#id=27e17fd0c07e4d90998ec2b942c5174f|6fa1e21537bc41fb8fcd97d4095d8215 附件中有程序
文档
主控板在编辑器中打开
pcb图
责任编辑:David
【免责声明】
1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。
2、本文的引用仅供读者交流学习使用,不涉及商业目的。
3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。
4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。
拍明芯城拥有对此声明的最终解释权。