【开坑国产单片机GD32系列,带你零死角玩转GD32】


第六章 GD32F103C8T6串口开发板规划攻略(二)

(1)前语

历添新岁月,春满旧山河;

最初其他先不说,先祝各位彦祖新年快乐!

国产单片机GD32系列开坑,带你零死角玩转GD32 第六章

新的一年,准备给粉丝们安排一波福利,随机挑选五名幸运彦祖,然后你们众筹一块野火Linux开发板送给我吧!

国产单片机GD32系列开坑,带你零死角玩转GD32 第六章
好的!言归正传!第五章主要评论了电源接口和电源电路的芯片选型和原理图规划,这一章,要评论的便是剩余的硬件规划部分,主要包括以下两个内容:

(I)USB转串口的电路原理图规划。

(II)MCU晶振电路,BOOT,SWD的原理图规划。

在开端评论之前,我先对这两个内容所存在的一些难点进行一个大致的描绘,==彦祖们假如觉得这些难点自己都没啥问题的话,这篇帖子其实就能够不必看了,== 由于篇幅仍是挺长的。

国产单片机GD32系列开坑,带你零死角玩转GD32 第六章

(2)硬件规划部分难点

(2.1)USB转串口电路规划难点

这应该是最常用的一个功用了,CH340与PC机经过USB接口和协议通讯,将USB的数据包的有效数据段提取出来,然后将数据经过串口发给其他比方MCU的下位机,这儿主要有以下几个难点: (I)==CH340的根本原理图怎么规划?==

(2.2)MCU晶振电路,BOOT,SWD的规划难点

MCU的晶振电路,BOOT,SWD以及复位电路,构成了MCU的最小体系,市面上也有许多有关MCU最小体系的材料和产品,可是当咱们自己绘制原理图,PCB进行实物制造时,有时分就会呈现外部高速/低速晶振不起振,上电后BOOT状态异常,程序执行过错,或许说复位功用失效,压根就无法复位,最让人不能接受的便是下载功用无效,一顿操作猛如虎,一到下载就芜湖,这当中其实涉及到的便是MCU最小体系的原理图规划,主要有以下几个难点: (I)MCU的BOOT引脚是干啥的?BOOT引脚怎么正确运用? (II)SWD下载电路怎么规划?

(3)硬件原理图处理方案的规划

(3.1)USB转串口电路原理图规划

在第二点中,咱们描绘了USB转串口电路原理图规划的三个难点,现在咱们顺次处理。 (I)CH340的根本原理图怎么规划? 首要咱们需求知道的是,CH340其实本身便是一款MCU,它的效果,便是根据USB协议,将USB数据包中的数据段提取出来,再经过串口发送出去,这儿要留意的是,USB转TTL可不是简单的通讯电平转换,USB通信协议的复杂度,现已有一点TCP/IP的影子了,而且USB通讯运用的是差分信号,妥妥的模拟信号,和串口的数字信号解调的原理和思路都是大相径庭的,所以当MCU需求运用串口和上位机进行交互,而PC端的串口不方便运用时,选用一颗USB转TTL的芯片,就成了一种必要了,而CH340的根本原理图,其实便是一个MCU的最小体系原理图了,咱们以CH340G为例,它沁恒微电子的产品中,最典型和最具性价比的一款了。

国产单片机GD32系列开坑,带你零死角玩转GD32 第六章
上面这张图截取自CH340的数据手册,描绘了CH340系列USB芯片最根本的时钟,复位,电源等电路的规划,需求手册的彦祖能够点击下面的链接,相关驱动也能够在链接页面下载。
国产单片机GD32系列开坑,带你零死角玩转GD32 第六章

CH340x数据手册: www.wch.cn/download/CH…

从图中画红线部分内容能够知晓,第一点,CH340G假如想要正常作业的话,必须要外接一个12MHZ的高速晶振,而且还得在晶振两头对地接负载电容,那问题来了,晶振以及配套的负载电容怎么挑选?这不得去立创商城看看?

国产单片机GD32系列开坑,带你零死角玩转GD32 第六章
在立创挑选栏中依照如图信息挑选,就会呈现一大串能够挑选的晶振,这儿挑选第一个,作为比方:
国产单片机GD32系列开坑,带你零死角玩转GD32 第六章
咱们一般只需求重视红框内的数据,由于咱们挑选的是12MHZ的晶振,而这个晶振的数据手册是为整个系列所规划的,所以咱们只需求确保咱们运用的晶振频率是厂家所规则的规模内即可,而第二个红框内的数据,便是负载电容的取值规模,规则为10pF和20pF(那个特殊值就不要寻思了),所以在运用这款晶振时,需求对地接两个10/20pF的贴片电容,假如你接的是100pF,甚至10uF这样的电容,极大概率晶振是无法作业的,也不要去接钽电容,电解电容这样的类型,那可真是太秀了。

