发作品签到
专业版

基于D133的智能手机

工程标签

7.3k
0
0
56

简介

基于D133的手机开发板设计

简介:基于D133的手机开发板设计
星火计划2024

开源协议

GPL 3.0

创建时间:2024-06-27 09:45:23更新时间:2024-11-29 17:01:32

描述

1,简介

前段时间接触到D133单片机,然后买了块开发板学了下,鉴于D133支持mipi驱动屏幕,偶尔的机会又找到了有资料的手机屏(XH8379A)并且成功的驱动了起来,包括显示和触摸,于是一拍即合,决定手挫一个手机(开发板),这也是我设计过较为复杂的项目之一(涉及到原理图、PCB设计、外壳设计、面板设计、嵌入式开发等等)。

视频介绍:https://www.bilibili.com/video/BV1njBxYkErg/

 

2,硬件设计

2.1,主控(V1.0 2024.05.15)

控制器:D133CBS

主频:400MHz

闪存:16MB nor flash

RAM:1MB SRAM,8MB PSRAM

封装:QFN88-L10*10

启动方式:SD卡、NOR-NAND FLASH、USB-BOOT

D133使用24M无源晶振和32.768K低速晶振提供系统时钟源和计时器时钟源

D133需要提供3.3V和1.1V共2组电源输入,同时对外提供2.5V和1.8V两个LDO,电流为100mA

接着是复位电路和BOOT0按键

2.2,程序存储器

外接W25Q128提供16M外置FLASH供存储程序,使用SPI0(PB0~5),硬件上要求必须提供上拉电阻

2.3,内存卡接口

同样需要提供上拉电阻,SD卡座支持插入侦测脚,使用SDMC1(PC0~5),侦测脚PC6

2.4,显示触摸

屏幕接口:MIPI-DSI 2lines(PD18~21),硬件复位:PA5,不用阻抗、注意差分等长和尽量包地即可,CTP-LED为虚拟按键的背光电源。

如果需要控制虚拟按键背光还需要增加一个三极管或MOS,LCD_ID用于检测屏幕是否连接上,PWM_OUT是PWM输出脚,可以通过MIPI-DSI指令使这个管脚输出PWM,然后接到背光驱动电路上用来调节背光亮度,所以使用这个管脚可以节省一个PWM管脚

背光电路控制脚PE13,PWM2

触摸接口:IIC2(PA8~9),复位:PA10,中断:PA11,硬件必须上拉

2.5,USB接口

D133 USB IO保护电路

2.6,CSI摄像头

CSI摄像头,使用8bit并口采集图像(PE0~10),D133不支持MIPI-CSI,配置接口使用IIC0(PD0~1),复位脚:PA2,电源脚:PA3,MCLK脚:PE11

使用)V5640自动对焦摄像头模组,STROBE脚用于控制闪光灯,也可以当作手机的照明LED,需要使用IIC指令控制,所以为了减少IO口占用,控制照明需要打开摄像头,这就是为什么手机照明APP需要摄像头权限。

OV5640和2640电源稍有区别,但是估计问题也不大,需要两个2.8V和一个1.2V,只有带自动对焦功能的OV5640需要一个AF电源,单独给个2.8V即可

2.7,陀螺仪

V1.0版本陀螺仪使用MPU6050,使用IIC1(PD2~3),中断脚:PD4

2.8,环境光

V1.0版本环境光使用LTR-553ALS-01,和陀螺仪共用使用IIC1(PD2~3),中断脚:PB6

2.9,音频(数字)功放

音频电路使用数字音频DSPK1,PE12,使用单与门隔离数字信号,使用带通滤波电路过滤330~3.3KHz的音频信号,使用AB类功放LM4871放大模拟信号接到喇叭

2.10,锂电池充电电路

使用1.25-2PWB接口连接2500mAh聚合物锂电池

电压采集电路,使用2个10K分压,串1K电阻保护IO口

锂电池充电电路,使用TP4056,最高支持1200mA,设定为800mA

还有一块更大的华为电池,然而大小都赶上屏幕了,几乎是塞不下,PCB只能断成两截用FPC连,担心强度可能不够所以放弃

