工程名称:【FL PC】泰山派迷你主机
工程作者:flyn
前言
说出来你可能不信。
其实这个像“手办”一样的方块,是一个迷你主机。
主打一个超超超便携!
它还有带屏显的拓展版本,摇身一变,就是手机。
为什么要做这个主机?
本项目的初衷是想以“泰山派”开发板为核心打造一个PC主机,期望制作过程可以进行linux的趣味学习和开发。
然后,在打造过程中,又顺便设计了:
——2块扩展板,用于增加接口
——内置了 散热风扇、扬声器、咪头
——转接出 GPIO排座
虽然一开始,是跟着泰山派训练营活动边做边学,命令也是边翻文档边敲。但还是走通了嵌入式学习与开发的整个流程,完成了项目制作。可喜可贺~
01
迷你主机的参数/亮点?
1. 使用立创泰山派开发板设计
如果你已经有泰山派,DIY这个项目的总成本可以压缩到100多元!(该成本需节约液晶屏和外壳)
2. 便携,能轻松揣兜里!出差旅游都能带!整机尺寸为5.4X5.2X11.3(cm)
3. 扩展出M.2硬盘、千兆网口、USB等多种接口,可运行Ubuntu和Android系统。
4. CPU: RK3566,4核Cortex-A55,主频1.8GHz
5. GPU: ARM G52 2EE
6. 内存: 2GB LPDDR4
7. 存储: 16GB EMMC
8. 其他接口: TF卡座、MicroHDMI、2.4G wifi、蓝牙、USB2.0 * 1、Type-C * 1、debug串口 * 1
9. 拓展板 存储接口:M.2接口硬盘 (2242尺寸,SATA协议)
10. 拓展板 其他接口:3.5mm耳机接口、Typ-c口 * 1、USB2.0 * 3、千兆网口 * 1、Typec电源接口、GPIO扩展排座
11. 拓展板 显示屏:3.4寸 412x960 RGB 电容屏
12. 应用场景:PC主机、桌面摆件、智能家居中控、NAS存储
想制作一个这样的主机,如何硬件设计?如何将泰山派开发板的作用发挥出来?
02
硬件部分
本项目除去泰山派开发板外共有2块PCB板(如果要显示屏还要做一块转接板),我将其命名为EXP扩展板和IO扩展板。
顶部盖板
EXP拓展 - POWER
EXP拓展 - GMAC
EXP拓展 - POGO
EXP拓展 - HPJ
EXP拓展 - USB2.0
EXP拓展 - SSD
EXP拓展 - PCB
io扩展-原理图
io扩展-PCB图
lcd_adapt-原理图1
lcd_adapt-原理图2
lcd_adapt-PCB图
io_extend_hj
上下滚动查看所有电路设计图
01 EXP扩展板
该板主要通过FPC排线和弹簧顶针 (POGO PIN)从泰山派开发板上引出电源接口、网口、USB口、SATA接口、耳机接口 等。各接口如下所示:
(1)如何实现拓展接口功能?有什么设计注意事项?
USB扩展芯片使用SL2.0A,是一颗支持1转4的HUB芯片。
主要作用:将EXP接口中的USB3扩展出4个usb2.0口,方便外接 u盘、键盘、鼠标、usb摄像头(支持开发)。
设计注意事项:
①USB3原先是3.0接口,其部分引脚和sata1是共用的,不能同时使用,需在设备树里将其修改为2.0接口,只使用USB3_HOST1_DP和USB3_HOST1_DN两只引脚。
②主控的SATA1引出了M.2接口,可接入2242尺寸 SATA协议 的硬盘。测试时不要买成mSATA硬盘和NVME协议硬盘,前者尺寸大后者协议不对!
(2)主机如何通过网线连接上网?
GMAC的phy芯片采用瑞昱的RTL8211F,参考立创开发板官方出的扩展板设计即可。
02 IO扩展板
如何增加主机的可玩性呢?就看IO拓展板了!
首先,IO扩展板将泰山派开发板上的40PIN扩展口引出到侧面,通过PWM14引脚驱动散热风扇,并设计了DCDC电路用于风扇供电(5V转12V)。
其次,这块板接入了所有外扩IO,大家可灵活设计,比如你可以:
在板上加MP6050实现自动翻转屏幕
直接做个模块从背面排座插入
开源项目的特点和乐趣就在此!
03 LCD适配板
电容屏:HD34004C40
RGB接口驱动芯片:st7701s
触摸驱动:cst328
(1)没有在泰山派引出RGB接口,要怎么加电容触摸屏?
这块适配板的作用,就是将mipi接口转为RGB接口。
(2)具体怎么操作?
这款屏幕则需要通过spi引脚进行初始化。
而泰山派的mipi接口座只提供了背光、mipi引脚。
为了和IO扩展板独立开来,不使用其上面的IO,就给适配板上另外加了一颗smt32g030f6p6来对液晶屏进行初始化操作。
(3)焊接与烧录注意事项?
这块适配板是直接贴在液晶屏背面的,要注意:
排针仅用于烧入smt32固件,最好不要焊,用弹簧顶针插上烧固件;
背面用绝缘胶贴好,防止碰到液晶屏金属背板导致短路;
编码开关是用于兼容同样接口定义+不同驱动芯片的液晶屏,比如4寸RGB方屏、4寸RGB长条屏,此项目可以不用焊接;
该屏幕背光电流最大20mA,需将泰山派上的背光限流电阻R95和R96都改为22R!!!
03
软件部分
01 液晶适配板STM32驱动
这里的代码通过STM32CubeMX生成,基于Keil编写。
当stm32检测到复位信号后开始初始化液晶屏。
代码比较简单查看lcd_config.c就行,以下是lcd_config_task函数,在主函数中循环运行。
void lcd_config_task(void){ //static uint8_t status = kStatus_idle; static uint8_t status = kStatus_reset; static uint32_t tick; static lcd_t *lcd_select = NULL;
if (rst_key_is_pressed()) // 检测reset_key信号 { status = kStatus_reset; } switch (status) { case kStatus_reset: HAL_GPIO_WritePin(LCD_RST_GPIO_Port, LCD_RST_Pin, GPIO_PIN_RESET); tick = HAL_GetTick(); status = kStatus_config; break; case kStatus_config: lcd_select = read_lcd_selected(); // 读取lcd型号id
if (lcd_select) { if (HAL_GetTick() - tick > lcd_select->reset_time) { HAL_GPIO_WritePin(LCD_RST_GPIO_Port, LCD_RST_Pin, GPIO_PIN_SET); lcd_select->config(); // 配置lcd status = kStatus_idle; } } else { // 找不到对应lcd status = kStatus_idle; } break;
case kStatus_idle: default: break; }}
02
开发板Android系统
目前使用的是Android系统,基于泰山派官方资料里的SDK和Ubuntu18.04.6环境编译。官方sdk已基本适配,稍微修改下设备树即可,如果要带液晶屏需要添加触摸驱动。
PC主机可以通过泰山派开发板的hdmi接口连接到外接显示器,也可以加装3.4寸长条屏显示,通过修改tspi-rk3566-user-v10.dts切换。
虽然可以同时使用mipi和hdmi接口,但是RK3566只能异屏同显。也就是说在使用3.4寸屏时接hdmi显示出来的也是此分辨率的竖屏,使用体验上还不如二选一好。(下图来自泰山派开发板资料)
(2)USB3.0和SATA1不能同时使用,怎么破?
根据瑞芯微的文档说明,USB3.0和SATA1是不能同时使用的,但是我其实只用了USB中的dp和dn,引脚上与SATA是没有重叠的。
万能的吴工提出了把USB3.0改为2.0和SATA共用的建议,并且给出了设备树的修改方案。感谢吴工^ ^
&usbhost_dwc3 { phys = <&u2phy0_host>; phy-names = "usb2-phy"; maximum-speed = "high-speed"; status = "okay";};&combphy1_usq { rockchip,dis-u3otg1-port; status = "okay";};
&sata1 { rockchip,enable-ssc; status = "okay";};
(3)关于触摸驱动?
选用的3.4寸液晶屏使用的触摸芯片为cst328,我按照官方文档里的触摸讲解,重新写了个驱动。
如果你要把触摸驱动直接编译到内核中,请根据下方步骤操作:
①将驱动文件复制到kernel/dirvers/input/touchscreen目录下,修改touchscreen 目录下的Kconfig文件以及Makefile文件。
②调出menuconffig,找到CST328_Touchscreen使能后保存配置,进行内核编译。
③单独将kernel目录下的boot.img通过RKDevTool工具烧入即可。
source "drivers/input/touchscreen/hyn_cst328/Kconfig"obj-y += hyn_cst328/
04
组装说明
①物料清单
上下查看组装图解
全部0条评论
快来发表一下你的评论吧 !