开源自己设计的STC核心板,集成STC32和STC8一次性学习两款芯片

前几天发了篇文章,说的就是今天这块核心板。

自己设计的板子程序死活烧录不进去,沉思三天后我悟了-CSDN博客文章浏览阅读604次,点赞24次,收藏9次。因为之前出现过很奇怪的一件事,我焊了两块ESP32C3WROOM的核心板就是我之前开源出来的那个,然后一个可以烧录另一个烧录不了,板子设计是没问题,所以我估计要么是虚焊要么是某个元器件坏了,但是我已经把工具都收起来了,所以打算下次再尝试修一修,结果下一次我焊接的时候想着顺手修一下,结果两块板子都可以正常烧录程序进去。所以我把问题定位在了USB转串口芯片身上,也就是CH340,并且由于串口能识别到,所以CH340的功能是没有问题的,如果转串口的功能是没问题的,那么那短暂的识别串口失败就是因为供电的问题!https://blog.csdn.net/m0_63235356/article/details/144314499?spm=1001.2014.3001.5502然后刚好昨天新打的板子也到了,焊接测试发现正常工作,所以今天写篇文章开源出来。

工程文件和芯片手册可以关注下同名公众号“折途想要敲代码”回复关键词“STC”即可免费下载,同时我还开源到了立创开源广场,那边也可以直接查看工程文件。

折途 - 嘉立创EDA开源硬件平台icon-default.png?t=O83Ahttps://oshwhub.com/zctnb/works

这块板子有STC32G12K128STC8G1K08A两块芯片,也就是说我们一次性可以玩到两款芯片,后续我也会推出STC库函数教程系列文章,用的就是我弄的这块板子。

我们先来看看STC8G1K08A的部分。

电路设计非常简单,我用的是SOP8封装的STC8G1K08A,它的外围电路只需要两个电容即可。

其他我就是把八个引脚都引出来了,为了方便我们烧录程序(需要用USB转串口模块),我把RXD、TXD、VCC、GND给放到同一排的引脚上了。

还加了个WS2812B,这样显得不那么单调,板子上有个灯也方便我们直接烧录程序看效果,数据传输线接到P32上。

关于WS2812B如何点亮,可以查看我往期的文章。

今天我们不点LED,我们点WS2812B_ws2812b怎么接电容保护-CSDN博客文章浏览阅读1k次,点赞10次,收藏21次。这也难不倒我,经过我一顿操作和计算,STC8G1K08A的主频为24MHz,一个_nop_()大概耗时是63+ns,其实我计算的结果应该是44ns,因为1/24 000 000 约等于是40ns,但是我拿着40一个_nop_()的结果去写代码,发现好像不对劲,最后定位在了一个_nop_()大概耗时是60+ns。1码和0码差不多,高低电平是顺序一样,都是先高电平后低电平,不一样的是持续时间,持续时间其实也差不多,就是高低电平的时间反过来,所以我们1码的高电平时间定为0.6us,低电平时间定为0.3us。_ws2812b怎么接电容保护https://blog.csdn.net/m0_63235356/article/details/144155464?spm=1001.2014.3001.5502另外就是一个滑动开关,连接的是来自USB的5V供电,当我们连接USB的时候,并且此时只想使用STC32并不需要使用STC8,那么我们可以选择关闭STC8的供电。

一个STC8G1K08A-SOP8的官方推荐零售价是0.59 + 0.1,所以小伙伴们买的时候注意价格,我买的时候是0.75,因为价格差的不多并且是从经常买的店铺里卖的,所以就不管这点差价了,总之大家买的时候别买价格太离谱的。

另外也可以看到虽然它就八个引脚(还要扣掉俩电源引脚),但是该有的资源还是有的,所以我用它做了个小玩意,等过阵子板子到了,我调试没问题了再开源出来。

官方提供的最小系统图也就是俩电容,一个10uf以上,一个100nf,虽然说10uf以上,但是10uf应该也可以,我是因为手头上22uf的电容比较多,所以用的22uf,大家也可以根据自己的库存去决定,反正打板出来焊盘大小都是一样的,一样封装的都是可以随便替换。

接下来是STC32G12K128,有两个版本。

原因是一开始只做串口的,然后这不有小问题导致程序烧录不进去嘛(详情查看开头的链接里上一期的文章),然后我就再整了一版USB的,后来那个小问题被我搞定了,所以就有了两个版本。

不管是哪个版本,关于芯片周围最基本的外围电路是不变的,我们先来看这些。

只需要三个电容,没错,就是只需要仨电容,其他包括晶振什么的都不需要。

STC的外围电路就是这么简单,我爱上它了。

官方文档里的最小系图就是这样的。

和STC8相比,就是多了个100nf的电容,容值可以在100nf到10uf之间。

接下来我们先来看看串口版的其他外围电路。

一共是四个部分。

红框是Type-C的接口。