2.11,V1样板

第一版硬件大概就是这样,严格按照规格书设计PCB尺寸,鉴于比较复杂就用了4层设计,但是尺寸超过了10CM,所以第一版使用了2片PCB来整合(保证10CM以内可以用券),因此电源和USB等信号需要用焊盘对接

顶板

底板

先测试一下尺寸,很好,就这么打板子了

第一版焊接,第一步焊接电源系统,板子到了焊接的时候又看了下手册,2.5和1.8是对外输出的LDO,所以设计了4路dcdc的电源属实是多余了,然后电源层还是走的中间层,还好没把孔放在焊盘上,简单划断2处连线就解决了电源问题,测试结果电源正常。

测试D133下载运行,可以正常工作,但不显示

最终发现MIPI的CLK差分对接错了,所以白给6根6mil最小间距的走线飞22R电阻了,因为官方参考电路用的LVDS屏,所以CLK差分对和MIPI不太一样,V2版本修复了这个问题,确实是疏忽,以为差分接口的时钟是同一对

最终飞线修改了CLK差分对,点亮了屏幕

还在验证摄像头的时候,板子莫名其妙冒烟了,但是屏幕没烧坏,只是接在我这块板子上不亮了,但是D133又还能正常工作,背光也能正常点亮,就很离谱

最终发现摄像头的IIC没接上拉电阻,先是给IIC的SDA接上了上拉电阻(确实不太好焊电阻),但是依旧读不到ID,是在没招而是不是我焊接问题,就抱着试试看的心情给IIC的SCL也焊上了上拉电阻,欸,还真就可以了,反正屏幕不显示就不显示吧,基本上都验证的差不多了,改版再说,毕竟第一版连按键都没

2.12,V2版本硬件更新(2024.06.21)

V2增加了一些更符合手机的功能,同时也变得更加复杂化,但仍不是最终版本,因为目标是既要精简又要多功能,还要美观。

1,重新设计了电源系统

电源拓扑十分复杂:

1,USB通过充电芯片给锂电池充电

2,电池给系统供电,不与USB供电冲突

3,USB给系统供电,不与电池供电冲突

4,电池通过升压对外提供5V输出到USB,不与充电功能冲突

5,无线充电功能

为了解决以上需求,可以使用二极管防止电源冲突,但是会拉低电压,并且小封装二极管(为了手机主板体积)不能大电流工作,于是决定使用PMOS来分别控制各个电源的电流方向。

这时又有两个方法,第一用逻辑门根据电压的有无情况切换电流方向,例如有锂电池时打开锂电池供电,有USB时打开USB供电,有锂电池且有USB时打开锂电池供电,关闭USB供电,打开USB充电,为了再加上5V升压输出和无线充电功能,又要单独考虑不同的电源情况。另一种方法就是用MCU来控制各处的MOS。

这里我用了第二种方法,使用一片CH573用作系统电源流向控制、蓝牙外设等等功能,同时由于电源供给交给了CH573控制,因此可以彻底断电D133整个系统以更好的做低功耗,延长手机续航。

2,重新设计了调试系统

手机只有一个USB口,但是D133有USB接口用来下载固件和作为设备端,还有串口用来输出log,CH573也需要USB口来更新固件,同样也需要log串口,所以为了一口解决调试问题,给手机板放了一个集线器,正常情况下是手机USB口作为HUB输入口,分出4个USB分别连接D133的USB、USB串口芯片、CH571的USB和串口,特殊情况下通过USB切换开关将USB口直连D133作为OTG功能。

 

还需要注意的是手机作为从机需要下拉CC脚触发主机供电,而作为主机需要检测CC脚电平,因此严格来说还需要CC检测和控制电路

3,增加了震动马达

4,其他

红外发射电路

虚拟按键独立背光

5V升压DCDC

5,PCB效果

3维预览效果

6.焊接情况(24.07.05更新)

焊接图

电池

2.13,V3版本改进(24.07.13)

使用1mmPCB+锅仔片按键做侧按键(沉板焊接),减少侧边体积占用

顺便把按键模型设计在了一起,按键板也做在一起了

