ROCK PI S音频开发(一)系统准备

这篇具有很好参考价值的文章主要介绍了ROCK PI S音频开发(一)系统准备。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、连接WIFI
 

sudo nmcli r wifi on
sudo nmcli dev wifi
sudo nmcli dev wifi connect "SSID" password "PASSWORD" 

2、更新源

sudo apt-get update
sudo apt-get install git wget
export DISTRO=focal-stable
wget -O - apt.radxa.com/$DISTRO/public.key | sudo apt-key add -
sudo apt-get update

3、安装相关编译器
 

sudo apt-get install gcc-aarch64-linux-gnu build-essential device-tree-compiler libncurses5 libncurses5-dev make cmake

4、安装基础音频软件
 

sudo apt-get install alsa-utils jackd2 jackmeter mplayer

-------------------------------------------------------------------------------------------------------------------------------

接下来做一些基本的测试

1、jackd服务

jackd -dalsa -dhw:1 -r44100&

查看端口
 

jack_lsp

2、要使用高品质音频,需采用I2S的方式连接外部解码器,通过编译设备树将相应IO配置为I2S模式

2.1 反编译DTB

dtc -I dtb -O dts -o xx.dtb xxx.dts

即把/boot/dtbs/4.4.143-65-rockchip-g58431d38f8f3/rockchip/rk3308-rock-pi-s.dtb反编译为dts,然后对该文件进行编辑

dtc -I dtb -O dts -o /boot/dtbs/4.4.143-65-rockchip-g58431d38f8f3/rockchip/rk3308-rock-pi-s.dtb rk3308-rock-pi-s.dts

运行上述命令后,将在当前目录下生成rk3308-rock-pi-s.dts,接下来对该文件的以下片段进行修改,不使用rock pi s自带的音频解码器,并将IO配置为I2S模式。

2.2 I2S slave模式的设备树

	i2s_8ch_0: i2s@ff300000 {
		compatible = "rockchip,rk3308-i2s-tdm";
		reg = <0x00 0xff300000 0x00 0x1000>;
		interrupts = <0x00 0x30 0x04>;
		clocks = <0x02 0x4c 0x02 0x4e 0x02 0xa4 0x02 0x6e 0x02 0x6f 0x02 0x03 0x02 0x04>;
		clock-names = "mclk_tx\0mclk_rx\0hclk\0mclk_tx_src\0mclk_rx_src\0mclk_root0\0mclk_root1";
		dmas = <0x25 0x00 0x25 0x01>;
		dma-names = "tx\0rx";
		resets = <0x02 0x89 0x02 0x8a>;
		reset-names = "tx-m\0rx-m";
		rockchip,cru = <0x02>;
		rockchip,grf = <0x4b>;
		rockchip,mclk-calibrate;
		pinctrl-names = "default";
		pinctrl-0 = <0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a>;		
		rockchip,clk-trcm = <2>;
		#sound-dai-cells = <0>;
		status = "okay";
		phandle = <0xbe>;
	};

	I2S_sound {
		status = "okay";
		compatible = "simple-audio-card";
		simple-audio-card,format = "i2s";
		simple-audio-card,name = "dummy-card";
		simple-audio-card,mclk-fs = <256>;
		simple-audio-card,bitclock-master = <&master>;
		simple-audio-card,frame-master = <&master>;
		simple-audio-card,cpu {
			sound-dai = <&i2s_8ch_0>;
		};
		master:simple-audio-card,codec {
			sound-dai = <&dummy_codec>;
		};
	};
	
 	dummy_codec: dummy-codec {
         status = "okay";
         compatible = "rockchip,dummy-codec";
		 //clocks = <0x02 0x6f>;
		 //clock-names = "mclk";
         #sound-dai-cells = <0>;
    };
	

	acodec-sound {
		compatible = "rockchip,multicodecs-card";
		rockchip,card-name = "rockchip,rk3308-acodec";
		rockchip,multicodecs-card,format = "i2s";
		rockchip,mclk-fs = <0x100>;
		rockchip,cpu = <&i2s_8ch_0>;
		rockchip,codec = <0x8b>;
		status = "disabled";
		phandle = <0x13d>;		
	};

2.3 I2S master模式的设备树

	i2s_8ch_0: i2s@ff300000 {
		compatible = "rockchip,rk3308-i2s-tdm";
		reg = <0x00 0xff300000 0x00 0x1000>;
		interrupts = <0x00 0x30 0x04>;
		clocks = <0x02 0x4c 0x02 0x4e 0x02 0xa4 0x02 0x6e 0x02 0x6f 0x02 0x03 0x02 0x04>;
		clock-names = "mclk_tx\0mclk_rx\0hclk\0mclk_tx_src\0mclk_rx_src\0mclk_root0\0mclk_root1";
		dmas = <0x25 0x00 0x25 0x01>;
		dma-names = "tx\0rx";
		resets = <0x02 0x89 0x02 0x8a>;
		reset-names = "tx-m\0rx-m";
		rockchip,cru = <0x02>;
		rockchip,grf = <0x4b>;
		rockchip,mclk-calibrate;
		pinctrl-names = "default";
		pinctrl-0 = <0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a>;		
		rockchip,clk-trcm = <2>;
		#sound-dai-cells = <0>;
		status = "okay";
		phandle = <0xbe>;
	};

	I2S_sound {
		status = "okay";
		compatible = "simple-audio-card";
		simple-audio-card,format = "i2s";
		simple-audio-card,name = "dummy-card";
		simple-audio-card,mclk-fs = <256>;
		simple-audio-card,bitclock-master = <&i2s_8ch_0>;
		simple-audio-card,frame-master = <&i2s_8ch_0>;
		simple-audio-card,cpu {
			sound-dai = <&i2s_8ch_0>;
		};
		master:simple-audio-card,codec {
			sound-dai = <&dummy_codec>;
		};
	};
	
 	dummy_codec: dummy-codec {
         status = "okay";
         compatible = "rockchip,dummy-codec";
		 //clocks = <0x02 0x6f>;
		 //clock-names = "mclk";
		 //pinctrl-names = "default";
		 //pinctrl-0 = <0x5a>;
         #sound-dai-cells = <0>;
    };
	

	acodec-sound {
		compatible = "rockchip,multicodecs-card";
		rockchip,card-name = "rockchip,rk3308-acodec";
		rockchip,multicodecs-card,format = "i2s";
		rockchip,mclk-fs = <0x100>;
		rockchip,cpu = <&i2s_8ch_0>;
		rockchip,codec = <0x8b>;
		status = "disabled";
		phandle = <0x13d>;		
	};

3、编译修改完成的dts文件

sudo dtc -I dts -O dtb -f rk3308-rock-pi-s.dts -o /boot/dtbs/4.4.143-65-rockchip-g58431d38f8f3/rockchip/rk3308-rock-pi-s.dtb

重启系统

sudo reboot

--------------------------------------------------------------------------------------------------------------------------------文章来源地址https://www.toymoban.com/news/detail-486390.html

如果使用I2S master模式,ROCK PI S的DACLRCK、DACBCK针脚为输出,那么在启动jacd服务后,这两个针脚应将产生到对应的频率

jackd -dalsa -dhw:1 -r44100

如果使用I2S slave模式,LRCK、BCK针脚由外部时钟提供,如果外部时钟不存在,jackd服务将不能正常启动。

接下来会产生一个问题,在I2S master模式下,只产生BCK和LRCK时钟,没有MCLK时钟,可能有些外部解码器需要提供MCLK时钟,这个问题还没搞清楚怎么办,不过有一种硬件的解决方案是使用锁相环倍频电路,不过此电路的缺点是最高支持48k采样率。

锁相环倍频电路

ROCK PI S音频开发(一)系统准备

 假如CLK-IN输入的是LRCK时钟,74HC4046的3脚就与74HC4040的256分频连接,此时CLK-OUT输出就是11.2896M,或者CLK-IN输入的是BCK时钟,74HC4046的3脚就与74HC4040的4分频连接,此时CLK-OUT输出也是11.2896M。CLK-OUT就是通过倍频生成的MCLK时钟。

--------------------------------------------------------------------------------------------------------------------------------

如果使用I2S SLAVE模式就简单了,使用有源晶振直接分频即可,参照以下电路即可得到MCLK,BCK,LRCK三个时钟信号

ROCK PI S音频开发(一)系统准备

 请注意LRCK,BCK时钟信号应与ROCK PI S的ADC_LRCK,ADC_BCK连接,而不是DAC_LRCK,DAC_BCK。

--------------------------------------------------------------------------------------------------------------------------------