第二点,也便是CH340G的电源问题,CH340G的引脚如下图所示,其间关乎电源的,是第16脚VCC,第1脚GND,以及第4脚V3。

国产单片机GD32系列开坑,带你零死角玩转GD32 第六章
在选用5V供电时,如红线部分所示,V3脚要经过一个0.1uF贴片陶瓷电容接地,而选用3.3V供电时,V3脚就要直接衔接3.3V电源了,如下图所示:
国产单片机GD32系列开坑,带你零死角玩转GD32 第六章
第三点,也便是衔接的问题了,CH340G和USB的USB_DP和USB_DN/USB_DM衔接,其实这儿的DP中的P便是Positive,活跃的,而N/M,便是Negative/Minimum,消极的/最小的,对应的便是USB差分信号的两根同起伏,同频率,可是相位不同的信号线,所以要做的,便是将比方Micero-USB,Type-C这类USB接口的USB数据线和CH340G的USB外设引脚相连,USB_DP衔接UD+,US_DN衔接UD-,而CH340G的串口则和MCU的串口衔接,就像两个MCU的串口衔接方法一样,具体连线如下图所示:
国产单片机GD32系列开坑,带你零死角玩转GD32 第六章
需求留意的是,图中选用的USB接口是Type-C口,Type-C除了供电和USB通讯外,还有充电协议之类的功用,由于咱们这儿未运用,所以有些引脚就不予衔接了。而且Type-C的输出电压在4.75V~5.25V之间,而CH340G在的供电要求如下图所示:
国产单片机GD32系列开坑,带你零死角玩转GD32 第六章
假如选用的是5V供电的话,其实CH340G是能够适应USB输出电源的动摇的,也能牵强适用于一般场景,可是还要考虑比方MCU,屏幕,传感器之类的器材能否接受这个动摇,所以一般状况下,建议选用一个DC-DC的电源芯片将电压稳定到+5V,或许有彦祖现已留意到了,Type-C有两排引脚,而且信号线的次序相反电源却相同,这正是为正反插功用而规划的,就不必忧虑插反的问题了。

(3.2)MCU晶振电路,BOOT,SWD的原理图规划

这一部分的内容,其实便是一个MCU最小体系的实现,市面上售卖的大部分最小体系开发板也是只包括这一部分功用,最多再加几个LED和按键。 关于MCU晶振的选型,其实,在第三章现已提及了,关键是要根据数据手册中关于外部高速/低速晶振规模来选型,比方GD32F103C8T6的外部高速晶振HSE,其规模如下图所示:

国产单片机GD32系列开坑,带你零死角玩转GD32 第六章
所以GD32F103C8T6的HSE晶振选型中,晶振频率不能超过这个规模,另外体系时钟配置及挑选功用,在第三章也有提及,需求的彦祖能够去瞅瞅。

第一点,MCU的BOOT引脚是干啥的?BOOT引脚怎么正确运用?BOOT并不是仅仅存在于MCU中,在电脑中也广泛存在,BOOT的来源于Bootstrap,意为“鞋带”,它来自于一句谚语:

Pull oneself up by one’s bootstraps.

这句话的字面意思是:”拽着鞋带把自己拉起来”,或许说是:“左右脚相互踩,然后走上天”,这种会让牛顿诈尸的事当然是不或许发生的。但实际上,早期计算机发动便是这么一个对立的进程:必须先运转开机程序,然后计算机才能顺畅发动,可是计算机不发动的话,就无法运转开机程序,那这个局面怎么破解呢?

国产单片机GD32系列开坑,带你零死角玩转GD32 第六章
时刻来到1974年,这一年,第一个微机操作体系,由加里基尔规划的CP/M(便是下面这个大佬),诞生了,随之而来的,便是第一个BIOS的呈现,BIOS的功用之一,便是充任引导程序,将程序加载至运转内存,值得留意的是这款操作体系是根据Intel4004微控制器的,而Intel后期转头去做其时风头正盛的个人计算机和商用计算机CPU了,就把Intel4004的IP版权授权给了许多厂商,而Atmel购买版权后,于80年代初,推出了MCS-51系列单片机,也便是咱们熟悉的AT89C52之类的MCU了,国内的STC89xx系列,也是根据该IP版权开发的。
国产单片机GD32系列开坑,带你零死角玩转GD32 第六章
言归正题,其时为了处理计算机的Boot问题,厂商将Bootloader代码固化在了体系存储区,正常开机之后,将会首要运转体系存储区的Bootloader,然后Bootloader会将坐落Flash的应用代码,加载至SRAM/RAM执行,这儿或许会有彦祖要问了,体系存储区在哪?MCU不是只有RAM和Flash么?
国产单片机GD32系列开坑,带你零死角玩转GD32 第六章
这个是GD32F103xx的存储架构,中心的GD32F103xx从0x0000 0000~0xFFFF FFFF的完整存储架构,能够看到从0x2000 0000到0x2001 8000,标黄的是SRMA的区域,从0x4000 0000到0x4002 4400标红的是一系列外设的寄存器,而标紫的存储区域中,包括的的便是Flash和System memory(体系存储区),能够看到,0x8000 0000到0x0830 0000,标绿的便是Flash区域,而0x1FFF F000到0x1FFF F800标蓝的区域便是体系存储区了,咱们进行串口ISP下载的时分,便是体系存储区固化的Bootloader在进行引导,所以体系存储,Flash和SRAM是在32位地址上各自独立的存储空间。 铺垫了这么久,其实MCU的BOOT功用并不复杂,在GD32F10xx的数据手册中对BOOT功用有以下描绘:
国产单片机GD32系列开坑,带你零死角玩转GD32 第六章
国产单片机GD32系列开坑,带你零死角玩转GD32 第六章
MCU的两个BOOT引脚依照如上图所示的配置方法,能够切换程序发动的方位(这儿的1,便是高电平3.3V),可是需求留意的是,BOOT的引脚状态采样,是在上电后的第四个时钟上升沿后便确定,所以在运转进程中,修正BOOT引脚是莫得用的,只要复位或许从头上电,才会使得更改后的BOOT配置生效,想要更多细节的彦祖能够直接检查GD32F10xx的数据手册,==可是需求留意的是,GD32F103C8T6不同于STM32F103C8T6,STM32的BOOT0引脚是能够悬空的,可是GD32的BOOT0引脚必须有一个确定的状态,要么经过10K电阻下拉,要么直接连GND,而且GD32系列的BOOT1在被采样后,能够用作普通GPIO。==

GD32F10xx数据手册: www.gd32mcu.com/data/docume…

国产单片机GD32系列开坑,带你零死角玩转GD32 第六章
第二点,便是SWD电路的规划,在之前的项目规划中,呈现过一些SWD衔接不上,PC无法识别到MCU的问题,或许说是下载速度一旦设置过高,就会呈现下载失利的状况,实际上,这与GD32的SWD驱动才能相较STM32更弱,有很大联系,所以针对这种状况,能够经过以下措施来提高SWD通信质量:

  • SWDIO接10k上拉电阻,SWCLK接10k下拉电阻。
  • 选用电池供电,作业电压假如跌落到2.0V~2.6V区间,ST还能作业,可是部分GD32就有或许无法发动或作业异常。
  • 缩短SWD两个信号线长度,最好15cm以内。
  • 将SWD两根线和GND线编个麻花,缠在一同。
  • 在SWD两根信号线对地各并几十pF小电容。
  • SWD两根信号线任意IO串入100~1K电阻。

更多细节彦祖们能够点击下面链接,前往GD32官网检查相关文档。

GD32F4xx系列硬件规划攻略: www.gd32mcu.com/data/docume…

(4)中场总结

到目前为止,GD32F103C8T6通用的电路原理图规划相关内容就现已讲完了,后续就会会集在GD32F103C8T6的Letter Shell移植的软件部分,预计用两章的篇幅讲完剩余的内容,假如彦祖有啥好的构思项目能够在后台私信我,我争夺给他整出来,假如没有的话,下一个开源项目便是某位不愿意泄漏名字的彦祖提出的==根据GD32的录音笔软硬件规划==,最近也打算更新操作体系和数据结构相关的内容,由于要去刷大厂面试题,所以后续也会和大家一同分享这些内容!

国产单片机GD32系列开坑,带你零死角玩转GD32 第六章