音频编码ES8311调试笔记(三)

文章目录

    • 标准模式下ES8311寄存器初始化
      • 初始化第一阶段(因为是通用组件,实际上很多设置对立创S3的开发板来说没用)
      • 初始化第二阶段
        • 为内部MCLK设置时钟源 Select clock source for internal mclk
      • 设置输出的功率和滤波
        • 设置内部参考信号set internal reference signal (ADCL + DACR)
        • 打开ES8311硬件开关
        • 二阶段分析汇总
    • 标准模式下ES8311寄存器应用
      • 设置音量
      • 设置音频采样率
      • 向ES8311写入音频数据
    • 上文用到的寄存器说明(来自顺芯官网下载的手册)
      • 寄存器 0X00 – 复位,默认值 0001 1111
      • 寄存器 0X01 – 时钟管理,默认值 0000 0000
      • 寄存器 0X02 – 时钟管理,默认值 0000 0000
      • 寄存器 0X03 – 时钟管理,默认值 0001 0000
      • 寄存器 0X04 – 时钟管理,默认值 0001 0000
      • 寄存器 0X05 – 时钟管理,默认值 0000 0000
      • 寄存器 0X06 – 时钟管理,默认值 0000 0011
      • 寄存器 0X07 – 时钟管理,默认值 0000 0000
      • 寄存器 0X08 – 时钟管理,默认值 1111 1111
      • 寄存器 0X09 – SDP,默认值 0000 0000
      • 寄存器 0X0A – SDP,默认值 0000 0000
      • 寄存器 0X0B – 系统,默认值 0000 0000
      • 寄存器 0X0C – 系统,默认值 0010 0000
      • 寄存器 0X10 – 系统,默认值 0001 0011
      • 寄存器 0X11 – 系统,默认值 0111 1100
      • 寄存器 0X13 – 系统,默认值 0100 0000
      • 寄存器 0X16 – ADC,默认值 0000 0100
      • 寄存器 0X1B – ADC,默认值 0000 1100
      • 寄存器 0X1C – ADC,默认值 0100 1100
      • 寄存器 0X31 – DAC,默认值 0000 0000
      • 寄存器 0X32 – DAC,默认值 0000 0000
      • 寄存器 0X33 – DAC,默认值 0000 0000
      • 寄存器 0X34 – DAC,默认值 0000 0000
      • 寄存器 0X35 – DAC,默认值 0000 0000
      • 寄存器 0X36 – DAC,默认值 0000 0000
      • 寄存器 0X37 – DAC,默认值 0000 1000
      • 寄存器 0X38 – DAC 等效器,默认值 0000 0000
      • 寄存器 0X39 – DAC 等效器,默认值 0000 0000
      • 寄存器 0X44 – GPIO,默认值 0000 0000

es311这个芯片有带寄存器说明的数据手册,但设置也有很多搞不懂,只是通过程序的分析,得到些对官方新组件esp_codec_dev修改的经验,为重新编写自用组件打好基础。

标准模式下ES8311寄存器初始化

初始化第一阶段(因为是通用组件,实际上很多设置对立创S3的开发板来说没用)

0x44,0x08 //按理说这个地方不用设,但官方就是设了个I2C_WL位,具体也没找到解释。
delay
0x44,0x08 //延时一段时间后又设了一次
0x01,0x30 //开MCLK和BCLK时钟控制
0x02,0x00 //与分频相关的设置
0x03,0x10 //ADC电路中设置,和采样有关的设置,ADC_OSR=16,看起来是A/D转换的,按理说用不上
0x16,0x24 //还是ADC的设置,设置成标准音频时钟,24dB
0x04,0x10 //和0x03寄存器类似,DAC_OSR=16,这个对输出有用,官方用的16,代表16 x 采样率
0x05,0x00 //和采样时钟分频有关的设置,这块通过查表解决,不用单独计算
0x0b,0x00 //三个上电阶段的时长,根据数值,参考LRCK频率得到值
0x0c,0x1f //和0x0b一起控制三个上电阶段,1f表示C上电时段值是31
0x10,0x1f //模拟电路上的一些电压值设置
0x11,0x7f //同部设置用,不知道干什么的
0x00,0x80 //打开电源,这个电源打开和音响电路中时序电源类似

然后读取0x00寄存器,根据配置变量中的工作模式,配置第6位的值,重新写回寄存器0x00,同时向串口输出ES8311工作在主机模式还是从机模式的提信息

初始化第二阶段

为内部MCLK设置时钟源 Select clock source for internal mclk

0x01,0x3f //选择硬件的MCLK引脚并设置是否反相
0x06,原值 //设置硬件的BLCK引脚是否反相

设置输出的功率和滤波

0x13,0x10 //位4设置 1-驱动耳机 0-线路输出
0x1b,0x0a //和滤波有关的设置
0x1c,0x6a //和滤波有关的设置

设置内部参考信号set internal reference signal (ADCL + DACR)

0x44,0x58 //没搞懂

打开ES8311硬件开关

这个根据硬件来,立创实战派S3上用了IO扩展口进行控制,单独用了个函数,没用主控的引脚

二阶段分析汇总

0x01寄存器的位7根据配置文件的use_mclk成员值决定,
和硬件有关,0-从MCLk引脚接入,1-从BCLK引脚接入;
位6根据配置文件的invert_mclk成员值决定,0-不反相,1-反相;
位0-位7全部写入1,打开各个时钟。

0x06寄存器的位5根据配置文件的invert_sclk成员值决定,为了不影响其他配置,先读寄存器值,再赋值,0-不反相,1-反相;
这里要注意,如果外部MCLK信号是从BCLK引脚引入,根据手册中的备注,此处反相应该是针对硬件引脚进行反相,也就是从BCLK引脚进来的信号进行反相。

立创实战派S3上开发板上,0x01高两位都是0,所以0x00寄存器写入0x3f,相比较初始化第一阶段,增加了打开低4位的时钟。因为ES8311没用MIC,ADC电路没有,个人觉得0x15就可以了,待验证。0x06寄存器不需改变,这步觉得也可以优化掉。

寄存器0x1b,0x1c起滤波作用,具体设置用官方的,自己也没内部电路来参考,但看起来是ADC电路的,和我要调试的输出没什么关系,应该可以优化掉。

寄存器0x44这时又进行赋值,这是根据no_dac_ref成员值设置。官方手册定义是当记录双通道数据时:0-右通道填充DAC输出 1-右通道保持空白。跟进程序和寄存器说明时,为0时,官方使用了0x50,对应ADCDAT_SEL 6:4的值5(adc+dacr),再加上I2C_WL值0x08后写入寄存器,具体作用不详,感觉是做回声消除的,待进一步测试时理解。为1时,官方使用了0x00,对应的ADCDAT_SEL 6:4的值0,应该是两个通道全用ADC输入,与结构体中的定义左声道adc输入加右声道dac输出并不相符。
问了下DEEPSEEK
但关于寄存器的位功能,得到的答案是这样的 :

位域名称功能描述0X58 (01011000)0X08 (00001000)
7GPIO1_SELGPIO1功能选择0 (GPIO)0 (GPIO)
6GPIO0_SELGPIO0功能选择1 (IRQ)0 (GPIO)
5:4REF_SEL[1:0]参考电压源选择01(DACR+ADCL)
3MICBIAS_EN麦克风偏置电压使能1 (开启)0 (关闭)
2:0Reserved保留位000000

这段寄存器解释与官网下载的手册表述的不一样,很奇怪,看起来DEEPSEEK提供的位3功能更符合程序,如果哪位能解惑在此先谢谢!

最后,ES8311上有个总允许开关引脚,控制后一级功放芯片,官方组件中从主控芯片上定义一个引脚控制,因此有个初始化引脚过程,这里就不分析了。实际应用时,这段我根据立创的io扩展电路换了程序。由于这段内容是组件中初始化设备较为核心的内容,修改代表着组件通用性也没那么好,还是得自己研究透来改。

标准模式下ES8311寄存器应用

设置音量

和寄存器0x32有关

具体回调函数指向了es8311_set_vol(),这其中涉及一些数值转化

另外还有寄存器0x31,可以设置静音,0x33-0x39也和DAC输出有关,具体没再研究,先把找到的注释留存参考

音频增益概述:

/*
 *                           |----------------Software Gain--------------|--Hardware Gain--|
 *
 *  |--------------------|   |--------------------|   |------------------|   |---------|   |----------------|
 *  | Digital Audio Data |-->| Audio Process Gain |-->| Codec DAC Volume |-->| PA Gain |-->| Speaker Output |
 *  |--------------------|   |--------------------|   |------------------|   |---------|   |----------------|
*/

最终的扬声器音量同时受到软件增益和硬件增益的影响。
软件增益(可调节):
音频处理增益:由音频后处理器提供的增益,例如自动电平控制(ALC)、自动增益控制(AGC)、动态范围压缩(DRC)目标最大增益。
编解码器数模转换器音量:音频编解码器数模转换器的音量控制,例如 ES8311 数模转换器音量控制寄存器。
硬件增益(固定):
功率放大器增益:扬声器功率放大器的增益,由硬件电路决定。
扬声器播放路径增益(音频处理增益 + 编解码器数模转换器音量 + 功率放大器增益)需要确保扬声器功率放大器的输出不饱和且不超过扬声器的额定功率。我们将最大路径增益定义为 MAX_GAIN。为确保扬声器功率放大器的输出不饱和,MAX_GAIN 可以通过以下公式简单计算得出:
MAX_GAIN = 20 * log(Vpa/Vdac)
Vpa:功率放大器电源电压
Vdac:编解码器数模转换器电源电压
例如,Vpa = 5V,Vdac = 3.3V,那么 MAX_GAIN = 20 * log (5/3.3) = 3.6 分贝。
如果扬声器的额定功率低于扬声器功率放大器的最大功率,MAX_GAIN 应根据扬声器的额定功率来定义。

设置音频采样率

具体回调函数指向es8311_set_fs(),里面还有几个回调函数,涉及一些计算

先给寄存器0x09,0x0a赋值
再依次根据参数给寄存器0x02、0x05、0x03、0x04、0x07、0x08、0x06赋值

向ES8311写入音频数据

这里和ES8311本身没有关系,是通过控制主控的I2S进行数据发送,涉及I2S的回调函数
具体看I2S的初始化及配置参数,与ES8311的寄存器没什么关系。

官方的ES8311还有挂起,关闭,设置MIC,ADC输入的一些函数,可以参考调用。

上文用到的寄存器说明(来自顺芯官网下载的手册)

寄存器 0X00 – 复位,默认值 0001 1111

位名称位描述
CSM_ON 7芯片当前状态机控制
0 – 状态机关闭(默认)
1 – 状态机开启
MSC 60 – 从机、串行端口模式(默认)
1 – 主机、串行端口模式
SEQ_DIS 5上电顺序控制
0 – 上电顺序使能(默认)
1 – 禁用上电顺序
RST_DIG 4数字复位
0 – 不复位
1 – 复位数字部分,但保留控制端口模块(默认)
RST_CMG 3时钟管理模块复位
0 – 不复位
1 – 复位时钟管理模块(默认)
RST_MST 2主模块复位
0 – 不复位
1 – 复位主模块(默认)
RST_ADC_DIG 1ADC 数字模块复位
0 – 不复位
1 – 复位 ADC 数字模块(默认)
RST_DAC_DIG 0DAC 数字模块复位
0 – 不复位
1 – 复位 DAC 数字模块(默认)

寄存器 0X01 – 时钟管理,默认值 0000 0000

位名称位描述
MCLK_SEL 7MCLK 输入选择
0 – 来自 MCLK(默认)
1 – 来自 BCLK
MCLK_INV 6MCLK 反相控制
0 – 正常 MCLK(默认)
1 – MCLK 反相
MCLK_ON 5MCLK 输入控制
0 – MCLK 关闭(默认)
1 – MCLK 打开
BCLK_ON 4SDP 位时钟控制
0 – BCLK 关闭(默认)
1 – BCLK 打开
CLKADC_ON 3ADC 数字时钟控制
0 – clk_adc 关闭(默认)
1 – clk_adc 打开
CLKDAC_ON 2DAC 数字时钟控制
0 – clk_dac 关闭(默认)
1 – clk_dac 打开
ANACLKADC_ON 1ADC 模拟时钟控制
0 – anaclk_adc 关闭
1 – anaclk_adc 打开(默认)
ANACLKDAC_ON 0DAC 模拟时钟控制
0 – anaclk_dac 关闭
1 – anaclk_dac 打开(默认)

寄存器 0X02 – 时钟管理,默认值 0000 0000

位名称位描述
DIV_PRE 7:5预分频 MCLK 控制
Mclk_prediv = mclk / (DIV_PRE + 1)
MULT_PRE 4:3
0 – dig_mclk = mclk_prediv * 1(默认)
1 – dig_mclk = mclk_prediv * 2
2 – dig_mclk = mclk_prediv * 4
3 – dig_mclk = mclk_prediv * 8
PATHSEL 2时钟倍频器路径选择
0 – 无 DFF 路径(默认)
1 – DFF 路径
DELYSEL 1:0时钟倍频器延迟单元选择
0 – 5ns(默认)
1 – 10ns
2 – 15ns
3 – 15ns

寄存器 0X03 – 时钟管理,默认值 0001 0000

位名称位描述
ADC_FSMODE 6ADC 采样率模式
0 – 单速(默认)
1 – 双速
ADC_OSR 5:0ADC Δ-Σ过采样率 注:ΣΔ是高精度、低噪声 ADC/DAC 的主流技术
0~14 – 不使用
15 – 60 * fs (ss) / (ds 不支持)
16 – 64 * fs (ss) / 32 * fs (ds)(默认)
31 – 124 * fs (ss) / 62 * fs (ds)
32 – 128 * fs (ss) / 64 * fs (ds)
63 – 252 * fs (ss) / 126 * fs (ds)

寄存器 0X04 – 时钟管理,默认值 0001 0000

位名称位描述
DAC_OSR 6:0DAC 过采样率
0~15 – 不使用
16 – 64 * fs(默认)
17 – 68 * fs
32 – 128 * fs
64 – 256 * fs
127 – 508 * fs

寄存器 0X05 – 时钟管理,默认值 0000 0000

位名称位描述
DIV_CLKADC 7:4ADC_MCLK 时钟分频器
adc_mclk = dig_mclk / (DIV_CLKADC + 1)
DIV_CLKDAC 3:0DAC_MCLK 时钟分频器
dac_mclk = dig_mclk / (DIV_CLKDAC + 1)

寄存器 0X06 – 时钟管理,默认值 0000 0011

位名称位描述
BCLK_CON 6主模式下 BCLK 输出控制
0 – 正常持续的 BCLK 输出(默认)
1 – 数据传输完成后停止 BCLK 输出
BCLK_INV 5BCLK 反相
0 – 正常(默认)
1 – BCLK 反相
DIV_BCLK 4:0主模式下 BCLK 分频器
0~19 – MCLK / (DIV_BCLK + 1)(默认值为 3)
20 – MCLK / 22
21 – MCLK / 24
22 – MCLK / 25
23 – MCLK / 30
24 – MCLK / 32
25 – MCLK / 33
26 – MCLK / 34
27 – MCLK / 36
28 – MCLK / 44
29 – MCLK / 48
30 – MCLK / 66
31 – MCLK / 72
注:“MCLK”在此处指“MCLK 引脚”,当 MCLK_SEL = 0 时;指“BCLK 引脚”,当 MCLK_SEL = 1 时(参考寄存器 0x01[7])

