制作全志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.2与Mini 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.8mm,Mini 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之后的板子的正面仍然可以刷锡膏用风枪焊接,焊接美观且工作量小。
核心板上有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提供的单声道功放。
V2.0底板中,虽然加入了功放电路,但是使能引脚的电平是反向的,这会导致插入耳机时功放被使能,拔出耳机时功放被关断。由于开学后空闲时间较少,暂时没有时间重新制作硬件。如果需要参考底板原理图,请自行修改这一部分。最后,将屏幕通过排线连接到底板,再通过4个铜柱与开发板固定,即完成了整个开发板的组装。
本开发板的核心板尺寸及Mini PCI-E插座尺寸均经过验证,核心板可以完美安装到底板上。若有同样希望使用Mini PCI-E方案来设计核心板的读者,可以放心使用本开发板的图纸进行二次开发。底板使用了兼容Molex的插座,该插座的图纸可以在下方下载,方便您确认使用的是否是同样的插座。该图纸是从贸泽电子网站下载得到。
图纸中的插座是配合自弹支架进行固定的。在实际焊接的开发板中,我并没有使用支架进行固定,而是使用焊接铜柱进行固定。铜柱和插座我均使用了5.2mm高度的,实测可以正常安装。
为开发板制作系统镜像的方法,可以参考为V3s开发板制作系统镜像
上文中提到的都是V2.0的PCB。虽然仍然还有一些小Bug,但足以满足开发使用。
在制作第一版硬件的时候,由于图省事,底板没有使用独立的电源电路,CH340与TF卡等使用的3.3V电源均是从核心板中引出来的。虽然普通使用起来没有问题,但实际上TF卡,甚至是SDIO Wi-Fi,其热插入时的电流是相当大的,如果不设计独立的供电电路,会导致热插入TF卡时串口断线。
同时,第二版PCB在第一版的基础上加入了串口Tx与Rx指示灯,并删除了核心板上的LED;核心板的供电也有所优化。
V3s芯片内置的RTC供电电压为2.8-3.3V,导致通过一个二极管的3V纽扣电池的电压无法达到RTC工作的最佳电压,且V3s内置的RTC在掉电时是按照32.0kHz的晶振频率计数的,若使用32.768kHz的外部晶振,在每次上电之后,都需要通过软件对时间进行修正。基于以上两点,我认为V3s内置的RTC不具有普遍的实用性,因此在第二版中加入了外置的DS3231来替代芯片内置的RTC。