Ron_Tseng 2025-03-22 22:49 采纳率: 0%
浏览 17

Micphone 收音無效 (ADC ES7243E)

以下是我的代碼
在執行時顯示出來的音訊值都為0
請問要如何修正以下的代碼讓裝置可以正常作動

I2C Scan: [17, 25, 32, 41, 56]
2
4096
audio_data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0........]
rms: 0.0
db: None

from machine import Pin, I2S, I2C
import math

def calculate_decibel(audio_data):
    print("audio_data: ", audio_data)
    sum_squares = sum(sample ** 2 for sample in audio_data)
    rms = math.sqrt(sum_squares / len(audio_data))

    if rms == 0.0:
        print("rms:", rms)
    else:
        reference_voltage = 3.3
        db = 20 * math.log10(rms / reference_voltage)
        return db

i2s = I2S(
    0,          # I2S 编号
    sck=p0,           # 时钟引脚 I2S_BLCK
    ws=p38,           # 字选择引脚
    sd=p39,           # 数据引脚
    mode=I2S.RX,      # 接收模式
    bits=16,          # 16位数据
    format=I2S.MONO,  # 单声道
    rate=44100,         # 采样率 16kHz 16000
    ibuf=4096           # 缓冲区大小
)

i2c = I2C(0, scl=p48, sda=p47, freq=400000)
i2c.writeto(17, b'\x15\x10')

audio_buffer = bytearray(4096)
i2s.readinto(audio_buffer)
samples = [int.from_bytes(audio_buffer[i:i+2], 'little', True) for i in range(0, len(audio_buffer), 2)]
current_db = calculate_decibel(samples)
print("db:", current_db)
  • 写回答

3条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-03-22 22:49
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    从您提供的代码中可以看出,您正在使用I2S(Inter-IC Sound)和I2C(Inter-Integrated Circuit)来读取音频数据并计算分贝值。 根据您的代码以及输出结果,音频数据都为0的问题可能出现在读取音频数据的部分。建议您检查以下几个方面:
    1. 确保I2S接口的引脚连接正确,包括时钟引脚(I2S_BLCK)、字选择引脚(ws)和数据引脚(sd)。
    2. 检查I2S配置参数是否正确,包括采样率(rate)、数据位数(bits)等。
    3. 检查I2S.readinto()方法是否正确调用,确保能够正确读取音频数据。
    4. 确保I2C对象已正确初始化,并且写入操作没有报错。 另外,您可以尝试将audio_buffer中的数据打印出来,查看实际读取到的音频数据是否正确。最后,您也可以尝试使用示波器或其他工具来检查音频数据在物理层面上是否正常。 如果需要进一步的帮助,请提供更多的代码细节或者具体的错误信息,这样我可以更好地帮助您解决问题。
    评论

报告相同问题?

问题事件

  • 创建了问题 3月22日