制作全志V3s开发板

荔枝派Zero是一款设计精巧功能强大的开发板。但在使用过程中,我总是不满意于屏幕排线的弱不禁风和只能依靠飞线连接的各种外设。于是,我便动了自己制作一块V3s开发板的心思。

我心目中的这块开发板应该要满足以下这些要求:

  • 引出2路SDIO
  • 电容触摸屏与按键
  • 屏幕可以安装在开发板上
  • 具有3.5mm输出与功放
  • 引出扩展IO排针
  • 易于手工焊接
  • 尽可能低的成本

由于V3s的供电电路比较复杂,因此传统的双层PCB无法很好的满足走线与稳定性的需要,使用4层PCB就被提上了日程。在这之前,我并没有实际画过4层板,因此这块开发板不出意外将是我画的第一块4层PCB。

我使用了兼容正点原子接口定义的4.3寸800x480分辨率的RGB电容屏模组。这个模组上集成了屏幕、电容触摸(GT9147控制器)以及背光电路。但是它的尺寸大约为11cmx5.5cm,若想要将屏幕安装在开发板上,开发板就至少要有和屏幕一样的尺寸,而超过10cmx10cm的4层板,价格就直接变成了两三百,这显然是让人难以接受的。

很多商品开发板都采用一块多层的小核心板,搭配一块尺寸较大的双层底板的方案。这样,可以将电路最复杂的核心部分用多层板来走线,而底板则只负责各类接口与简单的外设。成品开发板使用的连接器多为B2B连接器。这种连接器体积小,但是很难焊接,而且连接器本身也很贵;排针+排母的组合价格低廉且没有焊接门槛,但是外观比较丑,比较浪费PCB空间。

最后,我将目光放到了主板上常见的M.2Mini PCI-E接口上。这两种连接器都是将PCB的金手指直接插入插座的方案,并且插座的价格也比较低廉。对于M-Key(也就是常见的PCI-E x4固态硬盘的接口)的M.2接口来说,共有67个引脚,而Mini PCI-E则是52个。考虑到V3s去掉LCD接口的引脚数量并不多,因此二者都可以满足引出IO的需求。M.2 2242与全高Mini PCI-E卡的体积也都可以满足器件的摆放。

最后,在了解了嘉立创对4层板SMT的制作工艺之后,发现对于4层板能进行SMT的板子厚度最小为1mm,而M.2接口规范规定其PCB厚度为0.8mmMini PCI-E则为1.0mm。因此,核心板采用了全高Mini PCI-E卡的尺寸规范,并能够完全兼容标准Mini PCI-E插座。

不兼容的接口定义

核心板使用了自定义的接口定义, 严禁将核心板插入普通主板的对应接口。 以下为V3s核心板接口定义。

Pin Top side Pin Bottom side
1 UART0_TX 2 UART2_TX
3 UART0_RX 4 UART2_RX
5 SPI_MISO 6 PwMO
7 SPI_CLK 8 PWM1
9 SPI_CS 10 I2C_SDA
11 SPI_MOSI 12 I2C_SCL
13 ETH_LEDG 14 VBUS
15 ETH_LEDY 16 VBUS
17 ETH_RXN 18 TOUCH_INT
19 ETH_RXP 20 TOUCH_RST
21 ETH_TXN 22 3V3
23 ETH_TXP 24 HP_DECT
25 GND 26 USB_ID
27 SDIO0_D2 28 RESET
29 SDIO0_D3 30 HP_R
31 SDIO0_CMD 32 HP_L
33 SDIO0_CLK 34 HP_COM
35 SDIO0_D0 36 SDIO1_D3
37 SDIO0_D1 38 SDIO1_D2
39 GND 40 SDIO1_D1
41 USB_DM 42 SDIO1_D0
43 USB_DP 44 SDIO1_CMD
45 GND 46 SDIO1_CLK
47 LRADC 48 UART1_RX
49 MIC_P 50 UART1_TX
51 MIC_N 52 VBAT

核心板采用了4层PCB设计,双面放置元器件,并将嘉立创SMT可贴元器件都放到了背面,没有的放到了正面。这样,SMT之后的板子的正面仍然可以刷锡膏用风枪焊接,焊接美观且工作量小。

V2.1核心板

V2.0底板是使用喷锡工艺制作的,并在二月焊接完毕。截至四月底,核心板的金手指与底板的连接器之间已经开始出现接触不良,因此狠下心来制作了沉金的V2.1版核心板。 哪个男孩能够拒绝金灿灿的电路板呢? 除了使用沉金工艺之外,V2.1核心板还对电源部分布局进行了一些优化,并加宽了电源走线宽度。新版核心板的PCB文件可在文末下载。

https://img.yuanze.wang/posts/v3s-dev-board-hardware/core-board-v2.1-gold.jpg
沉金工艺的V2.1核心板

V2.1的核心板仍可以配合V2.0的底板使用。

https://img.yuanze.wang/posts/v3s-dev-board-hardware/core-board-v2.1-render.png
V2.1核心板PCB渲染图

https://img.yuanze.wang/posts/v3s-dev-board-hardware/core-board-v2.1.jpg
V2.1核心板PCB焊接图

https://img.yuanze.wang/posts/v3s-dev-board-hardware/core-board-v2.0-render.png
核心板PCB渲染图

https://img.yuanze.wang/posts/v3s-dev-board-hardware/core-board.jpg
核心板PCB焊接图

核心板上有V3s主芯片以及其配套的3路电源电路、时钟电路,还有SPI Flash以及液晶屏的40Pin接口。液晶屏直接通过排线连接到核心板,这样可以省下很多引脚与走线。Mini PCI-E接口部分包括了V3s大部分的GPIO以及外设引脚。

底板采用双层板设计,包含了2个SDIO TF插座(也可以接SDIO Wi-Fi)、1个百兆RJ45插座、1个3.5mm耳机插座、1个USB-OTG插座、1个通过CH340提供的USB-Serial以及20PinGPIO排针。此外,底板还包含了4个通过lradc驱动的按键、1个MIC、1个复位按键、通过DS3231提供的RTC以及通过8002B提供的单声道功放。

耳机检测电路Bug
在最新的V2.0底板中,虽然加入了功放电路,但是使能引脚的电平是反向的,这会导致插入耳机时功放被使能,拔出耳机时功放被关断。由于开学后空闲时间较少,暂时没有时间重新制作硬件。如果需要参考底板原理图,请自行修改这一部分。

https://img.yuanze.wang/posts/v3s-dev-board-hardware/core-with-base.jpg
安装上核心板的底板

最后,将屏幕通过排线连接到底板,再通过4个铜柱与开发板固定,即完成了整个开发板的组装。

基于本开发板的二次开发

本开发板的核心板尺寸及Mini PCI-E插座尺寸均经过验证,核心板可以完美安装到底板上。若有同样希望使用Mini PCI-E方案来设计核心板的读者,可以放心使用本开发板的图纸进行二次开发。底板使用了兼容Molex的插座,该插座的图纸可以在下方下载,方便您确认使用的是否是同样的插座。该图纸是从贸泽电子网站下载得到。

 Mini PCI-E插座图纸

图纸中的插座是配合自弹支架进行固定的。在实际焊接的开发板中,我并没有使用支架进行固定,而是使用焊接铜柱进行固定。铜柱和插座我均使用了5.2mm高度的,实测可以正常安装。

https://img.yuanze.wang/posts/v3s-dev-board-hardware/core-with-screen.jpg
连接核心板与屏幕

https://img.yuanze.wang/posts/v3s-dev-board-hardware/assembled1.jpg
安装屏幕

https://img.yuanze.wang/posts/v3s-dev-board-hardware/assembled2.jpg
开发板侧面

为开发板制作系统镜像的方法,可以参考为V3s开发板制作系统镜像

https://img.yuanze.wang/posts/v3s-dev-board-hardware/boot-screen.jpg
成功启动的开发板

 核心板与底板PCB工程

 V2.1核心板PCB工程

第一版PCB

上文中提到的都是V2.0的PCB。虽然仍然还有一些小Bug,但足以满足开发使用。

在制作第一版硬件的时候,由于图省事,底板没有使用独立的电源电路,CH340TF卡等使用的3.3V电源均是从核心板中引出来的。虽然普通使用起来没有问题,但实际上TF卡,甚至是SDIO Wi-Fi,其热插入时的电流是相当大的,如果不设计独立的供电电路,会导致热插入TF卡时串口断线。

同时,第二版PCB在第一版的基础上加入了串口TxRx指示灯,并删除了核心板上的LED;核心板的供电也有所优化。

V3s芯片内置的RTC供电电压为2.8-3.3V,导致通过一个二极管的3V纽扣电池的电压无法达到RTC工作的最佳电压,且V3s内置的RTC在掉电时是按照32.0kHz的晶振频率计数的,若使用32.768kHz的外部晶振,在每次上电之后,都需要通过软件对时间进行修正。基于以上两点,我认为V3s内置的RTC不具有普遍的实用性,因此在第二版中加入了外置的DS3231来替代芯片内置的RTC

https://img.yuanze.wang/posts/v3s-dev-board-hardware/baseboard-v1.1.jpg
第一版PCB