到了这里,关于ROCK PI S音频开发(一)系统准备的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Raspberry Pi和双目摄像头的无人机目标识别、跟踪与实时测距系统开发

    硬件选择: Raspberry Pi 4: 它是一款功能强大的微型计算机,可以轻松地与各种传感器和摄像头配合使用。 双目摄像头: 例如选择Raspberry Pi相容的Arducam双目摄像头,双目摄像头可以捕捉到两个略有差异的图像,这对于空间测距非常重要。 算法: 使用**立体视觉(Stereo Vision)**算法

    2024年02月12日
    浏览(49)
  • 编译基于armV8架构的opencv,并在rock3a开发板上运行

    近期在基于arm开发板做图像识别任务开发时,需要用到Opencv库 之前在做rknpu开发时,开发sdk里面已经集成了opencv 但是该opencv开发包不能实现imshow/VideoCapture等函数,经过调研,决定对opencv源代码进行编译,生成armv8架构可以使用的开发包 第一部 下载opencv: opencv的下载路径为 

    2024年02月10日
    浏览(40)
  • 使用whisper生成音频字幕——前期准备

    最近我们要写一个把没有字幕的音频生成字幕的APP,前期调研的很多方式,使用whisper可以实现,这篇文章就是说一些前期准备工作,我就不自己再写一篇了,参考以下两篇文章就行了。 whisper安装下载和python环境的准备 安装过程中踩过的坑

    2024年02月11日
    浏览(44)
  • 考虑从IP、网关、DNS方面解决Linux不能上网问题,nmtui和nmcli等多种方法为Linux网卡连接配置静态IP

    本文基于Linux上CentOS 7和rocky 9版本进行演示 目录 IP地址 一.图形界面直接设置 二.nmtui命令工具 三.nm-connection-editor命令工具 四.终端nmcli命令 网关 确认虚拟机VMnet8网卡网关地址一致,一般为x.x.x.1  DNS 设置有效的DNS地址,114.114.114.114或8.8.8.8 无法上网考虑三个问题,IP地址是否有

    2024年02月12日
    浏览(40)
  • [香橙派]Orange pi zero 3命令行配网方法——建立ssh连接——Ubuntu配置WIFI自动连接

            前面我们给Orange Pi安装了Ubuntu系统,并通过MobaXterm进行了串口连接,但其实并不方便,在日常开发中,我们希望能够使用更方便的ssh连接来进行操作,因此配置网络是必要的。         本章介绍的方法无需网线、HDMI线等,使用命令行完成,配置完成即可一直使用。

    2024年02月04日
    浏览(50)
  • springboot整合pi支付开发

    pi支付流程图: 使用Pi SDK功能发起支付 由 Pi SDK 自动调用的回调函数(让您的应用服务器知道它需要发出批准 API 请求) 从您的应用程序服务器到 Pi 服务器的 API 请求以批准付款(让 Pi 服务器知道您知道此付款) Pi浏览器向用户显示付款详细信息页面,我们正在等待用户签署

    2024年02月07日
    浏览(33)
  • 【触觉智能Purple Pi OH开发板体验】开箱体验:开源主板Purple Pi RK3566 上手指北

    前段时间收到来自【电子发烧友】的一款开发板,名叫: PurplePi ,2+16G售价仅249元。它使用的芯片是rk3566,适配的OpenHarmony版本为3.2 Release 是目前最便宜的OpenHarmony标准系统开源开发板,并且软硬件全部开源,听说在300元以内无敌手,由于博主第一次接触这类开发板,在做本期

    2024年02月14日
    浏览(42)
  • node.js-连接准备

    安装nodemon 在cmd中输入npm install nodemon -g (g代表全局安装) 报错:‘nodemon‘ 不是内部或外部命令,也不是可运行的程序 需要在电脑高级设置里的环境变量中添加node.js的路径 在cmd中输入nodemon --version无误的话说明安装成功 报错 Cannot find module \\\'express\\\'(或其他模块) 解决:在

    2024年02月07日
    浏览(42)
  • 手把手教你制作一块Linux开发板(基于Planck-pi)

    攻城狮星河:Hello,各位野生钢铁侠们! 这篇文章初衷是帮助想自己制作linux小板子的小白们,文中会讲的比较基础,大佬勿喷~ 本教程会以稚晖君开源的 planck-pi 为基础,从0开始手把手教学直到成功复刻 Planck-pi复刻互助群:287810522 提示:以下是本篇文章正文内容,下面案例

    2024年02月01日
    浏览(47)
  • 香蕉派(Banana Pi) BPi-P2 Zero开源硬件物联网开发板评测

    我们从制造商处收到的样品 BPi-P2 Zero 和 BPi-P2 Maker SBC 用于本次审查的体验非常好。这些都是基于多年H3/H2+ SoC使用经验的高质量硬件实现。 优点 优良的价格和适用性 稳定且经过验证的架构 低散热 供电电源 WiFi / 蓝牙 kod 零模型 完美平衡的 Maker 模型 Banana Pi BPi-P2 的零 (H3) 和创

    2024年02月07日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包