从零开始学习 sg200x 多核开发之 audio 功能使用

sg2002 自带 Audio ADC 和 DAC,分别位于 AUD_AINL_MIC 和 AUD_AOUTR,可用户音频输入输出。

本次功能测试基于 lichee rv nano 开发板,开发板上已经有了 1 个 LMA2718T MEMS 麦克风和 1 个 AW8010A 音频功放芯片,可以播放和录音。

驱动

sophpi 已经完成了驱动开发,在内核中已经加载。ADC/DAC 在设备树 build/boards/default/dts/cv181x/cv181x_base.dtsi 中配置如下:

	adc: adc@0300A100 {compatible = "cvitek,cv182xaadc";reg = <0x0 0x0300A100 0x0 0x100>;clocks = <&i2s_mclk 0>;clock-names = "i2sclk";clk_source = <0x04130000>; /* MCLK source is I2S3 */};dac: dac@0300A000 {compatible = "cvitek,cv182xadac";reg = <0x0 0x0300A000 0x0 0x100>;clocks = <&i2s_mclk 0>;clock-names = "i2sclk";};

在 Linux 中查看设备:

$ ls /dev/sndcontrolC0  controlC1  pcmC0D0c   pcmC1D0p   timer
  • controlC0:用于声卡控制,C0 表示声卡0,对应上文的录音设备。
  • controlC1:用于声卡控制,C1 表示声卡1,对应上文的播放设备。
  • pcmC0D0c:用于录音的 pcm 设备,最后面的 “c” 是 capture 的缩写,表示录音
  • pcmC1D0p:用于播放的 pcm 设备,最后面的 “p” 是 play 的缩写,表示放音
  • timer :定时器

ALSA 支持

在 buildroot 中使能 ALSA 相关工具。

$ buildroot-2021.05/output/cvitek_CV181X_musl_riscv64
$ make menuconfigTarget packages   --->Audio and video applications   --->alsa-utils   --->[*] alsactl[*] alsamixer[*] amixer[*] aplay/arecord	

同时修改 buildroot-2021.05/configs/cvitek_CV181X_musl_riscv64_defconfig 文件,使能 ALSA 相关工具。

BR2_PACKAGE_ALSA_UTILS=y
BR2_PACKAGE_ALSA_UTILS_ALSACTL=y
BR2_PACKAGE_ALSA_UTILS_ALSAMIXER=y
BR2_PACKAGE_ALSA_UTILS_AMIXER=y
BR2_PACKAGE_ALSA_UTILS_APLAY=y

重新编译后再次运行,可以看到 ALSA 相关工具已经安装成功。

查看录音设备

$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: cv182xaadc [cv182xa_adc], device 0: cviteka-adc 300a100.adc-0 [cviteka-adc 300a100.adc-0]Subdevices: 1/1Subdevice #0: subdevice #0

录音

首先设置麦克风音量,范围:0-24

$ amixer -Dhw:0 cset name='ADC Capture Volume' 24

设置完成后开始录音,将录音存储在 test.wav 文件中。

$ arecord -Dhw:0,0 -d 3 -r 48000 -f S16_LE -t wav test.wav & > /dev/null &

查看播放设备

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 1: cv182xadac [cv182xa_dac], device 0: cviteka-dac 300a000.dac-0 [cviteka-dac 300a000.dac-0]Subdevices: 1/1Subdevice #0: subdevice #0

播放

$ aplay -D hw:1,0 -f S16_LE test.wav

aplay 正常播放录音文件,同时扬声器发出声音。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/17650.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

20241116下载中科创达的TurboX D660核心板的Android11的SDK的详细LOG

20241116下载中科创达的TurboX D660核心板的Android11的SDK的详细LOG 2024/11/16 15:28 下载速度&#xff0c;工作日&#xff1a;20MBps/周末30MBps。 【实际情况&#xff0c;取决于您的实际网络环境】 https://docs.thundercomm.com/turbox_doc/products/smart-modules/turbox…

计算机网络 (6)物理层的基本概念

前言 计算机网络物理层是OSI模型&#xff08;开放式系统互联模型&#xff09;中的第一层&#xff0c;也是七层中的最底层&#xff0c;它涉及到计算机网络中数据的物理传输。 一、物理层的主要任务和功能 物理层的主要任务是处理物理传输介质上的原始比特流&#xff0c;确保数据…

大模型(LLMs)微调篇

大模型&#xff08;LLMs&#xff09;微调篇 一、如果想要在某个模型基础上做全参数微调&#xff0c;究竟需要多少显存&#xff1f; 一般 n B的模型&#xff0c;最低需要 16-20 n G的显存。&#xff08;cpu offload基本不开的情况下&#xff09; 二、为什么SFT之后感觉LLM傻了…

企业网络链路聚合、数据抓包、远程连接访问实验

前言&#xff1a; 随着信息技术的飞速发展和企业业务的不断扩大&#xff0c;企业网络面临着越来越多的挑战。其中&#xff0c;网络带宽、数据安全和远程访问等问题尤为突出。为了解决这些问题&#xff0c;我们进行了本次企业网络链路聚合、数据抓包和远程连接访问的实验。 链路…

移除元素(leetcode 27)

给定一个数组&#xff0c;在数组中删除等于这个目标值的元素&#xff0c;然后返回新数组的大小 数组理论&#xff1a; 数组是一个连续的类型相近的元素的一个集合&#xff0c;数组上的删除是覆盖&#xff0c;只能由后面的元素进行覆盖&#xff0c;而不能进行真正意义上的地理位…

前端面试笔试(三)

