文档更新说明
免责声明
本文档虽力求准确,但可能存在错误或遗漏,用户需谨慎评估适用性;我们保留随时修订的权利,且不保证旧版本内容的有效性,为了得到最新版本的产品信息,请定时访问立创开发板官网进行资料的更新下载。本文档版权及最终解释权归深圳嘉立创科技集团股份有限公司所有。请务必注意以上声明,自行评估风险并决策,我们对使用本文档产生的任何问题概不负责。感谢您的包容与支持。
前言
标准的Android11系统相信大家都不陌生所以这里只针对泰山派上硬件相关部分进行讲解,帮助大家快速熟悉板载上的资源以及了解开发使用方法与开发板注意事项,这部分内容非常重要关乎着您的泰山派是否能够正常工作。
准备工作
开始前你需要做一些准备工作,以确保后续内容的顺利进行,我把它们罗列如下:
- 需要一台win10电脑,其他系统理论上也可以但是我没测试,这里以我电脑为例,后续所有的环境以及开发编译如果不做特殊说明默认都是基于此配置电脑进行
- 电脑需安装ADB、串口调试工具
- 泰山派需烧录对应的Android系统固件
- 逻辑分析仪,万用表(非必须,IO部分用到)
硬件资源说明
注意事项
- 使用符合开发板要求的正确电源适配器,确保电压和电流规格匹配。例如:使用电脑的USB驱动供电时,电流有限,如果连接了屏幕等设备,可能会导致电流不足无法开机问题。
- 在插拔连接器时,请先断开电源,避免带电操作。
- 当手拿泰山派或任何没有外壳的电路板时,尽量抓住板边,以降低静电损坏器件的风险。养成良好的习惯很重要。
- 在插入或拔出连接器时要小心,确保正确对准插口,并轻柔地插入或拔出,以避免损坏连接器或开发板接口。特别是GH1.25座子带锁的插口需要按下卡扣才能拔出,不要用拉线的暴力拔插方式。
- MicroHDMI口与配送的转接板都是非常脆弱的,千万不要暴力以免焊盘连根拔起。
- 在高负载情况下,rk3566芯片会产生明显的温度升高,请确保通风良好,避免过热。如有必要,可以使用散热器或风扇来降低温度。
- 泰山派的包装盒是铁盒,虽然里面有一层海绵,但仍存在导电的可能性,因此千万不要将电路板放在盒子中上电。
- 祝您在开发工作中取得成功!如有其他问题,请随时咨询。
ADB调试工具
《立创泰山派开发板资料\第03章.【立创·泰山派】文档手册\【工具】ADB安装与使用.md》
终端工具
《立创泰山派开发板资料\第03章.【立创·泰山派】文档手册\【工具】调试工具使用.md》
系统测试
镜像烧录
上电测试
供电方式
泰山派有两种供电方式分别是通过typec供电与外接电源座供电,注意:虽然我们有保护电路,如果使用typec接电脑的情况下不建议再接外接电源座共同供电,避免意外造成电脑损伤,后果需自行承担。
typec口供电
- 电源适配器:泰山派通常通过typec接口进行供电。推荐供电要求为5V、2.5A的电源保证设备正常运行。
- 电脑供电:泰山派的typec同时具备供电与usb接口功能,例如我们下载代码,adb调试等都是通过此usb进行的,但电脑usb口普遍驱动能力就500mA左右,开发板资源打开多了很容易造成供电不足,如果出现一直自动无法进入系统情况,可以使用电源适配器供电试试。注意如果是需要驱动EDP屏幕则需通过需通过GH1.25电源座+电源小板供电。
外接电源供电
- 外接供电我们通过GH1.25 2P座子与2.54排针引出,连接时需要注意GH1.25或2.54焊盘硬件正负极切勿接反
- 适配器要求:电压:12V ,电流:2A
- 注意:我们的EDP屏幕背光电源是直接来源于GH1.25座,我们提供的edp屏幕背光电压支持范围是7V~21V,同时我们泰山派外接电源转5V的电路是支持5V~18V输入的,所以综合上考虑我们选择了12V进行供电,如果大家使用自己采购的EDP屏幕需按照厂商供电要求就行调整,确保范围在5V~18V与EDP电压范围之内即可。
进入系统
如果硬件正常,给开发板供电上边电源指示灯会亮起,接着USB旁边工作指示灯也会颜色交替闪烁
屏幕会显示立创开发板logo接着开发板正常进入系统
调试连接
我们常用的调试方式有两种方式分别是串口调试与ADB调试,当然adb中我们还可以通过网络进行调试,我们这里只介绍usb这种方式。如果还没安装串口调试终端与ADB请参考下面两篇文章进行安装。
串口终端
- 串口调试前你需要准备一个USB TO TTL工具,比如CH340等。
- rk3566的调试端口UART2_RX_M0与UART2_TX_M0通过GH1.25 4PIN座子与2.54焊盘引出,接线是只需接TX,RX,GND三根线即可,需注意泰山派TX对工具RX,泰山派RX对工具TX。
- 泰山派的调试串口波特率为1500000,8位数据位,1位停止位,无校验位。
- 链接成功狂敲回车,当然你也可以在里面运行linux相关命令。
ADB调试
- Typec插入电脑并确保泰山派正常进入系统
- android系统中打开adb调试(默认打开)可通过下拉下拉菜单栏中看到ADB连接提示消息,并在电脑设备管理器中确保能找到ADB设备。
DDR查看
- 获取内存信息
rk3566_tspi:/ # free -m #以MB为单位
total used free shared buffers
Mem: 1956 1709 247 6 3
-/+ buffers/cache: 1705 251
Swap: 978 0 978
2
3
4
5
当然也可以使用下面命令看更详细信息
rk3566_r:/ # cat /proc/meminfo
MemTotal: 2004112 kB #总内存的大小为2004112 kB。
MemFree: 326532 kB #系统当前可用的空闲内存大小为326532 kB。
MemAvailable: 1112884 kB #系统当前可用的内存大小为1112884 kB。这包括空闲内存和缓存的内存。
Buffers: 4516 kB
Cached: 884012 kB
SwapCached: 0 kB
Active: 593564 kB
Inactive: 622328 kB
Active(anon): 426744 kB
Inactive(anon): 3324 kB
Active(file): 166820 kB
Inactive(file): 619004 kB
Unevictable: 99624 kB
Mlocked: 99624 kB
SwapTotal: 1002052 kB
SwapFree: 1002052 kB
Dirty: 68 kB
Writeback: 0 kB
AnonPages: 427020 kB
Mapped: 497064 kB
Shmem: 3796 kB
KReclaimable: 96900 kB
Slab: 112960 kB
SReclaimable: 47268 kB
SUnreclaim: 65692 kB
KernelStack: 15888 kB
PageTables: 38256 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2004108 kB
Committed_AS: 38875636 kB
VmallocTotal: 263061440 kB
VmallocUsed: 29748 kB
VmallocChunk: 0 kB
Percpu: 2544 kB
CmaTotal: 8192 kB
CmaAllocated: 2984 kB
CmaReleased: 5208 kB
CmaFree: 0 kB
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
还有下面命令就非常详细了,这个命令一般是用来排查内存问题的
rk3566_tspi:/ # dumpsys meminfo
- 查看ddr频率
rk3566_tspi:/ # cat /sys/class/devfreq/dmc/cur_freq
324000000
2
EMMC查看
- 系统存储显示
- 查看存储空间
rk3566_tspi:/# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 978M 816K 977M 1% /dev
tmpfs 978M 0 978M 0% /mnt
/dev/block/mmcblk2p11 11M 144K 11M 2% /metadata
/dev/block/dm-0 934M 931M 2.8M 100% /
/dev/block/dm-5 676M 96K 676M 1% /mnt/scratch
overlay 676M 96K 676M 1% /system
overlay 676M 96K 676M 1% /vendor
overlay 676M 96K 676M 1% /odm
overlay 676M 96K 676M 1% /product
overlay 676M 96K 676M 1% /system_ext
tmpfs 978M 0 978M 0% /apex
tmpfs 978M 264K 978M 1% /linkerconfig
/dev/block/mmcblk2p10 356M 712K 355M 1% /cache
/dev/block/dm-6 3.0G 952M 2.1G 31% /data
tmpfs 978M 0 978M 0% /data_mirror
/dev/fuse 3.0G 952M 2.1G 31% /mnt/user/0/emulated
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CPU查看
- 查看cpu频率
rk3566_tspi:/ # cat /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq
1608000
1608000
1608000
1608000
2
3
4
5
- 查看CPU温度 先找到cpu温度对应节点,然后在cat它
rk3566_r:/ # cat /sys/class/thermal/thermal_zone0/type
soc-thermal #对应cpu温度
rk3566_r:/ # cat /sys/class/thermal/thermal_zone1/type
gpu-thermal #对应gpu温度
rk3566_r:/ # cat /sys/class/thermal/thermal_zone2/type
test_battery #对应电池温度
2
3
4
5
6
查看cpu温度,这里的值单位是毫摄氏度,如果需要转成摄氏度需要除以1000即41.875摄氏度
rk3566_tspi:/ # cat /sys/class/thermal/thermal_zone0/temp
41875
2
NPU查看
- 查看npu温度,这里的值单位是毫摄氏度,如果需要转成摄氏度需要除以1000即40摄氏度
rk3566_tspi:/ # cat /sys/class/thermal/thermal_zone1/temp
40000
2
点灯
- 泰山派开发板上有一颗RGB三色灯,在板载右下方,开发板上电一会后开始闪烁,表示系统已经正常运行。
- 原理图中引脚连接,详细可以跳转到我们硬件开源工程,原理图与PCB都已开源
- 通过adb执行命令来控制这三颗灯,先看一下三个灯的节点其中rgb-led-b对应蓝灯,rgb-led-g对应绿灯,rgb-led-r对应红灯
rk3566_tspi:/ # ls /sys/class/leds/
mmc2:: rgb-led-b rgb-led-g rgb-led-r
2
- 进入rgb-led-x可查看相关属性,这里以rgb-led-b为例其他相同
rk3566_tspi:/ # ls /sys/class/leds/rgb-led-b
brightness device invert max_brightness power subsystem trigger uevent
2
brightness
: 这个属性用于控制 LED 的亮度。可以通过读写该文件来设置 LED 的亮度水平。device
: 这个属性表示与 LED 相关的设备路径。invert
: 这个属性表示 LED 的极性翻转。当该值为 0 时,LED 的行为符合正常的预期。当该值为 1 时,LED 的行为与预期相反。max_brightness
: 这个属性表示 LED 可接受的最大亮度值。亮度值在 0 到 max_brightness 之间。power
: 这个属性表示 LED 的电源状态。它可以是 “on” 表示开启,或者 “off” 表示关闭。subsystem
: 这个属性表示该 LED 设备所属的子系统。trigger
: 这个属性表示 LED 的触发器。它定义了 LED 的行为模式,如闪烁、呼吸灯等。你可以通过写入不同的触发器名称来改变 LED 的行为。我这里列出一些常用触发方式:none
: 禁用触发器,LED 保持灭。default-on
: 默认开启触发器,LED 在开机时保持常亮。heartbeat
: 心跳触发器,LED 呼吸灯效果,类似于心跳的闪烁。timer
: 计时器触发器,LED 在特定时间间隔内闪烁。
uevent
: 这个属性包含有关 LED 设备的事件信息。当然你也可以通过cat trigger来查看他支持哪些模式
130|rk3566_tspi:/ # cat /sys/class/leds/rgb-led-b/trigger
[none] rfkill-any rfkill-none test_ac-online test_battery-charging-or-full test_battery-charging test_battery-full test_bat
tery-charging-blink-full-solid test_usb-online mmc0 mmc1 mmc2 timer heartbeat backlight default-on rfkill0 rfkill1 rfkill2
2
3
none
: 禁用触发器,LED 保持灭。rfkill-any
: 在任何 RFKill 状态变化时触发,例如 Wi-Fi 或蓝牙开关状态改变。rfkill-none
: 在 RFKill 禁用状态下触发。test_ac-online
: 在电源适配器插入时触发。test_battery-charging-or-full
: 在电池充电或达到充满状态时触发。test_battery-charging
: 在电池充电时触发。test_battery-full
: 在电池达到充满状态时触发。test_battery-charging-blink-full-solid
: 在电池充电时闪烁直到充满,然后保持常亮。test_usb-online
: 在 USB 设备插入时触发。mmc0
,mmc1
,mmc2
: 在对应的 MMC 设备操作时触发。timer
: 根据设定的时间间隔触发。[heartbeat]
: 心跳触发器,LED 呼吸灯效果。backlight
: 背光触发器,通常用于控制显示屏的背光 LED。default-on
: 默认开启触发器,在开机时保持常亮。rfkill0
,rfkill1
,rfkill2
: 在对应的 RFKill 设备状态变化时触发。关闭所有灯
# 关闭蓝灯
rk3566_tspi:/ # echo "none" > /sys/class/leds/rgb-led-b/trigger
# 关闭绿灯
rk3566_tspi:/ # echo "none" > /sys/class/leds/rgb-led-g/trigger
# 关闭红灯
rk3566_tspi:/ # echo "none" > /sys/class/leds/rgb-led-r/trigger
2
3
4
5
6
- 所有灯常亮
# 常亮蓝灯
rk3566_tspi:/ # echo "default-on" > /sys/class/leds/rgb-led-b/trigger
# 常亮绿灯
rk3566_tspi:/ # echo "default-on" > /sys/class/leds/rgb-led-g/trigger
# 常亮红灯
rk3566_tspi:/ # echo "default-on" > /sys/class/leds/rgb-led-r/trigger
2
3
4
5
6
- 心跳
# 心跳蓝灯
rk3566_tspi:/ # echo "heartbeat" > /sys/class/leds/rgb-led-b/trigger
# 心跳绿灯
rk3566_tspi:/ # echo "heartbeat" > /sys/class/leds/rgb-led-g/trigger
# 心跳红灯
rk3566_tspi:/ # echo "heartbeat" > /sys/class/leds/rgb-led-r/trigger
2
3
4
5
6
- 定时闪烁
# 定时闪烁蓝灯
rk3566_tspi:/ # echo "timer" > /sys/class/leds/rgb-led-b/trigger
# 定时闪烁绿灯
rk3566_tspi:/ # echo "timer" > /sys/class/leds/rgb-led-g/trigger
# 定时闪烁红灯
rk3566_tspi:/ # echo "timer" > /sys/class/leds/rgb-led-r/trigger
2
3
4
5
6
感兴趣的自己可以动手试试,比如rfkill-an会在你关闭蓝牙时候被点亮等等。
按键
- 开发板上提供了三个按键,关于这三个按键原理图引脚连接,可跳转到我们硬件开源工程查看。
- PWR为电源按键
- RST为复位按键全称RESET,按下后系统通过硬件复位,重启开发板,如果按住REC不松口,然后按下复位就能进入到Loader烧写模式。
- REC为升级按键全称RECOVER,RECOVER接入到SARADC_VIN0检测口,支持10位分辨率,可以通过RECOVER 按键,进入Loader 烧写模式
USB HOST
- 泰山派开发板上带有一个USB2.0 HOST接口,可以用于接入,usbhub、鼠标、键盘、U盘等usb从设备。
- 原理图引脚连接,详细可跳转到我们硬件开源工程查看。
- USBHOST接入鼠标测试
- USBHOST接入U盘测试
- usb摄像头测试
WIFI&蓝牙
- 泰山派开发板板载了WIFI+蓝牙二合一模块,这里默认贴的是AP6212
- AP6212模块简介:
- 链接与数据手册:https://item.szlcsc.com/2941698.html
- 802.11b/g/n 单频段无线电
- 集成了 Bluetooth V4.1 的类 1.5 功放和低功耗 (BLE) 支持
- 支持同时运行 Bluetooth 和 WLAN
- 单天线支持同时接收 BT/WLAN 信号
- WLAN 主机接口选项:SDIO v2.0—可达到 50 MHz 的时钟频率
- BT 主机数字接口:UART (最高支持 4 Mbps)
- 内置 IEEE 协同技术
- ECI —增强的协同支持,能够协调 BT SCO 传输以避免与 WLAN 接收冲突
- 开发板硬件原理图,详情查看开源工程,具体分析在后续驱动教程中展开。
- SDMMC1接口对应到模块WIFI功能
- UART1接口对应到模块功能蓝牙
- I2S2接口对应到蓝牙的语言功能,比如连接蓝牙耳机播放音乐
WIFI
- 使用wifi前需要扣上天线,如果接了扩展板情况下需断开4G模块与网线,确保测试数据的准确性。
- WIFI连接测试,连接成功后可以通过浏览器等进行上网操作,当然也可以下载测试软件进行测试。
- WIFI热点测试
蓝牙
- 使用蓝牙前需要扣上天线。如果需要测试蓝牙音频功能,在接有扩展板情况下需确保耳机没有插入。
- 蓝牙连接测试,这里我以连接蓝牙音响为例,当然大家也可以用蓝牙来传输图片控制其他设备等等,和标准手机蓝牙操作无二。
HDMI屏幕
- 泰山派开发板板载了Micro HDMI接口,可用于连接HDMI显示屏。
- 为了美观以及充分利用空间,泰山派使用的是Micro HDMI接口,如果你的显示屏使用的是标准HDMI线则需要用一个Micro HDMi转HDMI的座子,当然你也可以换一跟Micro HDMI的线。
- 泰山派出厂默认固件是支持HDMI输出,如果你烧录过其他固件的话,测试前需烧录支持HDMI输出固件。
- 如果你的HDMI接入正常,开发板上电就能成功看到logo并进入android系统。
- HDMI是可以自动获取屏幕分辨率的最高支持4K60HZ,固定分辨率输出在后续驱动教程中在进行讲解,当然HDMI也支持热拔插。
- HDMI信号中已经包含了音频信号,如果你的显示器带有喇叭的话就能听到音频输出。
- 系统中HDMI设置分辨率,以及调节屏幕缩放,有时候屏幕可能出现没有满屏情况或者超出去了,这时可以轻微调节。
- 使用adb查看HDMI状态,Connector: HDMI-A-1表示HDMI正常,如果cat没有发现HDMI说明HDMI外设接入失败,问题可能出现在驱动,屏幕连接等,烧入固件不对等。
rk3566_tspi:/ # cat /d/dri/0/summary
Video Port0: ACTIVE
Connector: HDMI-A-1
bus_format[100a]: RGB888_1X24
overlay_mode[0] output_mode[f] color_space[0]
Display mode: 1920x1080p60
clk[148500] real_clk[148500] type[48] flag[5]
H: 1920 2008 2052 2200
V: 1080 1084 1089 1125
Esmart0-win0: ACTIVE
win_id: 3
format: AB24 little-endian (0x34324241) SDR[0] color_space[0] glb_alpha[0xff]
rotate: xmirror: 0 ymirror: 0 rotate_90: 0 rotate_270: 0
csc: y2r[0] r2y[0] csc mode[0]
zpos: 1
src: pos[0, 0] rect[1920 x 48]
dst: pos[0, 0] rect[1920 x 48]
buf[0]: addr: 0x000000000168a000 pitch: 7680 offset: 0
Esmart0-win1: ACTIVE
win_id: 3
format: AB24 little-endian (0x34324241) SDR[0] color_space[0] glb_alpha[0xff]
rotate: xmirror: 0 ymirror: 0 rotate_90: 0 rotate_270: 0
csc: y2r[0] r2y[0] csc mode[0]
zpos: 1
src: pos[0, 0] rect[1920 x 96]
dst: pos[0, 984] rect[1920 x 96]
buf[0]: addr: 0x000000000539e000 pitch: 7680 offset: 0
Cluster0-win0: ACTIVE
win_id: 4
format: AB24 little-endian (0x34324241)[AFBC] SDR[0] color_space[0] glb_alpha[0xff]
rotate: xmirror: 0 ymirror: 0 rotate_90: 0 rotate_270: 0
csc: y2r[0] r2y[0] csc mode[0]
zpos: 0
src: pos[0, 0] rect[1920 x 1080]
dst: pos[0, 0] rect[1920 x 1080]
buf[0]: addr: 0x0000000004a78000 pitch: 7680 offset: 0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
EDP屏幕
泰山派开发板板载了EDP接口,位于板载顶部位置,通过30PIN 0.5间距下接FPC引出,可用于连接EDP显示屏。现大多数笔记本电脑都是用的这种接口。
硬件连接:
- 下列图为我们edp屏幕引脚定义(详细看开源工程),这种30PIN引脚定义在行业里算是比较通用的,也就是说你掌握泰山派开发(调屏参)以后,可以根据此引脚定义直接在淘宝或者闲鱼上买到你自己钟意的屏幕回来点亮,当然你也可以联系到我们进行调试,前期大家可以基于我们验证好的屏幕进行测试。
- 原理图中26、27、28、29为背光引脚,接入到VCC12V_DCIN中,所以想要点EDP需要外加电源。还需注意因我们的EDP屏幕背光电源是直接来源于GH1.25座,我们提供的edp屏幕背光电压支持范围是7V~21V,同时我们泰山派外加电源转5V的电路也是支持5V~18V输入的所以综合上述考虑我们选择了12V进行供电,如果大家使用自己采购的EDP屏幕需按照厂商供电要求就行调整,当心烧屏。
- 实物连接方式这里以我们提供的屏幕为例,其他屏幕自行确定线序,先翻开FPC把排线金手指面朝下因为我们FPC是下接的,接着插入明显有顶到的感觉扣下FPC盖即可,如下图所示。
15.6寸1920*1080屏幕
屏幕链接:item.taobao.com
注意此屏幕我们也只是买来调通,不对此屏幕进行相关售后问题。
屏幕测试前需要烧录15.6寸屏幕固件,固件位置:
固件下载
📌 在 下载中心
->百度网盘
->第06章.【立创·泰山派】系统镜像
->【镜像】Android
->hdmi_edp1920X1080_20230912_update.img
- 接入屏幕后,使用12V外接供电就能正常点亮屏幕,如下图。
- 使用adb查看edp屏幕状态
rk3566_tspi:/ # cat /d/dri/0/summary
Video Port1: ACTIVE
Connector: eDP-1
bus_format[100a]: RGB888_1X24
overlay_mode[0] output_mode[f] color_space[0]
Display mode: 1920x1080p66
clk[150000] real_clk[150000] type[48] flag[a]
H: 1920 2070 2075 2080
V: 1080 1083 1084 1093
Cluster0-win0: ACTIVE
win_id: 4
format: XB24 little-endian (0x34324258)[AFBC] SDR[0] color_space[0] glb_alpha[0xff]
rotate: xmirror: 0 ymirror: 0 rotate_90: 0 rotate_270: 0
csc: y2r[0] r2y[0] csc mode[0]
zpos: 0
src: pos[58, 313] rect[1164 x 654]
dst: pos[0, 0] rect[1920 x 1080]
buf[0]: addr: 0x0000000001001000 pitch: 5120 offset: 0
Cluster0-win1: ACTIVE
win_id: 5
format: AB24 little-endian (0x34324241)[AFBC] SDR[0] color_space[0] glb_alpha[0xff]
rotate: xmirror: 0 ymirror: 0 rotate_90: 0 rotate_270: 0
csc: y2r[0] r2y[0] csc mode[0]
zpos: 1
src: pos[0, 0] rect[1920 x 1080]
dst: pos[0, 0] rect[1920 x 1080]
buf[0]: addr: 0x00000000007e9000 pitch: 7680 offset: 0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
- 使用ADB命令设置背光echo "0-255" > /sys/class/backlight/backlight/brightness
rk3566_tspi:/ # echo "16" > /sys/class/backlight/backlight/brightness
- 系统背光测试和android手机一样使用不在赘述
MIPI屏幕
泰山派开发板板载了mipi dsi显示接口,位于板载背部位置,通过31PIN 0.3间距下接FPC接口引出,可用于连接MIPI显示屏。现大多数手机平板灯都是用的这种接口。
硬件连接:
- 下列图为我们mipi屏幕引脚定义(详细看开源工程),这种31PIN引脚定义在行业里算是比较通用的,也就是说你掌握泰山派开发(调屏参)以后,可以根据此引脚定义直接在淘宝或者闲鱼上买到你自己钟意的屏幕回来点亮,当然你也可以联系到我们进行调试,前期大家可以基于我们验证好的屏幕进行测试。
- 实物连接方式这里以我们提供的屏幕为例,其他屏幕自行确定线序,先翻开FPC把排线金手指面朝下因为我们FPC是下接的,接着插入明显有顶到的感觉扣下FPC盖即可,如下图所示。
10.1寸800*1280屏幕
- 屏幕测试前需要烧录8寸屏幕固件,固件位置:
第06章.【立创·泰山派】系统镜像\【镜像】Android\立创10.1寸31PIN MIPI屏幕总成镜像\LCKFB-TSPI-10.1inch-MIPI-TP_20241024.img
- 接入屏幕后,供电就能正常点亮屏幕,如下图。注意:如果供电不足可能无法进入系统,出现一直循环亮屏现象。
- 系统背光测试和android手机一样使用这就啰嗦啦哈
- 使用adb查看mipi屏幕状态
rk3566_tspi:/ # cat /d/dri/0/summary
Video Port1: ACTIVE
Connector: DSI-1
bus_format[100a]: RGB888_1X24
overlay_mode[0] output_mode[0] color_space[0]
Display mode: 800x1280p59
clk[66000] real_clk[66000] type[48] flag[a]
H: 800 818 830 848
V: 1280 1304 1308 1320
Cluster0-win0: ACTIVE
win_id: 4
format: AB24 little-endian (0x34324241)[AFBC] SDR[0] color_space[0] glb_alpha[0xff]
rotate: xmirror: 0 ymirror: 0 rotate_90: 0 rotate_270: 0
csc: y2r[0] r2y[0] csc mode[0]
zpos: 0
src: pos[0, 0] rect[800 x 1280]
dst: pos[0, 0] rect[800 x 1280]
buf[0]: addr: 0x00000000003e8000 pitch: 3200 offset: 0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- 使用ADB命令设置背光echo "0-255" > /sys/class/backlight/backlight/brightness
rk3566_tspi:/ # echo "16" > /sys/class/backlight/backlight/brightness
双屏同显示
HDMI与EDP同显
HDMI与MIPI同显
EDP与MIPI同显
U盘/TF卡更新屏参
泰山派开发板可以支持三种屏幕接口分别是HDMI、EDP、MIPI,除了HDMI其他的是需要配置屏幕参数的,不然无法点亮或者点亮以后有各种花屏、分裂、闪屏、波纹等问题,所以基本上每一个厂家的屏幕我们都需要在代码中去配置他对于的屏参,为了适配一个屏幕大家需要编译先全编译整个Android SDK源码,然后在内核里调试屏幕参数、每次都需要编译以后再下载,这个过程非常麻烦。所以我们这里提供了一种更佳方便的调试屏幕方式,通过U盘或者TF卡修改屏幕参文件,把U盘或者TF卡插入开发板以后自动重启更新屏幕参数。
使用方法
- 下载U盘/TF卡更新屏参固件
- 把屏幕参数文件放到U盘或者TF卡内,屏参文件名必须是"rk3568_11_0_1_parameters.txt"
- 使泰山派正常进入系统,进入系统以后把U盘插入泰山派,泰山派如果识别到屏参文件有更新就会隔一几秒钟就会自动重启,启用最新的屏幕参数文件
- 清除屏参通,长按REC按键不放,在按RST进行复位,系统灯先红灯慢闪、接着绿灯快闪就是在擦除中、擦完以后蓝灯常亮进入到升级模式,此时可以按复位,恢复正常运行
屏参
参考文件
下载后解压
屏参说明
# wucaicheng update screen parameters versions 0.1
#【0:DSI】 1:eDP ;2:HDMI; 3:HDMI+EDP; 4:HDMI+DSI
panel-type = 0;
# panel info
unprepare-delay-ms = 20;
enable-delay-ms = 100;
disable-delay-ms = 60;
prepare-delay-ms = 20;
reset-delay-ms = 30;
init-delay-ms = 10;
width-mm = 217;
height-mm = 135;
# panel timing
clock-frequency = 71000000;
hactive = 800;
hfront-porch = 52;
hsync-len = 8;
hback-porch = 48;
vactive = 1280;
vfront-porch = 415;
vsync-len = 6;
vback-porch = 16;
hsync-active = 0;
vsync-active = 0;
de-active = 0;
pixelclk-active = 0;
# for dsi panel
dsi,flags = 2563;
dsi,format = 0;
dsi,lanes = 4;
# panel-type = 2 is valid 0:Single; 1:dual-link-odd-even-pixels; 2:ual-link-even-odd-pixels; 3:ual-link-even-odd-pixels; 4:ual-link-even-odd-pixels;
rockchip,link-type = 0;
# panel-type = 0 is valid with a value greater than zero
rockchip,lane-rate = 500;
# panel-type = 4 is valid with a value greater than zero
rockchip,division-mode = 0;
# panel-type = 4 is valid with a value greater than zero
rockchip,exchange-channel = 0;
panel-init-sequence =
05 78 01 11
05 14 01 29;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
显示类型,
- panel-type = 0对应mipi屏幕
- panel-type = 1对应edp屏幕
- panel-type = 2对应hdmi屏幕
- panel-type = 3对应hdmi+edp同屏显示
- panel-type = 4对应hdmi+mipi同屏显示(注意因为共用通源如果hdmi是横屏mipi是竖屏会导致画面拉伸,所以需两种屏幕同比例)
# 【0:DSI】 1:eDP ;2:HDMI; 3:HDMI+EDP; 4:HDMI+DSI
panel-type = 0;
2
- 设置延时
unprepare-delay-ms = 20; // 设置设备断电延时时间为20毫秒
enable-delay-ms = 100; // 设置启用显示延时时间为100毫秒
disable-delay-ms = 60; // 设置关闭显示延迟时间为60毫秒
prepare-delay-ms = 20; // 设置准备准备就绪并开始接收视频数据延时为20毫秒
reset-delay-ms = 30; // 设置复位延迟为30毫秒
init-delay-ms = 10; // 设置复位到发送初始化序列延时10毫秒
width-mm = 217; // 设置屏幕的物理宽度为217毫米
height-mm = 135; // 设置屏幕的物理宽度为135毫米
2
3
4
5
6
7
8
- 设置时序
clock-frequency = 71000000; // 设置时钟频率为71,000,000Hz
hactive = 800; // 设置水平活动像素数为800(水平分辨率)
hfront-porch = 52; // 设置水平前肩时间为52
hsync-len = 8; // 设置水平同步脉冲宽度为8
hback-porch = 48; // 设置水平后肩时间为48
vactive = 1280; // 设置垂直活动像素数为1280(垂直分辨率)
vfront-porch = 415; // 设置垂直前肩时间为415
vsync-len = 6; // 设置垂直同步脉冲宽度为6
vback-porch = 16; // 设置垂直后肩时间为16
hsync-active = 0; // 设置水平同步信号为低电平有效
vsync-active = 0; // 设置垂直同步信号为低电平有效
de-active = 0; // 设置DE信号为低电平有效
pixelclk-active = 0; // 设置像素时钟信号为低电平有效
2
3
4
5
6
7
8
9
10
11
12
13
- panel表示
dsi,flags = 2563; // 设置DSI标志信息
dsi,format = 0; // 设置DSI VIDEO模式下像素格式
dsi,lanes = 4; // 设置DSI接口的LANE数量
rockchip,link-type = 0; // 设置Rockchip连接类型为0
# panel-type = 0 is valid with a value greater than zero
rockchip,lane-rate = 500; // 设置Rockchip通道速率为500
2
3
4
5
6
7
- mipi屏序列,其他屏幕这个参数可以不填,mipi专用
panel-init-sequence // 非常重要mipi屏幕初始化序列,当然有些屏幕厂家内部是已经初始化了的,但是大多数还是需要发生初始化序列的
音频接口
泰山派开发板通过4PIN的GH1.25座子与2. 54焊盘引出了咪头与扬声器接口。如下图:左边为正面GH1.25座,背面为2.54焊盘。
硬件连接:
- 下图为音频部分的硬件连接原理图(详情看开源工程),主要由RK809实现,RK809集成扬声器和耳机与I2S接口功能,其中扬声器高效率的立体声Class-D类型放大器,能够从5V电源为8欧姆的BTL负载输出1.3W的功率。它还集成了过流保护功能。说人话就是功率小听个响,要高质量音质的话使用扩展板在配个好的功放。
- 下图为GH1.25 4PIN座子原理图,座子1脚MIC1P接到咪头正极,2脚接到咪头GND,3脚与4脚接到喇叭
- 为了方便大家调试,我们还引出了2.54间距焊盘,原理图定义如下,对应到上图板载背面的焊盘上
音频扩展模块使用
- 调试前需注意:
- 调试前需要烧录我们提供的andorid系统固件,最后使用EDP或者MIPI固件进行测试。
- 如果在使用HDMI屏幕固件出现GH1.25外置音频接口无法使用情况请拔掉HDMI测试,因为原有系统音频输出方案是插入HDMI后音频不走外置功放,通过HDMI输出,我这里在系统中做了修改使音频同时输出到HDMI与外置功放。
- 如果你接上了我们的多媒体扩展板,请确保耳机接口没有插入,在系统右上角看耳机图标判断,插入耳机后音频型号不会走外置路线。
- 开发板与扩展板的连接方式如下图:
录音测试
- Gif TODO
- 命令 TODO
喇叭放音测试
- Gif TODO
- 命令 TODO
摄像头
泰山派开发板板载了一个MIPI CSI摄像头接口,可用于驱动同类型接口MIPI摄像头,位于开发板背面如下图:
硬件连接
- 下图为MIPI CSI部分的硬件连接原理图(详情看开源工程),相关供电电路我们已经在开发板上集成了并且我们这里的30PIN引脚是收集了大多数厂商的一个定义,你可以直接在淘宝或者其他平台直接购买线序相同的摄像头进行适配,无需绑定扩展板。
- 实物连接图
- 下面以我们测试过的摄像头进行举例,如果你想驱动其他摄像头需注意排线线序,并且适配相关驱动代码,当然也可以联系我们进行调试。
OV5695测试
注意此摄像头型号我们也只是采购回来调通,不对此其本身进行相关售后问题。
- 基本参数:
- 型号:OV5695
- 像素:500万
- 接口:MIPI接口30P 0.5间距FPC
拍照测试
- 打开相机app
- 点击拍照,拍完后在右上角会显示图库,点击可以查看照片
录像测试
- 录像测试鼠标右滑动拖出相机与视频切换选择框
MicroSD卡
泰山派开发板背面板载了一个MicroSD(TF)卡座,可以用于文件的存储或者系统盘制作,我们下面主要是介绍文件存储功能,因为我们系统默认是下载到EMMC中,使用TF卡引导系统请参考烧录文档。
硬件连接
下图为MicorSD部分的硬件连接原理图(详情看开源工程)
使用方法
- 将MicroSD卡的金属接口朝下(PCB的一面)插入插槽中。确保插卡时与插槽对齐。
- 轻轻按压MicroSD卡,直到卡片完全插入插槽。
- 插入卡后,卡座是带锁的,所以插入后会听到咔嚓一声表明表明将其锁定在插入状态,插入完成。
- 插入后系统中就能看到TF卡的图标显现出来如图:
- 查看SD卡内存大小,并进入SD卡文件夹,因为我这里已经格式化过了所以有很多Android相关文件夹在
- 使用ADB进行测速
# 先找到你的TF卡设备,我这里的是366E-1622,如果你不知道是那个你就拔插TF前后ls一下看那个目录有变化
rk3566_tspi:/ # ls storage/
366E-1622 emulated self
# 查看TF卡目录下的文件,和我们上面系统中看到的一模一样
rk3566_tspi:/ # ls storage/366E-1622/
Alarms Audiobooks Documents LOST.DIR Music Pictures Ringtones
Android DCIM Download Movies Notifications Podcasts
# 测试写入速度,366E-1622代替成你的设备,速度为:10 M/s
rk3566_tspi:/ # dd if=/dev/zero of=/storage/366E-1622/testtf.txt bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (100 M) copied, 9.667978 s, 10 M/s
# 清楚缓存,如果不清除测试会显示读的很快,比如800多M/s
rk3566_tspi:/ # echo 3 > /proc/sys/vm/drop_caches
# 读熟读测试, 366E-1622代替成你的设备,速度为: 18 M/s
rk3566_tspi:/ # dd if=/storage/366E-1622/testtf.txt of=/dev/null bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (100 M) copied, 5.593068 s, 18 M/s
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
- 拔出TF卡,因为卡座是带锁的所以往里轻压推TF会听到咔嚓一声,卡会自动弹出,系统中图标消失。
4G模块
- 因为大多数4G模块都是mini PCIE接口,但是连接的其实是USB,所以我们只需要使用一个mini pcie转usb的转接板,然后插入泰山派的usb口即可实现4G上网,如果大家觉得插入USB这种方式不优雅,后面扩展板中我们还会去介绍如如何使用扩展板上的4G模块实现上网功能。
- mipiPCIE购买链接:,注意:我们也是采购回来调试通过,并不负责其相应售后等任何问题。
- 下图为插入4G模块与SIM卡的样子,注意4G模块还需根据实际情况接入天线,比如有些模块带有GPS的话需要插入两根天线。而且天线也不能乱插需要与之匹配。
硬件连接
- 因为我们板载上只有一个usb口所以想接4G模块需要外加一个usb hub或者使用我们的泰山派多媒体扩展板,4G模块转接板以及鼠标灯在插入到HUB上
EC20
- 泰山派android系统中已经调试了EC20的驱动,所有你只要按照上图的方式连接好开机后在系统中找到信号图标,需要注意如果有接网口需拔掉,同时关掉wifi,保证后面测试数据正常。
- 打开蜂窝数据进行上网测试
- ADB中使用ifconfig查看4G网的状态,其中4G网对应的是ppp0,比如打开飞行模式或者关闭蜂窝数据这个就会消失
rk3566_tspi:/ # ifconfig
dummy0 Link encap:Ethernet HWaddr 16:65:6a:52:af:54
inet6 addr: fe80::1465:6aff:fe52:af54/64 Scope: Link
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 TX bytes:700
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope: Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:100 TX bytes:100
ppp0 Link encap:Point-to-Point Protocol
inet addr:10.133.172.244 P-t-P:10.64.64.64 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:980 errors:0 dropped:0 overruns:0 frame:0
TX packets:1173 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:650115 TX bytes:253027
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
- ADB中ping 百度,ping通的前提是需要打开蜂窝数据确保ppp0的存在。
rk3566_tspi:/ # ping www.baidu.com
PING www.a.shifen.com (120.232.145.144) 56(84) bytes of data.
64 bytes from 120.232.145.144: icmp_seq=1 ttl=53 time=20.1 ms
64 bytes from 120.232.145.144: icmp_seq=2 ttl=53 time=36.6 ms
64 bytes from 120.232.145.144: icmp_seq=3 ttl=53 time=43.3 ms
64 bytes from 120.232.145.144: icmp_seq=4 ttl=53 time=37.6 ms
64 bytes from 120.232.145.144: icmp_seq=5 ttl=53 time=25.6 ms
64 bytes from 120.232.145.144: icmp_seq=6 ttl=53 time=56.2 ms
64 bytes from 120.232.145.144: icmp_seq=7 ttl=53 time=41.8 ms
64 bytes from 120.232.145.144: icmp_seq=8 ttl=53 time=33.0 ms
64 bytes from 120.232.145.144: icmp_seq=9 ttl=53 time=24.2 ms
64 bytes from 120.232.145.144: icmp_seq=10 ttl=53 time=44.5 ms
64 bytes from 120.232.145.144: icmp_seq=11 ttl=53 time=30.9 ms
64 bytes from 120.232.145.144: icmp_seq=12 ttl=53 time=35.2 ms
64 bytes from 120.232.145.144: icmp_seq=13 ttl=53 time=35.1 ms
64 bytes from 120.232.145.144: icmp_seq=14 ttl=53 time=46.0 ms
64 bytes from 120.232.145.144: icmp_seq=15 ttl=53 time=34.4 ms
64 bytes from 120.232.145.144: icmp_seq=16 ttl=53 time=41.3 ms
^C64 bytes from 120.232.145.144: icmp_seq=17 ttl=53 time=44.2 ms
--- www.a.shifen.com ping statistics ---
17 packets transmitted, 17 received, 0% packet loss, time 28248ms
rtt min/avg/max/mdev = 20.196/37.114/56.250/8.700 ms
rk3566_tspi:/ #
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
RTC
泰山派开发板背面通过2.54焊盘引出了RK809内部集成的RTC模块:
硬件连接
测试RTC需要一颗纽扣电池并确保纽扣电池电量充足(用万用表测电压在3V左右),泰山派布局空间不足为了美观所以我们舍弃了纽扣电池座,如果用到RTC需要通过烙铁把电池的黑线负极焊接到GND焊盘上,红线焊接到RTC焊盘上。 电池链接:https://item.szlcsc.com/5782992.html
RTC测试
Android系统中的时钟可以分为两种,一个是System time(Android系统时钟)另一个是hardware clock(硬件时钟)。通常情况下当设备连接到互联网时,系统会从网络进行时间同步。然而如果设备没有网络连接,例如在没有联网的情况下启动 Android 系统时,系统时间会从 RTC(实时时钟)硬件进行同步。所以有了RTC,即使在没有网络连接,Android 系统仍能够使用 RTC 硬件时钟提供准确的系统时间来满足设备的基本需求。一旦设备连接到互联网,系统时间会自动从网络进行同步,确保时间的准确性。
- 下面演示如何在Android系统中打开自动同步网路时钟与手动调节时钟
- 使用adb命令进行时间测试
# 设置Android系统时间
rk3566_tspi:/ # date "2002-01-01 11:22:33"
Tue Jan 1 11:22:33 CST 2002
# 查看当前Android系统时间
rk3566_tspi:/ # date
Tue Jan 1 11:23:39 CST 2002
# 查看rk809 RTC的硬件时间
rk3566_tspi:/ # hwclock -f /dev/rtc0
Tue Aug 29 20:19:44 2023 0.000000 seconds
# 将系统时间写入到rk809 RTC
rk3566_tspi:/ # hwclock -f /dev/rtc0 -w
# 在查看rk809 RTC硬件时间发现已经与系统时间一样了
rk3566_tspi:/ # hwclock -f /dev/rtc0
Tue Jan 1 11:24:16 2002 0.000000 seconds
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
40PIN排针接口
泰山派开发板板载了一个40PIN 2.54间距的贴片排针,排针的引脚定义兼容经典40PIN接口,如下图:
引脚定义
- 泰山派开发板40PIN引脚原理图(详情查看开源工程)
- 为了支持更多的一个功能,更好的满足大家的项目使用情况,除了上面说到的兼容树莓派引脚复用定义以外,泰山派开发板40PIN引脚还支持更多的一个复用功能,比如:串口、PWM、音频等。但需要自己写驱动,也可以联系我们进行适配
默认定义接口测试
接下来就基于默认IO定义进行40PIN GPIO的功能测试,开始前你需要烧录Android系统固件
GPIO测试
泰山派开发板40PIN排针上面除12个电源引脚以外还有28个IO口引脚,这28个IO口引脚都可以作为普通GPIO进行输入输出,但是这里面有些IO已经在驱动中默认配置了复用功能,所以只剩下面标红的14个IO口能够用于GPIO输出输出测试。
硬件连接
这里以GPIO0_B7来进行举例说明其他的IO类似
- 使用逻辑分析仪或者万用表来检测GPIO口的高低电平输出
- 使用两个杜邦线串联一个10K电阻,一端口接到GPIO0_B7,然后通过另一端插入GND或3V3来模拟高低电平输入(注意此操作中的电阻不能省,以及不要接到5V上去了,以免烧坏GPIO口) 暂时无法在飞书文档外展示此内容
GPIO命名规则与引脚ID计算
接下来我们在adb中使用sysfs来控制GPIO0_B7进行输入输出测试,在使用sysfs前我们需要先了解k3566的gpio命名规则,因为sysfs中传参需要用到引脚ID,就以为我们现在所使用的GPIO0_B7为例,我们可以把它拆分成3个部分如下:
- 控制器(bank):rk3566有5个GPIO控制器分别是GPIO0-GPIO4,一个控制器下面包含ABCD个端口,每个端口下有包含0-7个索引序号,所以一个控制器可控制32个IO引脚。
- 端口(port):A、B、C、D。对应着数字:0-3所以A=0、B=1、C=2、D=3 - 索引序号(pin):固定为0-7共计8个数 代入 GPIO0_B7 ,该引脚的 ID 可以按照以下规则组成:
- 控制器 (bank) 为 0,表示第 0 组控制器。
- 端口(port)为 B,表示端口号为1。- 索引序号(pin)为7。 根据计算公式:32 x 0 + 1 x 8 + 7 = 15,可以得到引脚ID为15。
GPIO输出测试
# 使用root权限
rk3566_tspi:/ # su
# 将引脚号 15 导出为 GPIO 引脚,使其可以被访问和控制。
rk3566_tspi:/ # echo 15 > /sys/class/gpio/export
# 将引脚号 15 的方向设置为输出模式,即设置为输出引脚。
rk3566_tspi:/ # echo out > /sys/class/gpio/gpio15/direction
# 将引脚号 15 的值设置为 1,即将引脚设置为高电平。
rk3566_tspi:/ # echo 1 > /sys/class/gpio/gpio15/value
# 将引脚号 15 的值设置为 0,即将引脚置设置为低电平。
rk3566_tspi:/ # echo 0 > /sys/class/gpio/gpio15/value
# 将引脚号 15 解除导出,即取消对引脚号 15 的 GPIO 控制权。
rk3566_tspi:/ # echo 15> /sys/class/gpio/unexport
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
下面演示使用sysfs来控制GPIO0_B7输出高低电平,在逻辑分析仪中捕获到电平的变化
GPIO输入测试
# 使用root权限
rk3566_tspi:/ # su
# 将引脚号 15 导出为 GPIO 引脚,使其可以被访问和控制。
rk3566_tspi:/ # echo 15 > /sys/class/gpio/export
# 将引脚号 15 的方向设置为输入模式,即设置为输入引脚。
rk3566_tspi:/ # echo in > /sys/class/gpio/gpio15/direction
# 读引脚的值,结果为1或0,更具引脚实际电平决定。
rk3566_tspi:/ # cat /sys/class/gpio/gpio15/value
# 将引脚号 15 解除导出,即取消对引脚号 15 的 GPIO 控制权。
rk3566_tspi:/ # echo 15> /sys/class/gpio/unexport
2
3
4
5
6
7
8
9
10
11
12
13
14
下面演示使用sysfs来控制GPIO0_B7进行高低电平输入检测
注意:
如果io口以及在设备驱动中被复用那么export就会失败无法发现gpiox
串口测试
用户GPIO中其实很多IO口可以复用成串口功能(可查看复用定义表),但是我们这里按照默认定义所以只对8脚、9脚进行复用测试,引脚定义入下图:
硬件连接
测试串口我们需要一个串口调试工具,我这里以最常用的CH340为例。通过上面的引脚定义中我们可以知道用户GPIO中的8、9脚对应UART3,这里我们通过杜邦线把UART3_TX_M1连接到CH340的RXD引脚,UART3_RX_M1连接到CH340的TXD引脚,并且进行共地,连接示意图如下所示:
CH340插入电脑以后设备管理器多出一个串行设备
打开串口调试工具electerm,设置端口为COM34,波特率9600,其他默认
ADB中找到串口对应节点,这里的UART3对应的就是ttyS3
rk3566_tspi:/ # ls /dev/
__properties__ fscklogs kmsg rga usb-ffs
ashmem full kmsg_debug rtc0 usb_accessory
ashmeme02e9dfb-e7c9-4b5a-93ea-453a4d62e115 fuse loop-control snd v4l-subdev0
binder gpiochip0 mali0 socket v4l-subdev1
binderfs gpiochip1 media0 spi_misc_test v4l-subdev2
blkio gpiochip2 memcg stderr vendor_storage
block gpiochip3 memory_bandwidth stdin video0
boringssl gpiochip4 mmcblk2rpmb stdout video1
bus gpiochip5 mpp_service stune video2
cgroup_info graphics net sw_sync video3
console hw_random network_latency tee0 video4
cpu_dma_latency hwbinder network_throughput teepriv0 video5
cpu_variant:arm i2c-0 null tty video6
cpu_variant:arm64 i2c-2 opteearmtz00 ttyFIQ0 video7
cpuctl i2c-3 pmsg0 ttyS1 video8
cpuset i2c-4 ppp ttyS3 vndbinder
device-mapper i2c-6 ptmx tun watchdog
dri iio:device0 pts uhid watchdog0
event-log-tags input random uinput zero
fd ion rfkill urandom
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
开始测试前需要设置ttyS3的串口参数,这里要与串口工具设置一致才能进行通讯,否则会出现乱码或者无法显示等异常情况
stty -F /dev/ttyS3 <波特率> cs<数据位> <奇偶校验> <停止位> <流控制>
<波特率>常用的有9600、115200等。
<数据位>数据位数,常见的取值为5、6、7、8,基本上默认都是8位。
<奇偶校验>为奇偶校验类型,可选值为-parity(无校验)、even(偶校验)和odd(奇校验)。
<停止位>为要设置的停止位数,常见的取值为cstopb=1、-cstopb=2,基本上默认值为cstopb。
<流控制位>crtscts:启用RTS/CTS硬件流控制。-crtscts:禁
用RTS/CTS硬件流控制。
2
3
4
5
6
7
设置ttyS3串口参数,其他都保持默认,只要设置波特率就行
rk3566_tspi:/ # stty -F /dev/ttyS3 9600
发送数据测试,把"lckfb-tspi"发送到ttyS3
rk3566_tspi:/ # echo "lckfb-tspi" > /dev/ttyS3
终端中正常显示我们发送的内容
接收数据测试,adb中cat ttyS3等待接收数据
rk3566_tspi:/ # cat /dev/ttyS3
在串口控制台中输入任意字符,我这里输入"abcdefg1234567"然后回车发送
此时我们开发板中已经正确收到了刚刚发送的数据
演示:
红外遥控器测试
用户GPIO的32引脚可以用来做红外遥控接收如下图所示:
做此实验我们需要一个遥控器和一个红外接收头。
红外遥控器购买地址: ,我们也只是采购回来测试不对其进行售后以及技术支持。
红外接收头IRM-56384购买地址:https://item.szlcsc.com/73157.html
硬件连接
用杜邦线把IRM-56384接到用户GPIO,连接示意图如下请勿接反或者接错:
测试
红外遥控器按键说明,当然这些按键值也不是绝对的后面驱动教程中我们在来掌握如何修改按键值。
在系统中进行遥控测试,注意遥控的时候遥控器需要对准红外接收头凸起面
adb中查看遥控器事件
rk3566_tspi:/ # getevent
add device 1: /dev/input/event2
name: "adc-keys"
add device 2: /dev/input/event0
name: "fe700030.pwm"
add device 3: /dev/input/event1
name: "rk805 pwrkey"
/dev/input/event0: 0001 0002 00000001
....................................
/dev/input/eventX: EV_TYPE CODE VALUE
/dev/input/eventX:事件所属的设备路径和编号。
EV_TYPE:事件类型。
CODE:事件代码,用于标识不同类型的事件或按键。
VALUE:事件的值,表示事件的状态或触发方式。
2
3
4
5
6
7
8
9
10
11
12
13
14
下面可以看到我每按下一个按键就会上报事件,geteven会上报所有事件包括触摸、鼠标等,所以为例保证测试准确性可先断开这些设备进行测试。
IIC测试
我们的用户GPIO中引出了两组I2C分别是I2C2与I2C3
要想测试I2C是需要I2C总线上挂载设备,IO口需要接上拉电阻,编写对应的设备外设驱动才能能进行正常的测试,下面我使用暴力的手段进行测试,因为我们I2C引脚开发板上是没有接上拉电阻,所以只能对I2C2进行测试,因为I2C2端口默认是上拉状态,通过原图可以查看GPIO0_B5/6_u中的U表示UP上拉,GPIO3_B5/6_d中的d表示下拉。
硬件连接
测试
使用ADB列出I2C设备
rk3566_tspi:/ # ls /sys/class/i2c-dev/
i2c-0/ i2c-2/ i2c-3/ i2c-4/ i2c-6/
2
往I2c-2总线中写任意数据
rk3566_tspi:/ # echo -n " " > /dev/i2c-2
使用抓包工具可以看到波形输出
SPI测试
用户GPIO中引出了一组SPI接口如下图所示:
硬件连接
这里我们通过连接到逻辑分析仪进行,我们可以通过逻辑分析仪直观的观察spi的通讯数据,关于如何驱传感器我们在后续驱动中在进行分析。
测试
adb spi测试命令
# echo 类型 id 循环次数 传输长度 > /dev/spi_misc_test
echo write 0 10 255 > /dev/spi_misc_test
echo write 0 10 255 init.rc > /dev/spi_misc_test
echo read 0 10 255 > /dev/spi_misc_test
echo loop 0 10 255 > /dev/spi_misc_test
# echo setspeed id 频率(单位 Hz) > /dev/spi_misc_test
echo setspeed 0 1000000 > /dev/spi_misc_test
2
3
4
5
6
7
8
下面进行写测试,先启动逻辑分析仪采样,然后通过adb执行下面写命令
# 对ID 0进行进行写入测试,循环1次,发送0-255
rk3566_tspi:/ # echo write 0 1 255 > /dev/spi_misc_test
2
停止采样下面逻辑分析仪正常捕获到我们发送的数据,SPI工作正常。
演示:
PWM测试
用户GPIO中其实很多IO口可以复用成PWM可查看复用定义表,但是我们这里按照默认定义所以只对12脚、33脚、35脚进行复用测试,引脚定义入下图:
硬件连接
我们这里通过逻辑分析仪来分别捕获3个PWM引脚的输出
PWM ADB测试方法
找到我们要测试的PWM设备
rk3566_tspi:/ # find . -name "pwm"
# pwm4: pwm@fe6e0000 edp屏幕背光
./sys/devices/platform/fe6e0000.pwm/pwm
# pwm14: pwm@fe700020
./sys/devices/platform/fe700020.pwm/pwm
# pwm9: pwm@fe6f0010
./sys/devices/platform/fe6f0010.pwm/pwm
# pwm8: pwm@fe6f0000
./sys/devices/platform/fe6f0000.pwm/pwm
2
3
4
5
6
7
8
9
这里就以pwm8进行测试:
# 列出pwm8目录如下
rk3566_tspi:/ # ls /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip1/
device export npwm power subsystem uevent unexport
2
3
使能调试通道
# 通道是从0开始的,对应原理图上的pwmx_mx中的mx,我们这里是pwm8_m0所以就是通道0
rk3566_tspi:/ # echo 0 > /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip1/export
# 使能后会发现下面比之前多了一个pwm0目录
rk3566_tspi:/ # ls /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip1/
device export npwm power pwm0 subsystem uevent unexport
2
3
4
5
6
设置pwm周期、频率、极性
# 单位纳秒,所以1000000000个纳秒就是一秒
rk3566_tspi:/ # echo 1000000000> /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip1/pwm0/period
# 设置占空比为50%
rk3566_tspi:/ # echo 500000000> /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip1/pwm0/duty_cycle
# 设置极性可以有两个选项:normal和inverted。当设置为 “normal” 时,
# 高电平(高电压)表示占空比的高部分,而低电平(低电压)表示占空比的低部分。
# 当设置为 “inverted” 时,这种情况相反
rk3566_tspi:/ # echo 'normal' > /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip1/pwm0/polarity
2
3
4
5
6
7
8
9
10
启动与停止PWM
# 启动PWM
rk3566_tspi:/ # echo 1 > /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip1/pwm0/enable
# 停止PWM
rk3566_tspi:/ # echo 0 > /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip1/pwm0/enable
2
3
4
失能调试通道
rk3566_tspi:/ # echo 0 > /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip1/unexport
测试
PWM8、PWM9、PWM10三个通道同时输出,使用逻辑分析仪器捕获波形
echo 0 > /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip1/export
echo 0 > /sys/devices/platform/fe6f0010.pwm/pwm/pwmchip2/export
echo 0 > /sys/devices/platform/fe700020.pwm/pwm/pwmchip3/export
echo 1000000000> /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip1/pwm0/period
echo 1000000000 > /sys/devices/platform/fe6f0010.pwm/pwm/pwmchip2/pwm0/period
echo 1000000000 > /sys/devices/platform/fe700020.pwm/pwm/pwmchip3/pwm0/period
echo 500000000 > /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip1/pwm0/duty_cycle
echo 250000000 > /sys/devices/platform/fe6f0010.pwm/pwm/pwmchip2/pwm0/duty_cycle
echo 100000000 > /sys/devices/platform/fe700020.pwm/pwm/pwmchip3/pwm0/duty_cycle
echo 'normal' > /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip1/pwm0/polarity
echo 'normal' > /sys/devices/platform/fe6f0010.pwm/pwm/pwmchip2/pwm0/polarity
echo 'normal' > /sys/devices/platform/fe700020.pwm/pwm/pwmchip3/pwm0/polarity
echo 1 > /sys/devices/platform/fe6f0000.pwm/pwm/pwmchip1/pwm0/enable
echo 1 > /sys/devices/platform/fe6f0010.pwm/pwm/pwmchip2/pwm0/enable
echo 1 > /sys/devices/platform/fe700020.pwm/pwm/pwmchip3/pwm0/enable
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
演示: