正规漫画网站开发流程,网站域名注册步骤,wordpress景点展示插件,电商代理前言
今天焊接两大关键输入输出设备#xff1a;串口和屏幕。
串口
串口部分使用 CP2102N 芯片#xff08;USB 转 TTL#xff09;#xff0c;这样用一根数据线连接板子和 PC 就可以直接调试了。
焊接 CP2102 和 Type C 上电调试#xff0c;串口可以正常输入输出。 看来…前言
今天焊接两大关键输入输出设备串口和屏幕。
串口
串口部分使用 CP2102N 芯片USB 转 TTL这样用一根数据线连接板子和 PC 就可以直接调试了。
焊接 CP2102 和 Type C 上电调试串口可以正常输入输出。 看来虽然是 QFN 封装只要尺寸大一点还是很容易焊接成功的。
屏幕
重头戏在屏幕倒不是说屏幕焊接有多难而是软件调试折腾了两个晚上。 屏幕焊接
ST7789V 驱动调试
step1使能内核驱动编译选项 屏幕的驱动芯片为 ST7789V就在内核的 menuconfig 中搜索 ST7789V 搜到了这两项遂将这两项都置为了 [y]这里也为自己埋下了个坑这两个驱动需要二选一。 step2配置设备树 arch/arm/boot/dts/sun8i-v3s-licheepi-zero-dock.dts 新增如下节点
spi0{status okay;st7789v: st7789v0{compatible sitronix,st7789v;reg 0;status okay;spi-max-frequency 96000000;spi-cpol;spi-cpha;rotate 270;fps 60;buswidth 8;dc-gpios pio 1 4 GPIO_ACTIVE_HIGH; /* PB4 */reset-gpios pio 1 5 GPIO_ACTIVE_HIGH; /* PB5 *///led-gpios pio 0 0 GPIO_ACTIVE_LOW; /* PA0 */debug 0x0;};
};step3调试 上电后屏幕没输出并且没有生成 /dev/fb0 设备文件 搜索 sitronix,st7789v确定驱动入口追下驱动代码发现匹配到了两份驱动 添加打印发现上电后匹配的是 panel-sitronix-st7789v 这份驱动那就禁用此启动换下面的试试结果还真可以上电后屏幕直接就显示启动 log 了 不过发现屏幕好像反显了应该黑底白字才对查看驱动也没发现反显的设置。 不管了修改驱动让它再反一次 drivers/staging/fbtft/fb_st7789v.c
static int init_display(struct fbtft_par *par)
{/* turn off sleep mode */write_reg(par, MIPI_DCS_EXIT_SLEEP_MODE);mdelay(120);// 反显write_reg(par, MIPI_DCS_ENTER_INVERT_MODE);/* set pixel format to RGB-565 */write_reg(par, MIPI_DCS_SET_PIXEL_FORMAT, MIPI_DCS_PIXEL_FMT_16BIT);write_reg(par, PORCTRL, 0x08, 0x08, 0x00, 0x22, 0x22);
...看起来正常了
显示图像
借助之前的工具《LCD 显示图像——操作显存framebuffer》显示一副图片看看
播放视频
原料播放器、视频 先制作播放器 下载源码 http://www.mplayerhq.hu/MPlayer/releases/MPlayer-1.5.tar.xz 交叉编译
$ ./configure --targetarm-linux --ccarm-linux-gnueabihf-gcc --prefix/home/liyongjun/project/board/buildroot/override/DIY_V3S/MPlayer-1.5/_install --disable-freetype --enable-fbdev --disable-mencoder --disable-sdl --disable-live --disable-dvdread --disable-x11 --enable-cross-compile --disable-dvdnav --disable-jpeg --disable-tga --disable-pnm --disable-tv --disable-fontconfig --disable-xanim --disable-win32dll --disable-armv5te --disable-armv6 --enable-static
$ make将编译生成的播放器软件 mplayer 拷贝到板子 root 目录 然后将视频文件 bad_apple_30.mp4 也拷贝到板子 root 目录 播放
# ./mplayer bad_apple_30.mp4
MPlayer 1.5-6.3.1 (C) 2000-2022 MPlayer TeamPlaying bad_apple_30.mp4.
libavformat version 59.17.102 (internal)
libavformat file format detected.
[mov,mp4,m4a,3gp,3g2,mj2 0xccced8]Protocol name not provided, cannot determine if input is local or a network protocol, buffers and access patterns cannot be configured optimally without knowing the protocol
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang eng
VIDEO: [H264] 240x240 24bpp 60.000 fps 492.0 kbps (60.1 kbyte/s)Opening video decoder: [ffmpeg] FFmpegs libavcodec codec family
libavcodec version 59.21.100 (internal)
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)Clip info:major_brand: mp42minor_version: 0compatible_brands: mp42mp41creation_time: 2021-01-11T00:31:54.000000Z
Load subtitles in ./Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 44100 Hz, 2 ch, floatle, 125.6 kbit/4.45% (ratio: 15698-352800)
Selected audio codec: [ffaac] afm: ffmpeg (FFmpeg AAC (MPEG-2/MPEG-4 Audio))[AO OSS] audio_setup: Cant open audio device /dev/dsp: No such file or directory
DVB card number must be between 1 and 4
AO: [null] 44100Hz 2ch floatle (4 bytes per sample)
Starting playback...
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
Movie-Aspect is undefined - no prescaling applied.
[swscaler 0xf27860]bicubic scaler, from yuv420p to rgb565le using C
[swscaler 0xf27860]No accelerated colorspace conversion found from yuv420p to rgb565le.
[swscaler 0xf27860]using unscaled yuv420p - rgb565le special converter
VO: [fbdev] 240x240 240x240 BGR 16-bit
framebuffer too small for double-buffering, disabling
A: 25.7 V: 25.2 A-V: 0.488 ct: 0.000 0/ 0 37% 54% 4.1% 553 0 **************************************************** Your system is too SLOW to play this! ****************************************************Possible reasons, problems, workarounds:
- Most common: broken/buggy _audio_ driver- Try -ao sdl or use the OSS emulation of ALSA.- Experiment with different values for -autosync, 30 is a good start.
- Slow video output- Try a different -vo driver (-vo help for a list) or try -framedrop!
- Slow CPU- Dont try to play a big DVD/DivX on a slow CPU! Try some of the lavdopts,e.g. -vfm ffmpeg -lavdopts lowres1:fast:skiploopfilterall.
- Broken file- Try various combinations of -nobps -ni -forceidx -mc 0.
- Slow media (NFS/SMB mounts, DVD, VCD etc)- Try -cache 8192.
- Are you using -cache to play a non-interleaved AVI file?- Try -nocache.
Read DOCS/HTML/en/video.html for tuning/speedup tips.
If none of this helps you, read DOCS/HTML/en/bugreports.html.A: 219.1 V: 219.1 A-V: 0.020 ct: 0.583 0/ 0 40% 54% 3.9% 11729 0 Exiting... (End of file)
# mplayer 播放原理也很简单就是向 /dev/fb0 写数据 至此串口和屏幕调试完毕