工具与软件:
尊敬的 TI 团队:
我们尝试在 TLV320AIC3120中产生蜂鸣声、但无法获得任何蜂鸣声输出。
您能帮助我们调试这个问题吗? 请检查为生成蜂鸣声而完成的 PLL 配置和寄存器设置。
MCLK:18.518 MHz
TLV320AIC3120处于从模式。
蜂鸣生成寄存器写入脚本
#!/bin/bash # I2C bus and device address I2C_BUS=1 # Update this to your specific I2C bus if necessary I2C_ADDR=0x18 # Helper function to write to a register write_register() { local reg=$1 local val=$2 echo "Writing to register 0x$reg: 0x$val" i2cset -y $I2C_BUS $I2C_ADDR 0x$reg 0x$val } # Helper function to switch page switch_page() { local page=$1 echo "Switching to page $page" write_register 00 $page } # Start configuration echo "Starting I2C configuration for TLV320AIC3120..." # Page 0: Reset the codec switch_page 00 write_register 01 01 # Reset sleep 0.01 # Allow time for reset # Page 0: Clock configuration write_register 04 03 # Clock source select write_register 05 91 # PLL power-up, P=1, R=1 write_register 06 05 # J=5 write_register 07 08 # D=2300 MSB write_register 08 FC # D=2300 LSB sleep 0.01 # Allow PLL to stabilize # Configure NDAC, MDAC, DOSR write_register 0B 82 # NDAC = 2 write_register 0C 8E # MDAC = 14 write_register 0D 00 # DOSR MSB = 0 write_register 0E 48 # DOSR LSB = 0x48 # Configure NADC, MADC, AOSR write_register 12 87 # NADC = 7 write_register 13 84 # MADC = 4 write_register 14 48 # AOSR = 72 (0x48) # Miscellaneous settings write_register 1B 20 # Codec interface control write_register 3C 19 # DAC processing block # PRB 25 # Switch to Page 8 for additional configuration switch_page 08 write_register 01 04 # Adaptive filter # Switch to Page 1 for headphone driver setup switch_page 01 write_register 1F 04 # Initial headphone driver configuration write_register 21 4E # Codec secondary interface control write_register 23 40 # Route DAC to HPOUT via mixer write_register 28 06 # Enable HPOUT driver write_register 1F 82 # Power up HPOUT output driver write_register 24 92 # Set analog volume for HPOUT # Switch to Page 0 for beep settings switch_page 00 write_register 40 0C #volume write_register 0B 02 #Power down NDAC write_register 47 80 # Enable beep generator write_register 4A 12 # Beep-Length Middle Bits write_register 4B C0 # Beep Length LSB write_register 4C 5A # Beep Sin(x) MSB write_register 4D 82 # Beep Sin(x) LSB write_register 4E 5A # Beep Cos(x) MSB write_register 4F 82 # Beep Cos(x) LSB write_register 0B 82 # NDAC = 2 for beep #NDAC Power up write_register 40 00 # DAC Volume Control write_register 3F B6 # DAC Data-Path Setup write_register 41 00 # DAC Volume Control #0dB echo "I2C configuration complete. Check HPOUT for beep signal."
适用于正弦、余弦和蜂鸣长度的 Python 脚本:
import numpy as np def calculate_values(Fin, Fs, Cycle): sine_value = np.round(np.sin(2 * np.pi * Fin / Fs) * 2**15) cosine_value = np.round(np.cos(2 * np.pi * Fin / Fs) * 2**15) beep_length = np.floor(Fs * Cycle / Fin) print(beep_length); sine_hex = hex(int(sine_value)) cosine_hex = hex(int(cosine_value)) beep_length_hex = hex(int(beep_length)) return sine_hex, cosine_hex, beep_length_hex # Example usage Fin = 1000 # Input frequency Fs = 48000 # Sampling frequency Cycle = 100 # Number of cycles sine_hex, cosine_hex, beep_length_hex = calculate_values(Fin, Fs, Cycle) print(f"Sine: {sine_hex}") print(f"Cosine: {cosine_hex}") print(f"Beep Length: {beep_length_hex}") ##Sine = dec2hex(round(sin(2*π*Fin/Fs)*2^15)) ##Cosine = dec2hex(round(cos(2*π*Fin/Fs)*2^15)) ##Beep Length = dec2hex(floor(Fs*Cycle/Fin))
PLL 配置:
e2e.ti.com/.../TLV320AIC3120_5F00_PLL_5F00_Cal_5F00_v1.xlsx
原理图: