动手让LVGL8-Music-Demo音乐响起来
LVGL8 自带的有一个音乐播放器的Demo,效果不错,充分展示了LVGL8的弹性网格布局,动画等效果,来学习GUI是非常不错的,只是这个Demo并不能真正的播放音乐,但是已经把音乐播放的逻辑都给实现了,现在我们就动手给它注入灵魂—-mpv
最初是用的sox这个号称音频界的瑞士军刀的工具,但是编写过程中碰到一个比较棘手的问题,那就是无法使用管道重定向输出(play本身不支持管道,只能借助sox),也就没办法获取播放时间,会造成进度条时间与实际播放时间有点误差,最后就放弃使用sox了 12345678910111213141516171819if (pid == 0){ LOG_D("child pid:%d\n", getpid()); char cmd[32]; prctl(PR_SET_PDEATHSIG, SIGKILL); close(0); dup2(pip[1], 1); //标准输出重定向到管道输出 close(pip[0]); sprintf(buf, "./music/%s" ...
Neza-D1开发板学习之SPI-LCD灯篇
Neza-D1开发板芯片很强,但是没有引出RGB接口,板上引出了HDMI与LVDS接口,没引出RGB接口,所以手里的RGB接口的屏用不上了,扩展IO上有引出SPI1接口,看了一下尺寸,刚好可以放的下2.8”的SPI屏幕,正好手里有以前剩下的屏幕,就画了一块扩展板(可惜芯片是BGA封装,即使我能画出来,也没本事焊上啊!),驱动芯片是ili9341 4线SPI,又加了一个触摸芯片上去,如下图
设备树配置 lcd_ili9341@0 { #address-cells = <1>; #size-cells = <1>; compatible = “ilitek,ili9341”; reg = <0>; spi-max-frequency = <32000000>; rotation = <0>; spi-cpol; spi-cpha; rgb; fps = <30>; buswidth = <8>; txbuflen = ...
Neza-D1开发板学习之I2C-OLED篇
Neza-D1开发板扩展IO上引出了I2C2,从原理图上看,已经接了PCF8574@38了,总线速度400K,我们的OLED也是接在这上边的,由于这屏幕比较小,显示不了多少东西,就不用FB方式了,直接在应用层操作OLED,所以设备树也不需要配置
在应用层操作就跟单片机操作是一样的了,这里为了方便操作屏幕,我分辨率移植u8g2这个库,我手里的哦了的是1.3”的,驱动IC是SHT1106,用1306也可以,只能显示不满屏,可能是基地址定义的不一样
我们不需要从OLED读取数据,所以只需要实现I2C写函数就可以,注意OLED模块上标的地址是0x78,这个是8位地址,这里使用的是7位地址,右移一位所以是0x3C
unsigned char i2c_init()
{
const char *i2c_dev = "/dev/i2c-2";
fd = open(i2c_dev, O_RDWR);
if (fd < 0)
{
printf("not have /dev/i2c- ...
Neza-D1开发板学习之按键和旋转编码器篇
Neza-D1开发板上只引出一个按键,是使用的LRADC检检测按键的,想使用更多按键,可以使用板子上通过PCF8574扩展出来的IO,我画的扩展板使用了四个按键,分别为PP0,PP1,PP2,PP4
设备树配置如下 内核需要勾选 Polled input device skeleton gpio_keys { compatible = “gpio-keys”; pinctrl-names = “default”; /pinctrl-0 = <&key_pins>;/ #address-cells = <1>; #size-cells = <0>; autorepeat; button@0 { label = “Key volume up”; linux,code = ; gpios = <&pcf8574 0 GPIO_A ...
Naza-D1上使用I2S外接PCM512X声卡
问题
[ 9.475500] 2034000.daudio-pcm512x-hifi: pcm new capture failed with err=-14
[ 9.483492] 2034000.daudio-pcm512x-hifi: ASoC: pcm constructor failed: -14
[ 9.491279] sunxi-audio-card 20340a0.sounddaudio2: ASoC: can't create pcm 2034000.daudio-pcm512x-hifi :-14
#aplay -D hw:3 cuanqi.wav
[ 1605.453045] pcm512x 2-004c: Need SCLK for master mode: -2
[ 1605.459096] pcm512x 2-004c: ASoC: can't open codec pcm512x-hifi: -2
pcm512x: pcm512x@4c { ...
Neza-D1开发板学习之点灯篇
板子到手先来点个灯那是少不了的,先确定LED接在哪个引脚上,查看原理图,发现LED的座位号是U13,原来不是普通的LED,是一颗单总线的WS2812灯珠,这颗LED是接在PC0引脚上的,引脚标有LEDC-DO,是接在了LED控制器上,驱动官方已经做好了,我们直接用就可以
下边废话不多说,来看一下系统启动过程,系统已经把驱动给加载好了 [ 2.100847] sunxi_led_probe()1715 - start [ 2.105375] sunxi_get_str_of_property()1560 - failed to get the string of propname led_regulator! [ 2.115306] sunxi_register_led_classdev()1448 - led_classdev start [ 2.126681] sunxi_led_probe()1820 - finish
来查看一下LED子系统下的灯 # ls /sys/class/leds/ blink ...
在Neza-D1上使用红外接收头做为输入
开发环境配置我的系统是在VirtualBox里跑的ubuntu18.04
a. 到平头哥官网下载riscv64-linux-x86_64-20210512.tar.gz交叉编译工具
b. sudo mkdir /opt/riscv64-linux-x86_64-20210512
c. tar -xzvf riscv64-linux-x86_64-20210512.tar.gz -C /opt/riscv64-linux-x86_64-20210512
d. vim /etc/bash.bashrc 添加PATH="$PATH:/opt/riscv64-linux-x86_64-20210512/bin"
e. source /etc/bash.bashrc 使之生效
f. 终端输入riscv64-unknown-linux-gnu-gcc -v 出现版本信息说明外部工具链接配置好了
D1芯片本身有硬件ir-tx ir-rx,但在开发板上通过扩展IO引出的只有IR-RX,IR-TX用不了,被I2C2占用了,只有用IO来发射红外信号了
设备对配置发射引脚,使用的是 ...
在V3S上使用红外接收头
确定要使用的GPIO,这里需要使用带外部中断的引脚,否则驱动注册失败 request:-22
这是我的设备树配置 ir_gpio { compatible = “gpio-ir-receiver”; gpios = <&pio 1 5 GPIO_ACTIVE_LOW>; /* PB5 */ /active_low = <1>;/ linux,rc-map-name = “rc-tevii-nec”; status = “okay”; };
内核里修改
Device Drivers > Remote Controller support > [] LIRC user interface [] Remote controller decoders —> [*] Remote Controller devices —> <*> GPIO IR remote c ...
v3s上使用sox产生测试信号
交叉编译音频界的瑞士军刀SOX并播放音乐并产生各种测试音频信号
从此处下载sox官网 解压后新建一个autoconfig.sh脚本 这里使用了绝对路径,使用相对路径在最后链接时找不到文件,所以直接使用了绝对路径,里边的一些插件如果不需要可以去掉,我也一起打包传上来,另外这手动编译依赖可真烦那,只能缺哪个下载哪个再编译哪个最后才能给链接出来,跟buildroot里3S钟把sox勾选上完事编译完事相比,手动编译估计得3小时 ^*_*^,简直弱爆了 #!/bin/sh ./configure CC=”arm-linux-gnueabihf-gcc” LDFLAGS=”-L/home/xfdr/v3s_licheepi_zero/sox-14.4.2-sonavox/alsa/ -L/home/xfdr/v3s_licheepi_zero/sox-14.4.2-sonavox/flac-1.3.3/src/lib ...
全志V3S上通过蓝牙播放音乐
我使用的是RTL8723DS模块,引脚与BS是兼容的,内核使用的是5.10, Bluez使用的是5.55 终端是UART0,蓝牙串口使用的是UART2,板子是参照licheepi 自己画的
参考链接BT参考链接WIFI参考链接
首先在buildroot里勾选上bluez5-utils,bluez-tools及blue-alsa
在内核里勾选 []UART(H4) protocol support []Realtek Three-wireUART(H5) protocol support 系统启动时会显示如下信息: Starting kernel … [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 5.10.19 (xfdr@virtualbox) (arm-linux-gnueabihf-gcc (Linaro GCC 7.5-2019.12) 7.5.0, GNU ld (Linaro_Binutils-2019.12) 2.28.2.20170706) #13 SMP ...