寄存器 0X07 – 时钟管理,默认值 0000 0000

位名称位描述
TRI_BLRCK 5 BCLK/LRCK 三态控制0 – 正常(默认)
1 – BCLK 和 LRCK 三态输出
TRI_ADCDAT 4ADCDAT 三态控制
0 – 正常(默认)
1 – ADCDAT 三态输出
DIV_LRCK[11:8] 3:0主 LRCK 分频器高位
LRCK(主)= MCLK / (LRCK_DIV + 1)
注:“MCLK”在此处指“MCLK 引脚”,当 MCLK_SEL = 0 时;指“BCLK 引脚”,当 MCLK_SEL = 1 时(参考寄存器 0x01[7])

寄存器 0X08 – 时钟管理,默认值 1111 1111

位名称位描述
DIV_LRCK[7:0] 7:0主 LRCK 分频器低位
LRCK(主)= MCLK / (LRCK_DIV + 1)
DIV_LRCK = 0 时,LRCK 逻辑电平为高
注:“MCLK”在此处指“MCLK 引脚”,当 MCLK_SEL = 0 时;指“BCLK 引脚”,当 MCLK_SEL = 1 时(参考寄存器 0x01[7])

寄存器 0X09 – SDP,默认值 0000 0000

位名称位描述
SDP_IN_SEL 7SDP 输入数据选择
0 – 左声道数据到 DAC(默认)
1 – 右声道数据到 DAC
SDP_IN_MUTE 6SDP 输入静音
0 – 不静音(默认)
1 – 静音
SDP_IN_LRP 5I2S,左对齐或右对齐模式:
0 – 左右声道正常极性(默认)
1 – 左右声道极性反转
DSP/PCM 模式:0 – MSB 在 LRCK 上升沿后的第二个 BCLK 上升沿可用(默认)
1 – MSB 在 LRCK 上升沿后的第一个 BCLK 上升沿可用
SDP_IN_WL 4:20 – 24 位串行音频数据字长(默认)
1 – 20 位串行音频数据字长
2 – 18 位串行音频数据字长
3 – 16 位串行音频数据字长
4 – 32 位串行音频数据字长
SDP_IN_FMT 1:00 – I2S 串行音频数据格式(默认)
1 – 左对齐串行音频数据格式
2 – 保留
3 – DSP/PCM 模式串行音频数据格式

寄存器 0X0A – SDP,默认值 0000 0000

位名称位描述
SDP_OUT_MUTE 6SDP 输出静音
0 – 不静音(默认)
1 – 静音
SDP_OUT_LRP 5I2S,左对齐或右对齐模式:
0 – 左右声道正常极性(默认)
1 – 左右声道极性反转
DSP/PCM 模式:0 – MSB 在 LRCK 上升沿后的第二个 BCLK 上升沿可用(默认)
1 – MSB 在 LRCK 上升沿后的第一个 BCLK 上升沿可用
SDP_OUT_WL 4:20 – 24 位串行音频数据字长(默认)
1 – 20 位串行音频数据字长
2 – 18 位串行音频数据字长
3 – 16 位串行音频数据字长
4 – 32 位串行音频数据字长
SDP_OUT_FMT 1:00 – I2S 串行音频数据格式(默认)
1 – 左对齐串行音频数据格式
2 – 保留
3 – DSP/PCM 模式串行音频数据格式

寄存器 0X0B – 系统,默认值 0000 0000