手机屏有前开窗透明孔,所以可以加前摄像头,于是再加一个前置摄像头接口

//

设计了2个喇叭接口,可以从耳机孔(做了衰减)或正常外放喇叭播放音频

//

微调SD卡操位置,使SD卡插入时突出不那么明显

3,外壳设计

外壳设计使用soildworks2022,用3D打印,分为以下几部分

3.1,手机中框

下侧:USB-TYPE-C口

左侧:SD卡槽

右侧:电源、音量按键

顶侧:红外孔

顶侧

PCB零件配合

优化过的中框版本(缓解显卡压力,去掉了大部分阻容模型)

第一版中框结构验证

3.2,手机按键

侧按键

通过M1.2螺丝固定到外框上

改版按键,首版按键较厚占用过多侧向空间,所以采用新版按键,同时配上锅仔片按键,有助于减少空间占用,侧按键增加标识浮雕

 

为了减少打印件数量及简化安装和侧边厚度占用,采用了锅仔片按键,配合1mm厚的PCB,仅需要占用1.2mm的宽度+0.2mm的按键行程,一体按键

 

3.3,背板

使用亚克力激光切割外形,扣除比较高的元件空间,类似CNC

4,安装步骤

4.1,手机屏排线整理

首先需要用高温胶带固定手机的触屏排线,便于安装到PCB上

4.2,按键安装(按键优化中)

安装按键到手机中框的按键孔中,由于结构整体对称所以需要注意按键的方向,“+”在上,“-”在下,以及电源按键的方向

4.3,PCB安装

先放PCB的USB口,对齐手机中框的USB开孔,左上角注意触摸PFC的元件位置,安装4颗M1.2螺丝固定PCB

4.4,电池,SD卡安装

将锂电池按照PCB空挡位置安装,接上插头,从正面左侧装上SD卡

4.5,手机后盖安装

安装手机后面板,对齐后置摄像头挖孔,从下侧螺丝孔安装M1.2螺丝固定后盖

5,程序开发

5.1,开发环境(VSCODE)

D133基于VSCODE编译,使用AiBurn通过USB接口连接电脑下载镜像(固件)。

5.2,驱动移植

1,显示驱动移植:

新建xh8379a驱动,路径:bsp/artinchip/drv/display/panel

按厂家提供的初始化序列及屏参数,参数对应到显示面板结构体中。

 

屏幕初始化序列

2,触摸驱动移植

新建ft6306驱动,按照rtt驱动框架适配读写接口,IIC地址:0x38,即0x70右移1位

3,虚拟按键

屏幕下方虚拟按键隶属于触摸屏,手指按住虚拟按键时也会触发中断,固定上报一个坐标,这个坐标超出屏幕高度,所以需要特殊处理为按键信息

然后通过输入结构体的键值传递给UI

5.3,程序架构

程序使用luban-lite-SDK,使用RTT嵌入式操作系统编写。界面采用极为炫酷的lvgl编写。

日常APP图标

1,系统启动UI

添加了过渡动画和透明度渐变

2,锁屏UI

输入密码正确自动跳转到桌面,目前密码是写死的,按键非矩阵按键控件,可以方便贴图更换按钮样式和解决symbol显示异常问题

新增了从SD卡显示的背景图,缩放数字按键比例,更好看一点

3,系统桌面UI(正在拼命写ing...)24.09.05更新

验证独立矩阵布局

测试多语言及动态切换背景图片,顶部菜单、电池点亮等

下拉菜单。

4,应用APP

官方有几个UI做的还是不错的,可以直接拿过来运行,但是分辨率适配的不适合竖屏,还需要做调整或者重新布局。

仪表盘,咖啡机,压力测试

控件,gif演示,键盘输入

自定义列表,自定义表格

音乐播放器,视频播放器

相机(摄像头),也需要调整分辨率,显示位置等参数,官方暂时只有ov5640的驱动

5.4,CH571蓝牙开发(环境:MournRiver)

蓝牙串口交互例程增加D133系统电源控制相关引脚初始化

TMOS自己的task任务增加电源状态查询及控制

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
11月25日.mp4
76
2
机械结构件.zip
44
3
CH571_D133CBS.zip
27
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航