RK809-code切换不同模式

author

daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主

daisy.skye_嵌入式,Linux,Qt-CSDN博客daisy.skye擅长嵌入式,Linux,Qt,等方面的知识https://blog.csdn.net/qq_40715266?type=blog

默认模式下音和收音都是关闭状态

130|rk3568_r:/ # tinymix -D 1
Mixer name: 'rockchip,rk809-codec'
Number of controls: 2
ctl     type    num     name                             value

0       ENUM    1       Playback Path                    OFF
1       ENUM    1       Capture MIC Path                 MIC OFF
当打开免提录音的时候

 Capture MIC Path 由原来的Main OFF切换到Main Mic

rk3568_r:/ # tinymix -D 1
Mixer name: 'rockchip,rk809-codec'
Number of controls: 2
ctl     type    num     name                            value

0       ENUM    1       Playback Path                   OFF
1       ENUM    1       Capture MIC Path                Main Mic

static int rk817_capture_path_put(struct snd_kcontrol *kcontrol,
				  struct snd_ctl_elem_value *ucontrol)
{
	struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
	struct rk817_codec_priv *rk817 = snd_soc_component_get_drvdata(component);
	long int pre_path;

	if (rk817->capture_path == ucontrol->value.integer.value[0]) {
		dev_dbg(component->dev, "%s:capture_path is not changed!\n",
			__func__);
		return 0;
	}
pre_path = rk817->capture_path;
	rk817->capture_path = ucontrol->value.integer.value[0];

	DBG("%s : set capture_path %ld, pre_path %ld\n", __func__,
	    rk817->capture_path, pre_path);

	if (rk817->capture_path != MIC_OFF)
		clk_prepare_enable(rk817->mclk);
	else
		clk_disable_unprepare(rk817->mclk);

	switch (rk817->capture_path) {
	case MIC_OFF:
		if (pre_path != MIC_OFF)
			rk817_codec_power_down(component, RK817_CODEC_CAPTURE);
		break;
	case MAIN_MIC://看这里,代码会执行下面的参数
		if (pre_path == MIC_OFF)
			rk817_codec_power_up(component, RK817_CODEC_CAPTURE);

		if (rk817->adc_for_loopback) {
			/* don't need to gain when adc use for loopback */
			snd_soc_component_update_bits(component,
						      RK817_CODEC_AMIC_CFG0,
						      0xf,
						      0x0);
			snd_soc_component_write(component,
						RK817_CODEC_DMIC_PGA_GAIN,
						0x66);
			snd_soc_component_write(component,
						RK817_CODEC_DADC_VOLL,
						0x00);
			snd_soc_component_write(component,
						RK817_CODEC_DADC_VOLR,
						0x00);
			break;
		}
……}
}

当免提喇叭开启时 ,Playback Path会从OFF状态切换到SPK状态,对应的代码位置也会切换到函数 rk817_playback_path_put

rk3568_r:/ # tinymix -1
Mixer name: 'rockchip,rk809-codec'
Number of controls: 2
ctl     type    num     name                           value

0       ENUM    1       Playback Path                   SPK
1       ENUM    1       Capture MIC Path                MIC OFF

### RK3588与RKNN硬件规格 RK3588是一款由瑞芯微电子推出的高性能SoC,采用八核ARM架构设计,支持多种AI加速引擎。该芯片内置NPU(神经网络处理单元),即RKNN,专为高效运行人工智能算法而优化[^1]。 具体到RKNN部分: - **计算能力**:提供高达6TOPS的算力,适用于图像识别、语音处理等多种应用场景。 - **兼容框架**:支持TensorFlow Lite、ONNX Runtime等多个主流机器学习框架转换后的模型部署。 - **功耗管理**:通过动态电压频率调节技术实现低功耗模式切换,在保证性能的同时降低能耗。 对于开发者而言,利用VS Code配合特定插件可以方便地调试基于此平台的应用程序,如使用串行监视器监控设备状态变化等操作。 ### 使用教程概览 为了帮助用户更好地理解和应用RK3588及其集成的RKNN模块,官方提供了详尽的学习资料和技术文档。这些资源覆盖了从基础入门到最后项目实战各个环节的内容,确保不同层次的技术人员都能找到适合自己的指导信息。 #### 安装环境准备 建议先安装好必要的工具链,比如RKDevTool用于刷写固件以及配置启动参数;同时准备好合适的Uboot版本以确保系统的稳定性和功能性。 ```bash sudo apt-get install rkdeveloptool ``` #### 编程接口介绍 针对想要深入探索如何调用RKNN API进行推理运算的需求者来说,可以通过阅读API手册获取详细的函数定义说明和实例代码片段。这有助于快速上手并构建自定义的人工智能解决方案。 ### 开发文档下载途径 访问官方网站或GitHub仓库能够获得最新的SDK包、驱动源码以及其他辅助性的参考资料链接。通常情况下,这类页面会按照产品型号分类整理相关内容,便于查找所需文件。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值