自制Arduino 风格开发板 - HK32F030MF4P6 紧凑开发板

news2024/10/1 1:26:08

模仿Arduino Nano 做一个HK32F030M 的紧凑开发板,排针间距和Arduino Nano 相同,整体尺寸略小,适合插在面包板上。兼容HK32F030MF4P6 和0301M,板载CH340N 串口和DS1307 时钟模块。开源工程地址:HK32F030MF4P6 紧凑开发板。

尺寸4.2 X 1.8cm,因为引脚数量更少,本来板子是可以更短一点的,但是没必要。一开始是设计成两层PCB ,工程里有个弃用的两层板,能用,但是感觉地平面惨不忍睹,有些信号线也不得不绕很大一圈,所以之后更新成四层板了,和两层板电路上差别不大,主要更改了几个引脚的顺序和编程接口,然后就是免费打样只能是绿色的。开发板的主要特性:

  1. 7pin 编程接口:把SWD 和串口放在一起,配合一个转接板,可以直接连到带串口功能的dap link 编程器上;
  2. CH340N 串口模块:用串口连接电脑有两种方式,一种是用上面的7pin 编程接口连接到编程器,另一种就是通过CH340N 模块连接到USB。两种方式不可同时使用,USB 接口可选择type-c 或micro-b;
  3. DS1307 时钟模块:HK32F030M 没有RTC 功能,所以外挂一个模块;
  4. 预分配I2C 引脚:HK32F030M 有很灵活的引脚重映射功能,但是太灵活了也烦人,而且板载DS1307 要连接到I2C 总线,所以就预分配了引脚,板载了上拉电阻,省的以后纠结;
  5. 预分配串口引脚:同上,固定了TX 和RX 引脚;
  6. 预分配SPI 引脚:同上,不过SPI 总线上没有连接东西,只是在板子上画了丝印,所以不用预分配的方案也OK;

测试进度:用官方例程测试了板载的LED、编程接口及串口、CH340N 串口,没什么问题,所以供电模块肯定也没问题,DS1307 就默认OK 吧。

HK32F030M 的官方固件库和例程可在这里找:https://bbs.21ic.com/icview-3236132-1-1.html。

在这里插入图片描述
在这里插入图片描述

复位电路

由于0301M 可以复用NRST 为PA0 引脚,所以为了不降低扩展性,复位电路采用了类似51 单片机的上电复位,NRST 上只接了一个上拉电阻,复位通过给单片机断电来实现。

在这里插入图片描述

开发板上电后,PMOS Q1 默认导通,给单片机提供3.3V 供电。当PNP 三极管Q2 基极被拉到低电平,也就是REBOOT 信号有效时,Q1 截止,单片机断电,REBOOT 恢复高电平或高阻态时单片机恢复供电,上电复位。这个电路在连接编程器时可能无法给单片机复位,因为编程器能通过SWD 引脚给单片机供电,加上漏电隔离应该就行了,但是需要至少两个二极管,可能放不下,而且太啰嗦。

7pin 编程接口

在这里插入图片描述

设计成7 个针只是因为就需要这么多,恰好不对称,就当是一种防呆设计~ 如上图,引脚定义从上到下依次是:

SWCLKRST
SWDIO3.3V
TXDGND
RXDNC

其中RST 在这里是连接到上电复位电路的REBOOT,RXD 和TXD 分别连接到单片机的RXD 和TXD,所以编程器的TXD 要连接到这里的RXD 上。把RST 引脚和GND 调换一下或许会更好,因为这样一来去掉串口TXD 、RXD 和RST 后,剩下的四个引脚就是最少所需的编程接口,刚好排成2x2 的正方形,但是既然已经这么画了,就无所谓了吧。

DAP LINK 调试器转接板

就是个10pin 转7pin 的小转接板,用来把某宝上买的DAP LINK 直接连接到这个7 针接口上,省的杜邦线搞半天,实物:

在这里插入图片描述
红框里的是转接板,下面长的是某宝上买的DAP LINK。转接板用2x5pin 弯排母连接到DAP LINK,再用2x4pin 直排母连接到7 针接口,想要防呆功能的话,可以手工把2x4pin 排母多出来的1pin 用胶堵住。上面多出来的两个白色插针是+5V 和GND,7 针接口不连接+5V,想从USB 直接取5V 供电的话,就从这两个插针飞线出去。转接板本身很简单,原理图都不用画,其他的各种link 也可以自制个转接板。