位名称位描述
PWRUP_A 7:3上电阶段 A
031:21us232ms(LRCK=48kHz)
031:23us253ms(LRCK=44.1kHz)
031:120us1392ms(LRCK=8kHz)
PWRUP_B[3:1] 2:0上电阶段 B
031:21us104ms (LRCK=48KHz)
031:23us113ms (LRCK=44.1KHz)
031:120us624ms (LRCK=8KHz)

寄存器 0X0C – 系统,默认值 0010 0000

位名称位描述
PWRUP_B[0] 7上电阶段 B
031:21us104ms(LRCK=48kHz)
031:23us113ms(LRCK=44.1kHz)
031:120us624ms(LRCK=8kHz)
PWRUP_C 6:0上电阶段 C
031:21us234ms(LRCK=48kHz)
031:23us254ms(LRCK=44.1kHz)
031:120us1401ms(LRCK=8kHz)

寄存器 0X10 – 系统,默认值 0001 0011

位名称位描述
SYNCMODE 70 – 正常(默认)
1 – 同步模式
VMIDLOW 6:50 – vmid = vdda/2(默认)
1 – vmid = vdda/2 - 75mV
2 – vmid = vdda/2 - 145mV
3 – vmid = vdda/2 - 175mV
DAC_IBIAS_SW 40 – 正常 DAC 偏置设置
1 – 较高的 DAC 偏置设置(默认)
IBIAS_SW 3:20 – 偏置设置级别 0(默认)
1 – 偏置设置级别 1
2 – 偏置设置级别 2
3 – 偏置设置级别 3(最高偏置)
VX2OFF 10 – 启用内部参考电压倍增器
1 – 关闭(默认)
VX1SEL 00 – vx1 = 1.45V
1 – vx1 = 1.65V(默认)

寄存器 0X11 – 系统,默认值 0111 1100

位名称位描述
VSEL 6:0内部使用

寄存器 0X13 – 系统,默认值 0100 0000

位名称位描述
HPSW 40 – 默认为线路输出驱动(默认)
1 – 启用输出到耳机驱动

寄存器 0X16 – ADC,默认值 0000 0100

位名称位描述
ADC_SYNC 5与 LRCK 同步滤波器计数器
0 – 非标准音频时钟
1 – 标准音频时钟
ADC_INV 4ADC 极性反转
0 – 正常
1 – 反转
ADC_RAMCLR 3当 LRCK/ADC_MCLK 激活时清除 ADC RAM
ADC_SCALE 2:0ADC 增益提升
0 – 0dB
1 – 6dB
2 – 12dB
3 – 18dB
4 – 24dB(默认)
5 – 30dB
6 – 36dB
7 – 42dB

寄存器 0X1B – ADC,默认值 0000 1100

位名称位描述
ADC_AUTOMUTE_VOL 7:5ADC 自动静音输出增益选择
输出增益 = ADC_AUTOMUTE_VOL * -4dB
0 – 静音到 0dB
……
-4dB/步
7 – 静音到 -28dB
ADC_HPFS1 4:0ADC 高通滤波器第一级系数

寄存器 0X1C – ADC,默认值 0100 1100

位名称位描述
ADC_EQBYPASS 6ADC 等效器旁路
0 – 正常
1 – 旁路(默认)
ADC_HPF 5ADC 偏移冻结
0 – 冻结偏移
1 – 动态高通滤波器
ADC_HPFS2 4:0ADC 高通滤波器第二级系数

寄存器 0X31 – DAC,默认值 0000 0000

位名称位描述
DAC_DSMMUTE_TO 7DAC DSM 静音目标
0 – 静音到 8(默认)
1 – 静音到 7/9
DAC_DSMMUTE 6DAC DSM 静音控制
0 – 不静音(默认)
1 – 静音
DAC_DEMMUTE 5DAC DEM 静音控制
0 – 不静音(默认)
1 – 静音
DAC_INV 4DAC 数据反相控制
0 – 数据不反相(默认)
1 – 数据 180 度反相
DAC_RAMCLR 3当 LRCK/DAC_MCLK 激活时清除 DAC RAM
0 – 正常(默认)
1 – 清除 RAM
DAC_DSMDITH_OFF 2
0 – 抖动开启(默认)
1 – 抖动关闭

寄存器 0X32 – DAC,默认值 0000 0000

位名称位描述
DAC_VOLUME 7:0DAC 音量
0x00 – -95.5dB(默认)
0x01 – -95.0dB
……
0.5dB/步
0xBE – -0.5dB
0xBF – 0dB
0xC0 – +0.5dB
……
0xFF – +32dB
当 DRC 打开时,DAC_VOLUME = MAXGAIN

寄存器 0X33 – DAC,默认值 0000 0000

位名称位描述
DAC_OFFSET 7:0DAC 偏移量

寄存器 0X34 – DAC,默认值 0000 0000

位名称位描述
DRC_EN 7DAC 数据范围控制使能
0 – 禁用 DRC(默认)
1 – 启用 DRC
DRC_WINSIZE 3:0DRC 计数器窗口大小
DRC_WINSIZE = [DRC_WINSIZE]
0 – 0.25dB/2LRCK(默认)
1 – 0.25dB/4LRCK
……
15 – 0.25dB/65536LRCK

寄存器 0X35 – DAC,默认值 0000 0000

位名称位描述
DRC_MAXLEVEL 7:4DRC 目标最大电平
0 – -30.1dB(默认)
1 – -24.1dB
2 – -20.6dB
3 – -18.1dB
4 – -16.1dB
5 – -14.5dB
6 – -13.2dB
7 – -12.0dB
8 – -11.0dB
9 – -10.1dB
10 – -9.3dB
11 – -8.5dB
12 – -7.8dB
13 – -7.2dB
14 – -6.6dB
15 – -6.0dB
DRC_MINLEVEL 3:0DRC 目标最小电平
0 – -30.1dB(默认)
1 – -24.1dB
2 – -20.6dB
3 – -18.1dB
4 – -16.1dB
5 – -14.5dB
6 – -13.2dB
7 – -12.0dB
8 – -11.0dB
9 – -10.1dB
10 – -9.3dB
11 – -8.5dB
12 – -7.8dB
13 – -7.2dB
14 – -6.6dB
15 – -6.0dB

寄存器 0X36 – DAC,默认值 0000 0000

(注:文档中未提供具体描述内容)

寄存器 0X37 – DAC,默认值 0000 1000

位名称位描述
DAC_RAMPRATE 7:4DAC VC/DRC 斜率
0 – 禁用软斜率(默认)
1 – 0.25dB/4LRCK
2 – 0.25dB/8LRCK
3 – 0.25dB/16LRCK
4 – 0.25dB/32LRCK
5 – 0.25dB/64LRCK
6 – 0.25dB/128LRCK
7 – 0.25dB/256LRCK
8 – 0.25dB/512LRCK
9 – 0.25dB/1024LRCK
10 – 0.25dB/2048LRCK
11 – 0.25dB/4096LRCK
12 – 0.25dB/8192LRCK
13 – 0.25dB/16384LRCK
14 – 0.25dB/32768LRCK
15 – 0.25dB/65536LRCK
DAC_EQBYPASS 3DAC 等效器旁路
0 – 启用(默认)
1 – 旁路

寄存器 0X38 – DAC 等效器,默认值 0000 0000

位名称位描述
DACEQ_B0[29:24]DAC 等效器 30 位 B0 系数

寄存器 0X39 – DAC 等效器,默认值 0000 0000

位名称位描述
DACEQ_B0[23:16]DAC 等效器 30 位 B0 系数

寄存器 0X44 – GPIO,默认值 0000 0000

位名称位描述
ADC2DAC_SEL 7将 ADC 数据发送到 DAC
0 – 禁用(默认)
1 – ADC 数据到 DAC
ADCDAT_SEL 6:4ADCDAT 输出选择
0 – ADC + ADC(默认)
1 – ADC + 0
2 – 0 + ADC
3 – 0 + 0
4 – DACL + ADC
5 – ADC + DACR
6 – DACL + DACR
7 – 无效
I2C_WL 3内部使用
GPIO_SEL 2:0内部使用
<think>好的,我现在需要处理用户关于ES8311芯片的技术信息、文档和驱动下载的查询。首先,用户提到了ES8388和ES8311的驱动资料,我需要确认这两个芯片是否属于同一系列或有相似之处,以便参考已有的资料。 首先,用户提供的引用[1]是关于ES8388驱动的详细说明,包括项目地址、特性、使用准备等,这可能对ES8311的驱动开发有参考价值,特别是I2C配置、寄存器设置等方面。引用[2]则直接提到了ES8311的初始化函数和代码示例,这应该是关键信息。 用户的问题主要集中在ES8311的技术文档、驱动下载和相关解决方案。我需要整理这些信息,确保回答结构清晰,符合用户的要求。根据用户提供的引用,ES8311的驱动开发涉及I2C通信、寄存器配置、音频数据传输等步骤。需要指出技术文档通常可在官方网站或通过供应商获取,驱动代码可能存在于开源项目或厂商提供的SDK中。 此外,用户可能需要具体的步骤来获取文档和驱动,比如访问Everest Semiconductor的官网,联系技术支持,或者查找GitHub等平台的开源项目。同时,要注意提醒用户检查硬件连接和配置,避免常见问题。 还要考虑用户可能的后续问题,例如驱动移植到其他MCU的注意事项,或者调试中的常见问题,因此在相关问题部分可以列出这些点。需要确保回答中的LaTeX格式正确,行内公式用$...$,独立公式用$$...$$,但当前问题不涉及数学公式,所以可能不需要使用,但需要检查是否有遗漏。 最后,确保引用标识正确添加,比如引用[^1]和[^2]对应的内容,并在回答末尾列出参考文献。需要验证提供的链接是否有效,但用户给出的链接可能是示例,实际中应建议用户通过正规渠道获取。</think>关于ES8388音频编解码器驱动说明,请参考引用[^1],以下是针对ES8311芯片的详细解答: ### ES8311芯片技术信息与驱动开发 1. **技术文档获取** ES8311的技术文档(如数据手册、应用笔记)可通过以下途径获取: - 联系Everest Semiconductor(钰泰半导体)官方技术支持[^2] - 访问芯片分销商平台(如立创商城、贸泽电子)的产品页面 - 搜索关键词`ES8311 datasheet`或`ES8311 reference manual` 2. **驱动开发要点** 根据引用[^2]的示例代码,ES8311驱动开发需重点关注: - **I2C通信配置** ```c i2c_open(); // 初始化I2C总线 ``` - **寄存器配置** 典型寄存器设置包括时钟源选择(如`ES8311_CLOCK_REG`)、音频格式(如`ES8311_AUDIO_FORMAT`)和音量控制(如`ES8311_VOLUME_REG`)[^2] - **音频数据传输** 需配合I2S/DMA接口实现,需注意采样率与位宽匹配 3. **驱动下载与移植** - 官方SDK:部分厂商提供完整驱动包(如`.zip`文件),包含初始化代码、控制接口和示例工程 - 开源项目:GitHub等平台可搜索`ES8311 driver STM32`等关键词 - 移植要点: ```c // 需适配目标平台的I2C/I2S接口函数 void i2c_write_register(uint8_t addr, uint8_t reg, uint8_t val) { /* 平台相关实现 */ } ``` ### 常见问题解决方案 | 问题类型 | 解决方法 | |----------------|-----------------------------------------| | 无声音输出 | 检查I2S时钟配置、DMA传输完整性 | | 寄存器写入失败 | 验证I2C地址(通常为0x18或0x1A)及时序波形 | | 噪声干扰 | 优化电源滤波电路,检查PCB接地设计 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值