Maix Dock之I2S Audio

您所在的位置:网站首页 gpio0是D0 Maix Dock之I2S Audio

Maix Dock之I2S Audio

#Maix Dock之I2S Audio| 来源: 网络整理| 查看: 265

测试代码

先找一个sd卡,格式化命名直接叫sd,在卡上拷贝一个wav格式的歌曲,命名7.wav 然后通过以下程序去播放。硬件上连上一个声道上即可。

from fpioa_manager import * from Maix import I2S, GPIO import audio ########### settings ############ WIFI_EN_PIN = 8 # AUDIO_PA_EN_PIN = None # Bit Dock and old MaixGo AUDIO_PA_EN_PIN = 32 # Maix Go(version 2.20) # AUDIO_PA_EN_PIN = 2 # Maixduino # disable wifi fm.register(WIFI_EN_PIN, fm.fpioa.GPIO0, force=True) wifi_en = GPIO(GPIO.GPIO0, GPIO.OUT) wifi_en.value(0) # open audio PA if AUDIO_PA_EN_PIN: fm.register(AUDIO_PA_EN_PIN, fm.fpioa.GPIO1, force=True) wifi_en = GPIO(GPIO.GPIO1, GPIO.OUT) wifi_en.value(1) # register i2s(i2s0) pin fm.register(34, fm.fpioa.I2S0_OUT_D1, force=True) fm.register(35, fm.fpioa.I2S0_SCLK, force=True) fm.register(33, fm.fpioa.I2S0_WS, force=True) # init i2s(i2s0) wav_dev = I2S(I2S.DEVICE_0) # init audio player = audio.Audio(path="/sd/7.wav") player.volume(100) # read audio info wav_info = player.play_process(wav_dev) print("wav file head information: ", wav_info) # config i2s according to audio info wav_dev.channel_config(wav_dev.CHANNEL_1, I2S.TRANSMITTER, resolution=I2S.RESOLUTION_16_BIT, cycles=I2S.SCLK_CYCLES_32, align_mode=I2S.RIGHT_JUSTIFYING_MODE) wav_dev.set_sample_rate(wav_info[1]) # loop to play audio while True: ret = player.play() if ret == None: print("format error") break elif ret == 0: print("end") break player.finish() I2S

I2S模块主要用于驱动I2S设备,k210一共有3个I2S设备,每个设备一共有4个通道,在使用前需要对引脚进行映射管理

构造函数

新建一个 I2S 对象

from Maix import I2S wav_dev = I2S(I2S.DEVICE_0) 参数

device_num UART号,使用指定的 I2S,可以通过 I2S. 按tab键来补全

返回值

返回一个I2S 对象

1.2. 通道配置函数

用于配置 I2S 通道,在此之前需要对引脚进行映射

wav_dev.channel_config(wav_dev.CHANNEL_1, I2S.TRANSMITTER, resolution=I2S.RESOLUTION_16_BIT, cycles=I2S.SCLK_CYCLES_32, align_mode=I2S.RIGHT_JUSTIFYING_MODE) i2s_dev.channel_config(channel, mode, resolution, cycles, align_mode) 参数

channel: I2S通道编号

mode: 通道传输模式,一共有接收和发送模式,录音为接受,播放为发送 resolution: 通道分辨率,即接收数据位数 cycles: 单个数据时钟数 align_mode: 通道对齐模式 设置采样率

用于配置 I2S 采样率

i2s_dev.set_sample_rate(sample_rate)

参数 sample_rate:

接收音频

使用I2S接收音频数据

audio = i2s_dev.record(points) 返回值

audio: 一个audio音频对象

发送音频

使用I2S发送音频数据

i2s_dev.play(audio) 参数

audio: 发送的音频对象

关于Audio

抽象的音频对象,该对象可以被当做参数传入也可以直接使用其方法来播放音频

模块函数 构造函数 audio.Audio(array=None, path=None, points=1024) player = audio.Audio(path="/sd/7.wav") 参数

该接口能传入一个参数,每个参数会决定不同的音频类型

array: bytearray类型的数据,可以将该数据转换为音频对象, 默认 None path: 打开的音频文件路径,目前仅支持 wav 格式, 默认 None, 注意需要标明关键字path,audio.Audio("/sd/1.wav")这样是错的!! audio.Audio(path = "/sd/1.wav") 才是正确的 points: 开辟有 points 个采样点数的音频缓冲,一个采样点大小为 32bit。为0的情况下将不开辟缓冲, 默认 1024 返回值

返回一个 Audio 对象



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3