面向嵌入式硬件2层最小系统设计-历次优化记录

363 阅读2分钟

1 原理图设计

image.png image.png image.png

2 第一次优化

image.png image.png image.png

3 第二次优化(出现重大错误,导致焊盘被绿油覆盖)

image.png image.png

  • 出现重大错误 image.png image.png

4 第三次优化

image.png

  • 使用层 image.png image.png
  • 阻焊层 image.png

4.1 焊接测试

image.png image.png

4.2 调试20220422021

  • 经过焊接调试,已经实现下载验证,CUBEIDE编程,但是存在以下问题:STM32系列需要注意型号,比如:STM32 F103 RB 与STM32 F103 RC HAL库并不通用 c328479f8907c2c068db305b6d67f6d.jpg

4.3 错误分析

  • 因为时钟引脚出错,导致不能使用外部时钟 image.png image.png image.png
  • 另外需要特别注意,F405的时钟引脚也不再是PD0,PD1,而是PH0,PH1 image.png image.png image.png

5 第四次优化

  • 优化了晶振电路,SWD下载电路,BOOT等系统功能,以及焊接密度高的元件间隔
  • 丝印更加规范 image.png image.png image.png image.png

5.1 调试20220430

image.png

5.2 焊接测试

9e7cbbedfd87fecc4404ac3720c4f49.jpg image.png image.png image.png

6 高级功能调试(串口中文乱码)

6.1 串口发送中文要求编码格式为GBK

image.png image.png image.png

6.2 串口Printf设置

  • main.c 中添加如下代码段即可 image.png

6.4 串口中断回调函数

  • 串口初始化 image.png image.png
  • 多字符发送 image.png
  • 回显设置(使用 USART1 的发送端 TX 来发送数据,并使用接收端 RX 接收发送出的数据,然后可以通过串口中断打印出来,因为串口在接收完成后就自动关闭中断了,所以要想连续发送和接收,我们就在串口接收完成回调函数中,重新调用HAL_UART_Receive_IT(&huart1,&RxBuffer,1),重新打开串口中断 */) image.png

6.3 高级功能编码测试

  • 串口接收中断(初始化要记得,否则串口接收不会进入中断) image.png
  • LED闪烁测试
  • 串口printf测试
  • 双精度打印测试 image.png
  • 系统时钟测试
  • 多字符中文回显测试 image.png

6.4 测试结果

  • 高级功能测试结果 image.png
  • 回显测试 image.png

6.5 剩余引脚测试

  • 问题引出:发现连接IPS屏幕没有信号,不知道问题出现在哪里,最后,定位出来是焊接问题,又重新补焊,最终测试OK,挨个进行IO测试,定位是否虚焊 00439b7506b4f8a9781004c9166a257.jpg 4db8ee12966195b6dc99fd06062ead4.jpg d405419d7dd8cbc8134c092ebe6041a.jpg
  • PCB绘制时,出现明显错误 image.png