# 常见问题(FAQ)
# 硬件类问题
Q:核心板上的SAR ADC如何使用?
A:核心板上的SAR ADC输入悬空,如果要用核心板模拟ADC按键,需用电阻搭一个上拉电路并分压。
Q:上电后GPIO的初始状态如何?
A:GPIO的初始状态是无法更改的,设计电路时需要选择合适的io口做按键、灯,否则可能出现一上电灯就亮的情况。
Q:串口用作通讯接了外部设备后不能用串口升级?
A:升级时需要从硬件上断开串口另一端的设备。
Q:I2S的BCLK和WS电平不正常导数据有问题?
A:查看I2S的BCLK和WS是否和其他引脚接在一起导致被电平被拉低。
Q:IO口电压3.3V可以配置成1.8V吗?
A:可以配置成1.8V,但是芯片的USB模块会受到影响,无法正常工作。
Q:VDDIP33/IO33是输出还是输入?
A:是芯片内部LDO的输出。
Q:SNC8600 DFU脚是要怎么处理?
A:将DFU拉低,即进入DFU模式,悬空即进入Normal模式。
Q:PCB设计时需要预留哪些测试点?
A:建议预留必要的烧录测试点:串口升级:RX,TX,GND,DFU; USB升级:D+,D-;VDDIP33,Always_on等,具体以需求定。
Q:I2C1_SDA/SCL能否做普通IO?
A:不可以,这是专用的I2C口。
Q:VDDIN_EFUSE做什么用?
A:需要写EFUSE的时候,这个引脚作为输入,同时需要外置2.5V电源。
Q:RST_N是否要接出来?
A:RST_N内部通过IO33上拉,视情况可以预留测试点出来。对于话务耳机等DSP运算量不大的应用,不容易出现资源不足的情况,就不需要接硬复位。
Q:SNC8600 所用晶振的规格?
A:24MHz 12pF ±10ppm ESR≤100Ω。
Q:晶振部分的1M电阻可以取消吗?
A:不可以,这个是反馈电阻,必须要。
Q:TEST_EN的作用是什么?
A:TEST_EN接地为正常工作模式,拉高为芯片测试模式。
Q:Always_on起什么作用?
A:给Always_on一个上升沿或者下降沿,芯片从睡眠模式唤醒。
Q:SNC8600 MIC_BIAS2是否可以给MIC供电?
A:不可以,MIC_BIAS2是RESET脚,供电只能用MIC_BIAS1。
Q:芯片一共有多少个IO口?
A:不同型号的芯片的IO数量不完全相对,具体情况请参考芯片的数据手册,如SNC8600一共有16个IO口,与I2S,I2C,DMIC复用。
Q:芯片的VREG和VCAP电压什么时候有?分别多少?
A:烧录的固件代码正常运行,CODEC部分工作正常后才会有电压,通过内部LDO引出来,VREG=2.5V,VCAP=2.0V。
Q:正常工作状态下,DP/DM电压分别多少?
A:DP=3.0V,DM=0V。
Q:晶振XI.XO电压分别多少?
A:XI=1.5V,XO=1.8V。
Q:DMIC部分电压情况?
A:1、软件没开DMIC功能的话,不管是否接麦克风,DMIC_CLK是3.3V,DMIC_IN是0V; 2、没接DMIC,芯片DMIC_IN=3.3V CLK=1.66V,接了DMIC,DMIC_IN=1.65V,CLK=1.65V; 3、单独DMIC上电,DMIC_IN,DMIC_CLK是0.3V,DMIC_CLK接了时钟后,DMIC_IN就会有1.2V。
Q:MIC_BIAS为什么要加RC滤波?
A:设计要求,去除会带来沙沙声。
Q:DFU和GPIOAO能否做IO?
A:是输入接口,不能当做普通IO来使用。
Q:GPIO识别的高低电平电压范围是多少?
A:低电平:-0.3V~0.7V;高电平:1.7V~3.3V。
Q:Codec ADC、DAC的采样位数是多少?
A:ADC和DAC的采样位数为24bit。
Q:SNC8600有几个PWM口?
A:一共有四个PWM口,与GPIO2/3/4/5复用。
Q:SNC8600低功耗状态下,芯片内部电压状态?
A:只留了1.1V,IO33,CODEC3.3V,IP33全部关闭。
# 软件类问题
Q:SPK 88.2k,MIC 176.4k采样率时不能录音?
A:需要把Codec的FIFO level从8改成4。
Q:降噪算法的音量设置问题?
A:降噪算法的音量如果设的过大,有可能导致输出结果削顶。如果算法音量设成100,则输入的幅值不能超过1.5k左右;如果输入的是一个满量程正弦波,则算法音量不能超过3。需要根据前级增益的情况来合理设置算法音量大小。
Q:I2C做从机使用时的注意事项?
A:I2C做从机使用时,必须确保中断能及时响应。例如,当主机向从机写数据时,从机必须在rx fifo满之前进入i2c中断读出fifo中的数据。极限情况下,如果I2C速率是100k,那么从起始位开始到主机写满fifo深度的8个数据共需约800us左右,如果i2c速率是400k则为200us左右,这要求其他硬中断的处理时间不能超过这个值。实际情况如有必要,可在I2C从机的起始位中断中关闭一些耗时高的应用,然后在停止位中断中再打开。I2C做从机使用时的中断优先级应尽可能提高,做主机使用则没这些限制。
Q:麦克风采集的声音信号有偏置?
A:通过DSP工具打开ADC配置里面的高通滤波器可以消除偏置。
Q:USB的上下行信号波形有抖动?
A:打开ADC和DAC的AIAS,确保Fifo有足够的缓存空间。
Q:Fifo提示有溢出,串口打印“add xxx full!"?
A:只出现一次是正常的,如果持续多次出现就是通路数据同步问题,可能是采样率或者通道配置错误,或者是通路效率不够。
Q:为什么SNC8600的DAC驱动喇叭在上电和掉电时有POP音?
A:有两种解决方法:
1、上电时先将DAC静音,等DAC初始化完后再解除静音
2、可以在codec中断里面检测掉电,掉电了就将DAC静音
Q:通过硬件EQ处理的信号会产生偏置,容易出现POP音等问题?
A:有两种解决方法:
1、改为只用软件EQ
2、静音信号0数据也通过EQ处理,避免音频信号跳变的问题
Q:onFifoReady函数里面的参数frameLen和函数返回值的关系是什么?
A:参数frameLen是描述每个pickFifo的每次可处理的数据字节长度,一般每个pickFifo读取的数据长度是一样的,返回值是描述pokeFifo里面每次写进去的数据长度。
Q:配置没有USB的音频通路,DAC会出现没有声音的情况?
A:将hw_desc.c中dac的配置选项useSwGain配置成false。
Q:I2S和其他蓝牙芯片通信,如果蓝牙要求的有效位在低16位,bitslot配置成24bit声音有问题?
A:bitslot需配置成32bit。
Q:MIC和SPK静音在切换采样率过程中会出现无效以及USB不能正常工作的情况?
A:去掉在MIC和SPK静音时设置codec的ADC和DAC mute函数中的打印。
# 编译类问题
Q:编译工程时先花了很长时间编译HiFi3库?
A:一些旧工程需要右键工程名,在列表里点Libraray Dependencies,把对HiFi3库的编译依赖去掉。
Q:创建了一个新工程,但是编译后没有生成bin文件?
A:右键工程名,在列表里点Properties,然后在C/C++ Build->Builder里勾选上Create output file,并把输出文件格式选成binary。
Q:使用windows自带的录音机软件录音时,如果切换了MIC采样率,录音机会报错?
A:切换mic采样率后,需要重启录音机软件。
Q:用UART调试EQ工具时掉线?
A:EQ工具的UART版波特率是3M,这要求使用FT232的串口板,而不能使用CH340串口板。CH340只支持到2M波特率,3M时不稳定。
Q:涉及到USB配置的代码改动不生效?
A:一些涉及到USB的代码改动后,烧录后需要在电脑设备管理器中先卸载设备再重新插入,以使其生效。
Q:串口用作通讯,连接外部设备后不能用串口升级?
A:升级时需要从硬件上断开串口另一端的设备。
Q:编译时,提示HiFi库里面的函数找不到?
A:原因是HiFi库没有添加或者添加顺序不对,有多个库的时候HiFi库需要放在最下面。
Q:文件存在,但编译提示报错找不到?
A:项目右键->Auto Includes Settings->Manage->Auto Include->选择Automatic,并且勾选下面两个选项。
Q:SDK在选Debug选项的时候编译会报错?
A:将Debug和Release的编译选项配置成相同的。
Q:编译报找不到HiFi3库中的函数错误?
A:1. 看编译选项是否包含HiFi3库;2. 调整库的依赖顺序,需要将HiFi3库放到最后。
Q:编译报找不到依赖库的错误?
A:查看依赖库的路径是否正确,是否是当前工程。
Q:编译报指定的LSP文件不存在错误?
A:查看是否导入LSP工程,如果还报错则重新指定LSP工程的路径。
Q:导入LSP工程后报内部错误?
A:需导入HiFi3_VFPU_Library工程。