目录 一、数据结构算法等综合篇 二、代码输出篇 1.yield与生成器函数 2.this指向有关 3.instanceof 与Array.isArray 4.继承class cls extends Array&#xff0c;调用里面的sum方法 三、css、html、JavaScript篇 1.哪项不能提高dom元素操作效率&#xff1f; 2.contente…

7.高可用集群架构Keepalived双主热备原理

一. 高可用集群架构Keepalived双主热备原理 (1)主机+备机keepalived配置(192.168.1.171) ! Configuration File for keepalivedglobal_defs {# 路由id:当前安装keepalived节点主机的标识符,全局唯一router_id keep_101 } #计算机节点(主机配置) vrrp_instance VI_1 {</

IntelliJ IDEA 2023.2x——图文配置

IntelliJ IDEA 2023.2——配置说明 界面如下图所示 : 绿泡泡查找 “码猿趣事” 查找【idea99】 IntelliJ IDEA 的官方下载地址 IntelliJ IDEA 官网下载地址 一路上NEXT 到结尾&#xff1a; 继续NEXT 下一步:

Linux网络:守护进程

Linux网络&#xff1a;守护进程 会话进程组会话终端 守护进程setsiddaemon 在创建一个网络服务后&#xff0c;往往这个服务进程是一直运行的。但是对于大部分进程来说&#xff0c;如果退出终端&#xff0c;这个终端上创建的所有进程都会退出&#xff0c;这就导致进程的生命周期…

Linux Android 正点原子RK3568替换开机Logo完整教程

0.这CSDN是有BUG吗?大家注意:表示路径的2个点号全都变成3个点号啦! 接下来的后文中,应该是2个点都被CSDN变成了3个点: 1.将这两个 bmp 图片文件720x1280_8bit拷贝到内核源码目录下,替换内核源码中默认的 logo 图片。注意:此时还缺少电量显示图片 2.编译内核 make d…

安卓开发作业

整体效果: 安卓小作业 [TOC](页面配置) 整体框架有4个fragment页面,聊天,朋友,发现,设置. 配置如下: bash <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" xm…

2024-ISCTF WP

Web 25时晓山瑞希生日会 经典 HTTP 头伪造&#xff0c;伪造流程如下&#xff1a; User-Agent: Project Sekai //伪造UA头 X-Forwarded-For:127.0.0.1 //伪造本地用户 伪造日期是本题最大的坑点&#xff0c;一直在想怎么伪造 25 时&#xff0c;没想到是二刺螈 搜索得知 …

VSCode+ESP-IDF开发ESP32-S3-DevKitC-1(1)开发环境搭建

VSCodeESP-IDF开发ESP32-S3-DevKitC-1&#xff08;1&#xff09;开发环境搭建 1.开发环境搭建&#xff08;安装ESP-IDF&#xff09;2.开发环境搭建&#xff08;安装VS Code&#xff09;3.开发环境搭建&#xff08;VSCode中安装ESP-IDF插件及配置&#xff09; 1.开发环境搭建&am…

二维数组操作

代码结构 main.c #include <stdio.h> #include <stdlib.h>#define LEN 100int main() {//通过指针引用多维数组# if 1//定义多维数组int a[3][5] {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};int row sizeof(a) /sizeof(a[0]);int colum sizeof(a[0]) / sizeof(a[0…

使用Service Worker实现离线优先的Web应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Service Worker实现离线优先的Web应用 使用Service Worker实现离线优先的Web应用 使用Service Worker实现离线优先的Web应用…

算法编程题-区间最小数乘区间和的最大值,基于数组中的数字拼接可得的小于目标值的最大数

算法编程题-区间最小数乘区间和的最大值&#xff0c;基于数组中的数字拼接可得的小于目标值的最大数 区间最小数乘区间和的最大值原题描述思路简述代码实现复杂度分析 基于数组中的数字拼接可得的小于目标值的最大数原题描述思路简述代码实现复杂度分析 参考 这里分享两道字节面…

华为Ensp模拟器配置RIP路由协议

目录 RIP路由详解&#xff1a;另一种视角解读 1. RIP简介&#xff1a;轻松理解基础概念 2. RIP的核心机制&#xff1a;距离向量的魅力 3. RIP的实用与局限 RIP配置实验 实验图 ​编辑 PC的ip配置 RIP配置步骤 测试 结语&#xff1a;RIP的今天与明天 RIP路由详解&…

数字化那点事:一文读懂物联网

一、物联网是什么&#xff1f; 物联网&#xff08;Internet of Things&#xff0c;简称IoT&#xff09;是指通过网络将各种物理设备连接起来&#xff0c;使它们可以互相通信并进行数据交换的技术系统。通过在物理对象中嵌入传感器、处理器、通信模块等硬件&#xff0c;IoT将“…

GoFly框架使用vue flow流程图组件说明

Vue Flow组件库是个高度可定制化的流程图组件&#xff0c;可用于工作流设计、流程图及图表编辑器、系统架构展示。可以根据自己的需求&#xff0c;设计独特的节点和边&#xff0c;实现个性化的流程图展示。这不仅增强了应用的视觉效果&#xff0c;也使得用户交互更为直观和流畅…

VS2022-创建智能酒店门锁DLL动态链接库——develop hotel smart locker dynamic

一、自主生产酒店智能门锁 1. 定制化能力&#xff1a;自主生产的品牌能够根据酒店的特定需求进行定制&#xff0c;例如特殊的外观设计、功能模块的选择等&#xff0c;更好地满足酒店的个性化要求。 2. 成本控制&#xff1a;自主生产可以更有效地控制成本&#xff0c;从原材料…