引脚功能 - 板载LED

在这里插入图片描述
参考原理图,预分配的引脚都用短接符标出来了。板子上一共只有两个LED,一个是电源指示灯,另一个连接到PA2 引脚,也是SPI 的SCK 引脚,和Arduino 的习惯一样。VCAP 可以直接用作PD7,不用配置,但在030M 上,PD7 似乎只能用作普通引脚,不能使用复用功能。板子上通过插针引出了NRST,0301M 上可以配置IOMUX 寄存器把NRST 复用为PA0,据说030M 的有些批次也可以。

所以,加上PD7 和PA0,如果不复用SWDIO 和SWCLK,一共只有16 个IO 引脚,说多不多,某宝零售8 毛钱一片的单片机还要什么自行车。

DS1307 时钟模块和I2C

既然说了是开发板而不是核心板,还是应该尽量集成一两个外设才算名副其实,所以除了串口,又加了这个RTC 模块。I2C 的SCL 和SDA 分别分配到了PB4 和PB5,板子上加了4.7K 上拉到3.3V。

在这里插入图片描述

考虑到调试时可能没有5V 电源,所以DS1307 也能用板子上的3.3V 供电,接上肖特基二极管用来在有5V 时自动切换。图上也说了,DS1307 适配的电池是CR2032 之类的锂电池,标准电压3.6V,所以要使用DS1307 的自动充电功能,必须有5V 供电。C15 的目的是短暂维持供电,不一定有用,可以不装或装个普通的0.1uF。图上的RTC-CELL 连接到外置备份电池,板子上有个连接电池的插针,标记为CEL

在这里插入图片描述

CH340N USB 转串口

没什么好说的,只有一个稍微特殊的地方:

在这里插入图片描述
就像图上红字说的,0 欧电阻R4 是预留的,默认不装。HK32F030M 没有自带的bootloader,只能用编程器下载程序,如果有兴趣自己整个USB 下载程序的bootloader,接上R4 就可以用RTS# 信号控制单片机重启复位。CH340N 的TXD 上串了二极管,不会给单片机漏电。

供电

也没什么好说的,和Arduino Nano 差不多。板子上带了1117 和662K,分别提供5V 和3.3V 电压,单片机使用3.3V 供电。外部大于6V 的供电通过VIN 引脚输入给1117,5V 的外部供电就直接连到5V 插针上,内部没有任何保护,直接连到662K,然后生成3.3V 给单片机供电。HK32F0301M 有支持5V 供电的型号,要兼容有点麻烦,3.3V 又不是不能用,所以不管了。

焊盘上的过孔

多说一句,我后来很喜欢在把过孔直接放在焊盘边上,如下图:

在这里插入图片描述

这个板子还好,如果是更密集的板子,不这么做就没地方打过孔了。听说过焊盘上放过孔可能漏锡导致问题,我是纯手工焊接,焊锡膏加热风,所以无所谓。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/585431.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python学习36:文本分析与加密

类型:字符串‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ 描述‪‬‪…

测试百科:白盒测试用例的设计

正文 语句覆盖:每条语句至少执行一次。判定覆盖:每个判定的所有可能结果至少出现一次。(又称“分支覆盖”)条件覆盖:每个条件的所有可能结果至少执行一次。判定/条件覆盖:一个判定中的每个条件的所有可能结…

PyTorch-网络模型的保存和读取

1. 模型的保存 方法一:保存模型的结构模型的参数 陷阱:需要让文件访问到你自己的模型定义方式,可以用import的方式引入先前的模型定义。 model_save.py import torch import torchvisionvgg16 torchvision.models.vgg16(weightsNone) # …

Linux— 网络编程套接字

目录 预备知识 认识端口号 理解源端口号和目的端口号 认识TCP协议 认识UDP协议 网络字节序 socket编程接口 socket 常见API sockaddr结构 sockaddr 结构​编辑 sockaddr_in 结构 in_addr结构 地址转换函数 简单的UDP网络程序 实现一个简单的英译汉的功能 简易的远程…

注解-反射-XML配置原理

java刚开始原本是直接在方法中创建对象执行程序等,部分代码重复率高,后来就发展成方法封装调用,再后来出现的像spring框架等,引入了XML配置,使得程序更加简洁,方便等,其中XML配置也是基于java反…

java 线程安全和多线程

文章目录 前言一、ThreadLocal是什么?二、synchronized 和 ReentrantLock 都是 Java 中提供的可重入锁,二者的主要区别有以下 5 个:三、线程安全的集合类有哪些?四、说一下你对CompletableFuture的理解四、项目中是如何创建线程池…

R语言生物群落(生态)数据统计分析与绘图(从数据整理到分析结果展示)

R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂,涉及众多统计分析方法。以生物群落数据分析中的最常用的统计方法回归和混合效应模型、多元统计分析技术及结构方程等数量分析方法为主线,通过多个来自经典…

C++类和对象三

文章目录 类和对象三初始化列表用途与特性 explicit关键字再谈构造函数static成员static的特性 友元友元函数友元函数特性 友元类友元类特性 内部类概念特性 匿名对象拷贝对象时的一些编译器优化 类和对象三 初始化列表 初始化列表:以一个冒号开始,接着…

【源码解析】Spring Bean生命周期源码解析

Spring启动核心 AbstractApplicationContext#refresh,Spring刷新容器的核心方法。最关键的就是 AbstractApplicationContext#invokeBeanFactoryPostProcessors,扫描BeanAbstractApplicationContext#finishBeanFactoryInitialization,生成Be…

【MySql】InnoDB一棵B+树可以存放多少行数据?

文章目录 背景一、怎么得到InnoDB主键索引B树的高度?二、小结三、最后回顾一道面试题总结参考资料 背景 InnoDB一棵B树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞…

[C语言实现]带你手撕带头循环双链表

目录 什么是双链表? 带头结点的优势: 双链表的实现: 什么是循环双链表? 众所周知,顺序表的插入和删除有时候需要大量移动数据,并且每次开辟空间都可能会浪费大量内存和CPU资源,于是我们有了链表,我们之…

【实用篇】SpringCloud01

SpringCloud01 1.认识微服务 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢? 1.0.学习目标 了解微服务架构的优缺点 1.1.单体架构 单体架构&#xff…

基于复旦微 JFM7K325T 全国产FPGA的高速数据采集、图像处理方案

板卡概述 PCIE-XM711 是一款基于 PCIE 总线架构的高性能数据预处理 FMC载板,板卡采用复旦微的 JFM7K325T FPGA 作为实时处理器,实现 各个接口之间的互联。该板卡可以实现 100%国产化。 板卡具有 1 个 FMC(HPC)接口,1 路…

这10道测试用例面试题,面试官肯定会问到

前言 软件测试面试中,测试用例是非常容被问到的一个点,今天小编就给大家把最常见的测试用例方面的问题给大家整理出来,希望对大家的面试提供帮助。 1、 什么是测试用例‍ 答:测试用例的设计就是如何覆盖所有软件表现出来的状态…

硬盘有多少图片取决我的网速, Python获取硬盘少女图集

目录 前言开发环境:案例实现的步骤:代码展示尾语 💝 前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 图片数据在网络中随处可见, 如果需要一些图片素材 一睹为快把! ! ! 开发环境: 解释器: python 3.8 编辑器: pycharm 2022.3 专业版 内置模块使用 os &g…

CH341的I2C接口编程说明

CH341的I2C接口特性: 1、支持I2C速度20K/100K/400K/750K; 2、默认不支持设备的ACK应答监测,即忽略ACK状态;强制支持需修改软件; 引脚序号功能说明24SCL23SDA Windows系统SPI通讯接口函数 HANDLE WINAPI CH341OpenD…

Piccolo傻瓜式环境配置

首先下载Piccolo的代码 Piccolo下载网址点击Code然后点击Download ZIP。可能有点慢,总共要下139M。 下载CMAKE CMAKE下载网址下载完后安装CMAKE 构建环境 将下来的Piccolo-main压缩包解压为Piccolo-main文件夹。打开CMAKE,如下图进行目录选择&…

Linux - 第19节 - 网络基础(传输层二)

1.TCP相关实验 1.1.理解listen的第二个参数 在编写TCP套接字的服务器代码时,在进行了套接字的创建和绑定之后,需要调用listen函数将创建的套接字设置为监听状态,此后服务器就可以调用accept函数获取建立好的连接了。其中listen函数的第一个参…