蓝框是借鉴的嘉立创莫工开源出来的基准电压源,如果不需要ADC或者对于ADC精度要求不高的小伙伴可以把这块删删掉,因为我第一版基本是抄的莫工的,买的材料有剩了些,所以把这部分保留了下来。

绿框USB转串口芯片用的CH340N,CH340其他版本的也都是可以的,另外CH340的TXD上的肖特基二极管可以省略,我还是因为手上有,所以保留了。

黄框的是俩按钮,左边的是常闭按钮,一般情况下USB直接供电给STC32,当我们按下的时候断开,松开的时候重新恢复供电,也就是让STC32冷启动,这也是烧录程序时所需要的。

右边的是连接RST的按钮,但是默认是普通IO口,我们需要在烧录程序的时候取消下面的勾选,这样才会是复位按钮。

有一点需要注意,我工程文件的串口版本里用的四层板,内层分别是GND和+5V,所以如果各位小伙伴想打双层板的话需要对+5V重新布一下线,我为了偷懒所以用的四层板,层数越多布线越简单嘛。

不过USB版本的是双层版。

USB版本更简单,没了CH340,甚至我还把复位按钮给去掉了,因为我觉得人家默认把RST当普通IO口肯定有人家的考虑,所以我直接去掉了,如果需要复位的话,只需要按一下那个常闭开关也可以达到复位的效果。

另外不一样的是,如果我们直接使用USB来下载程序的话,流程上和串口不一样,我们需要让STC启动的时候P32这个引脚是低电平,所以需要加上连接P32的按钮。

这一点在官方手册里有体现。

并且我们要在USB的差分信号线上串联22Ω的电阻,我因为忘记买了,所以用0Ω的电阻代替,也是可以正常烧录的,所以这俩电阻可加可不加,加的话就是阻抗匹配信号传输更稳定。

USB版本因为省了转串口芯片,所以空了不少,比串口版本的更短一些。

在STC32和STC8之间空了一大块,所以我加上了自己的Logo,大家可以自行替换。

有了核心板之后我们就可以把核心板当成是封装好的函数库,如果后续有其他项目的需要用到这款芯片的话,我们直接把核心板的原理图复制过去,重新布局布线一下就能使用了,另外核心板因为把大部分芯片引脚都接出来了,只需要买些外设模块就可以对芯片进行学习。

最近再整毕设的选题,搞得我头皮发麻,小伙伴们有什么想法的话也可以给我支支招(不要太难哈,太难的我不会;也不要太简单哈,太简单的我不屑,好叭简单的也可以~),如果我觉得小伙伴的建议不错,有搞头,那我就会尝试去做一下,后面成功的话也会给大家开源出来。

如果我拿来当毕设题目的话另有重谢!

### STM32F103C8T6最小系统板与STC89C51单片机特点对比分析 #### 1. 架构与内核 STM32F103C8T6采用ARM Cortex-M3架构,具有高性能的RISC处理器核心。相比之下,STC89C51基于经典的8051架构,指令集较为简单且执行速度较慢[^1]。 #### 2. 工作频率与时钟源 STM32系列支持高达72MHz的工作频率,并内置多种时钟源选项;而STC89C51典型工作频率仅为12MHz左右,外部晶振最高也仅能到24MHz。 #### 3. 存储器配置 STM32拥有较大的Flash存储空间(通常为64KB至1MB),以及丰富的SRAM资源(一般介于20KB~96KB之间)。相反地,STC89C51内部仅有4KB Flash ROM128Bytes RAM,在处理复杂算法或大数据量应用方面存在明显不足。 #### 4. 外设接口功能 - **定时计数器**:STM32具备多个高级定时器单元,可实现PWM波形生成等功能; - **通信接口**:除了标准UART/SPI/IIC外,还增加了USB OTG、CAN总线等现代通讯协议的支持; - **ADC/DAC转换**:集成高精度模拟输入/输出通道,便于连接传感器网络或其他连续信号设备; - **其他特性**:如DMA控制器、RTC实时时钟模块等特色组件也为开发提供了更多可能性。 对于STC89C51而言,则主要依赖基础I/O端口完成数据交换任务,缺乏上述高端外设的支持。 #### 5. 开发环境与工具链 由于采用了更先进的体系结构技术规格,围绕着STM32构建起来的一整套软件生态系统更加完善成熟——从官方IDE (Keil MDK, IAR Embedded Workbench) 到开源替代方案(GNU ARM Eclipse),再到图形化编程界面(Mbed Studio)。与此同时,针对该平台发布的各类库函数文档详尽易懂,极大地降低了初学者的学习门槛并提高了项目实施效率。 相较之下,尽管也有不少第三方厂商提供适用于8051家族产品的编译调试工具包(比如SDCC),但在整体用户体验上仍存在一定差距。 ```c // 示例代码片段展示了如何初始化STM32上的USART串行通信接口 void USART_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE); // 配置PA9作为USART1_TX复用推挽输出模式 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); // 初始化USART1参数设置 USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No ; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1,&USART_InitStructure); // 启动USART1发送接收使能位 USART_Cmd(USART1,ENABLE); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值