工具与软件:
尊敬的 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
原理图:
