打印机-STM32版本 硬件部分

最终 PCB EDA 工程:

一、确定芯片型号

根据项目需求,梳理需要用到的功能,

  • 电量检测:ADC

  • 按键:IO input+外部中断

  • LED:IO output

  • 温度检测:ADC

  • 电机控制:IO output

  • 打印通讯:SPI

  • 打印时序:IO input&output

  • 蓝牙:UART连接透传模组

  • 日志:UART

最终得出需要的外设和功能:UART、SPI、ADC、IO、中断、定时器、RTOS

外设部分 一共需要27个IO,其中特殊外设包括两个ADC,一个SPI,两个UART,一个用于蓝牙通讯,一个用于日志打印。

最终选择 STM32F103C8T6

  • 描述:CPU内核:ARM Cortex-M3 CPU最大主频:72MHz 工作电压范围:2V~3.6V 程序存储容量:128KB 程序存储器类型:FLASH RAM总容量:20KB GPIO端口数量:37 ST 32位 ARM内核 MCU芯片

二、确定外设接到哪个IO

1、查看芯片Datasheet确定

手册与设计资料: www.st.com

打开芯片手册,然后找到pin definitions页面,这里主要查看一些特殊功能的引脚,例如adc、uart、spi用的是哪些io,确定下来后,把其它的通用IO也逐一确定即可,这些通用的IO后续绘制原理图时,还可以调整。

手册与设计资料: www.st.com

打开芯片手册,然后找到pin definitions页面,这里主要查看一些特殊功能的引脚,例如adc、uart、spi用的是哪些io,确定下来后,把其它的通用IO也逐一确定即可,这些通用的IO后续绘制原理图时,还可以调整。

2、使用STM32Cubemx工具确定

2-1、安装STM32Cubemx

https://www.st.com/zh/development-tools/stm32cubemx.html

stm32cubemx安装教程(包含安装包)

2-2、打开软件,创建工程

File->New Project->stm32f103cb

2-3、设置系统时钟为外部时钟

因为我们高速时钟想使用外部8MHz的晶振,当然了,也可以使用内部时钟,对精度要求不高的话,低速时钟就不需要的,因为我们用不到RTC功能。

设置时钟为72MHz,外部晶振8MHz

2-4、设置Debug方式支持Serial Wire

后续可以使用Jlink SWD进行烧录仿真

2-5、确定对应IO

到这里,你就可以选择对应功能的引脚了,例如ADC SPI UART分别是芯片的哪个引脚,记录下来

然后剩余的常规IO,就可以比较随意,大部分引脚都是可以复用的,直接在右边的芯片上点击选择即可,对应IO设置为输出输入,这一步可以打开示例工程参考哦!!

三、绘制原理图和PCB Layout

1、外设部分原理图的绘制

2、STM32的最小系统绘制

绘制完外设后,我们看下STM32的最小系统如何绘制

  • 电源

  • 外部时钟

  • 运行模式

  • 烧录仿真接口

外设:

3、BLE透传模组

由于STM32是没有蓝牙功能的,而我们需要和手机进行通讯,这里我们使用了蓝牙透传模组,通过串口与STM32进行数据透传。

蓝牙部分我们使用串口2进行数据交互,所以需要重写串口2的处理函数

我们使用的蓝牙模组是RF Crazy/智汉的模组,主要是立创上购买方便,大家也可以根据自己需要选择其它模组。

模组的连接非常简单,只需要提供电源和地,然后串口连接STM32的串口即可通讯。

4、把芯片IO和外设连接起来

有了芯片和外设,那芯片如何控制外设或者读取外设状态呢?这里就需要把芯片IO和外设连接起来了。只需要用标签连接起来即可。

5、接下来就是PCB Layout

四、生产、焊接、快速调试

1、生产

2、焊接

  1. 准备好PCB、元器件、电烙铁、焊锡、镊子、万用表。

  2. 打开BOM表或者PCB工程,然后从电源模块开始,找到要焊接的元器件型号,逐个模块焊接,切记不要一下子焊完所有模块,否则很难定位排查问题。

  3. 每个模块焊接完成后,对照原理图、PCB工程,用万用表先检查下有没有焊接错误、短路、虚焊等情况,一个焊点一个焊点确认,确认没问题后在焊接下一个模块。

一般的焊接流程是:

  • 充电管理模块

  • 开关

  • 电源指示灯

  • 稳压3.3V (先焊接模块11,才能使用开关打开电源到稳压3.3V)

  • CH340

  • 打印头相关

  • STM32芯片

  • 升压模块

3、焊接完排查说明

焊接完成后,切记不要马上上电,先目测、用万用表检测下,有没有焊接错的地方,特别是要检查各路电源有没有短路,确保没有短路后,上电第一时间也要观察下有没有异常,有异常迅速拔掉电源。

目测没有异常后,先检测下所有的电源电压是否正常,在确定所有电源电压正常后,就可以接到电脑,烧录程序啦。

相关推荐
Wallace Zhang1 分钟前
STM32F103_Bootloader程序开发11 - 实现 App 安全跳转至 Bootloader
stm32·嵌入式硬件·安全
GodKK老神灭5 分钟前
STM32 CCR寄存器
stm32·单片机·嵌入式硬件
杰克逊的日记9 天前
MCU编程
单片机·嵌入式硬件
Python小老六9 天前
单片机测ntc热敏电阻的几种方法(软件)
数据库·单片机·嵌入式硬件
懒惰的bit9 天前
STM32F103C8T6 学习笔记摘要(四)
笔记·stm32·学习
HX科技9 天前
STM32给FPGA的外挂FLASH进行升级
stm32·嵌入式硬件·fpga开发·flash·fpga升级
Suagrhaha9 天前
驱动入门的进一步深入
linux·嵌入式硬件·驱动
国科安芯9 天前
基于ASP4644多通道降压技术在电力监测系统中集成应用与发展前景
嵌入式硬件·硬件架构·硬件工程
Li Zi9 天前
STM32 ADC(DMA)双缓冲采集+串口USART(DMA)直接传输12位原始数据到上位机显示并保存WAV格式音频文件 收藏住绝对实用!!!
经验分享·stm32·单片机·嵌入式硬件
进击的程序汪9 天前
触摸屏(典型 I2C + Input 子系统设备)从设备树解析到触摸事件上报
linux·网络·嵌入式硬件