DSP

ADAU1701开发经验

2019-07-13 12:08发布

         在开发音频的时候用到了ADAU1701的DSP音频芯片,当然个人不会写DSP程序,我只是使用微控制器来控制ADAU1701,ADAU1701使用IIC控制,按照着数据手册给出的通讯格式去实现,但是会发现在下发数据过程中出现冲击喇叭的高音,从SmaartLive软件看主要是在控制EQ的时候,波形跳高的出现也就是这个原因使得喇叭烧坏了很多个,在经过反复的查阅资料,终于在数据手册中看到这么一段话: “许多应用需要对信号处理参数进行实时微控制器控制,例如滤波器系数,混频器增益,多通道虚拟化参数或动态处理曲线。
例如,在控制双二阶滤波器时,必须同时更新所有参数。 这样做可以防止滤波器对一个或两个音频帧混合使用新旧系数,从而
避免暂时不稳定和可能需要很长时间才能衰减的瞬变
。 为实现此目的,ADAU1701使用安全加载数据寄存器同时将一组五个28位
值加载到所需的参数RAM地址。 使用五个寄存器是因为双二阶滤波器使用五个系数,并且如前所述,希望在一个事务中进行完
整更新。执行安全加载操作的第一步是将参数地址写入安全加载地址寄存器之一(2069至2073)。 要写入的10位数据字是正在
执行安全加载的参数RAM中的地址。 写入该地址后,可以将28位数据字写入相应的安全加载数据寄存器(2064至2068)。加载
地址和数据寄存器后,在核心控制寄存器中设置启动安全加载传输位以启动加载到RAM。五个安全加载寄存器中的每一个都将
1024个核心指令中的一个加载到参数RAM中。因此,总的程序长度应限制在1019个周期(1024减去5),以确保SigmaDSP内核始
终至少有五个周期可用。安全加载保证在设置的启动安全加载传输比特的一个LRCLK周期(对于48kHz的fS为21μs)内发生。安
全加载逻辑自动将数据从仅从上次安全加载操作以来写入的安全加载寄存器发送到RAM中。例如,如果要在RAM中更新两个参
数,则必须只写入五个安全加载寄存器中的两个。当启动安全加载传输位被置位时,只有来自这两个寄存器的数据被发送到
RAM;其他三个寄存器不会发送到RAM,可能会保留旧的或无效的数据。” 得知原因我使用官方配套开发板测试了IIC的通讯数据格式如图: 进过分析得知了ADAU1701的安全加载模式的使用方式,在数据手册的寄存器说明中有说,内容简单信息量很大,所以作为开发者一定要仔细的阅读数据手册。