A:AW83611 DEMO板演示负载诊断功能,需要按如下操作:
1、按照下图完成连接,IIC接通讯小板和PC连接,电源正常供电;
连接正常后上电,UI左下角两个绿灯亮起表示通信正常。
2、上图右侧红色区域为用于演示负载诊断功能的切换开关,不同开关功能如图。
(1)OUTP/OUTN互短,将对应开关拨到左侧(OUTN位置),此时需要INN/INP有输入信号才能触发异常,DEMO异常状态灯亮起,UI Read all Reg读取寄存器状态后,如下,OC和SL状态会亮起;解除短路后,重新读取,状态位恢复正常。
(2) OUTP/OUTN与GND短路,将对应开关拨到左侧GND位置,注意,由于DEMO板为了安全,在此开关和GND之间串有100ohm电阻,拨动开关后,OUTP/N对GND非完全短路,此时无法触发芯片OC,故无法触发负载异常诊断流程,需要重新下电后上电,此时才会诊断短异常。用户实际场景正常对GND短路会立即触发OC,然后进行负载诊断,上报异常。触发后UI状态如下,红框处S2G标志会亮起
(3) OUTP/OUTN与PVCC短路和短GND类似,开关和PVCC之间仍然串有100ohm电阻,拨动对应开关到PVCC后,OUTP/N对PVCC非完全短路,无法触发OC,需要重新上电走一遍负载诊断,才能上报异常。用户实际场景正常对PVCC短路会立即触发OC,然后进行负载诊断,上报异常。触发后UI状态如下,红框处S2P状态会亮起。
(4)负载开路,负载开路不会影响芯片状态和输出PWM信号,此时必须下次上电启动负载诊断才会上报异常。负载开路UI状态如下,红框处OL状态会亮起。
附:如下是AW83611芯片负载诊断流程,只有在上电和触发OC两种状态才会进行负载诊断。
A:
算法报错出现报错log,如下图所示:
[Awinic]: get [/vendor/firmware/awinic_params.bin] size failed !
排查思路:
1、确认/vendor/firmware/awinic_params.bin是否存在
adb shell ls -l /vendor/firmware/awinic_params.bin
2、若文件存在检查是否有权限问题
adb shell chmod 777 /vendor/firmware/awinic_params.bin
3、使用adb将算法包中提供的算法参数push到机器中重新验证
A:AW21024X_AW21036X的open或short检测,需在灯常亮状态下执行。核心操作逻辑是先点亮所有LED灯,再通过寄存器配置启动检测并读取结果,具体操作流程及参数配置如下:
1、 点亮所有LED,完成以下寄存器配置步骤:
1) 使能芯片:0x00寄存器的CHIPEN位设置为1;
2) 将所有LED灯的亮度BRx和颜色COLx都设置为0xff
3) 通过给0x49寄存器写0x00让亮度BRx寄存器的值生效
4) 将0x78寄存器的bit7:bit5设置为b111,即PWM占空比设置成100%
5) 根据当前项目使用的LED参数和硬件电阻大小,设置全局电流(0x6E寄存器);推荐设置为0x0f
注意:
(K=200, VREXT = 0.4V, n=1, 2, 3, …, 36)
2、 打开open或short检测,同步设置open和short阈值(0x71寄存器);
3、 延时50ms;
4、 读0x72~0x76寄存器查看检测结果,其对应的位置如下:
6、 用AW21036QNR举例如下:
1. //1.点亮所有灯
2. // Chip enable
3. aw_i2c_writebyte(I2C_ADDR, 0x00, 0x01);
4. // Set BRx
5. for(int i = 0;i < NUMS; i++){ //NUMS是LED的个数
6. aw_i2c_writebyte(I2C_ADDR, 0x01 + i, 0xFF);
7. }
8. // Set SLx
9. for(int i = 0;i < NUMS; i++){ //NUMS是LED的个数
10. aw_i2c_writebyte(I2C_ADDR, 0x4A + i, 0xFF);
11. }
12. // update BRx
13. aw_i2c_writebyte(I2C_ADDR, 0x49, 0x00);
14. // Set pwm duty
15. aw_i2c_writebyte(I2C_ADDR, 0x78, 0xE0);
16. // Set global current
17. aw_i2c_writebyte(I2C_ADDR, 0x6E, 0x0f); //需要根据项目进行计算设置
18.
19. //2.开始short检测
20. aw_i2c_writebyte(I2C_ADDR, 0x71, AW210XX_STH << 2 | AW210XX_BIT_SHORT_EN); // AW210XX_STH是短路的阈值,0=VDD-1V,1=VDD-0.5V;AW210XX_BIT_SHORT_EN = 0x02是short检测
21. soft_delay(50); //延时50ms
22. for(int i = 0x72;i < 0x76; i++){
23. aw_i2c_readbyte(I2C_ADDR, i, short_result); //short_result值就是咱们short检测结果,按照手册描述查找对应位置
24. }
25. //3.开始open检测
26. aw_i2c_writebyte(I2C_ADDR, 0x71, AW210XX_OTH << 3 | AW210XX_BIT_OPEN_EN); // AW210XX_OTH是open的阈值,0=0.1V,1=0.2V; AW210XX_BIT_SHORT_EN = 0x03是short检测
27. soft_delay(50); //延时50ms
28. for(int i = 0x72;i < 0x76; i++){
29. aw_i2c_readbyte(I2C_ADDR, i, open_result); //open_result值就是咱们open检测结果,按照手册描述查找对应位置
30. }
31. //4.软件复位并按照项目需求进行初始化
A:在芯片正常的情况,可以按照如下步骤进行排查
步骤一、按键失效时需先确认I2C通信:
(1) VCC供电是否在2.5V~5.5V之内;
(2) RSTN或SHDN使能引脚是否拉高;
(3) I2C地址有AD0和AD1的链接方式决定,通信过程中是否正确;
(4) 通过读0x10寄存器的CHIPID 0x23来判断I2C通信是否成功。
步骤二、确认硬件设计:端口做gpio input时,PX_X或OUTx端口和INTN都必须要有kΩ级别的外部上拉
步骤三、接着确认寄存器配置
(1) 端口的模式配置:
AW9523B和AW9527的0x12和0x13寄存器如下:
Table 1. LED mode switch register(12H)
Table 2. LED mode switch register(13H)
AW9110C和AW9106C的0x12和0x13寄存器如下:
Table 3. P0WKMD(12H), GPIO control switch to LED driver register
Table 4. P1WKMD(13H), GPIO control switch to LED driver register
(2) 方向配置是否正确:
AW9523B和AW9527的0x04和0x05寄存器如下:
Table 5. Configuration register(04H,05H)
AW9110C和AW9106C的0x04和0x05寄存器如下:
Table 6. P0DIR(04H),GPIO input or output select register or as BLINK,SMART-FADE Mode select
Table 7. P1DIR(05H),GPIO input or output selection register, or used for BLINK,SMART-FADE mode choice
(3) 中断是否使能:
AW9523B和AW9527的0x06和0x07寄存器如下:
Table 8. Interrupt enable register(06H,07H)
AW9110C和AW9106C的0x06和0x07寄存器如下:
Table 9. P0MSK(06H),GPIO Mask Interrupt Register
Table 10. P1MSK (07H),GPIO Mask Interrupt Register
步骤四、PX_X或OUTx端口配置成gpio input时,由于外部有上拉电阻,所以默认为高电平;按下按键后变为低电平,其低电平保持超过8us时,INTN会被拉低;
平台连接INTN引脚的GPIO需配置成下降沿触发;那INTN从高电平变为低电平会触发中断并执行中断函数,在中断函数中读0x00和0x01寄存器确认是哪个引脚被按下
AW9523B和AW9527的0x00和0x01寄存器如下:
Table 11. Input state register(00H,01H)
AW9110C和AW9106C的0x00和0x01寄存器如下:
Table 12. P0DI(00H),GPIO input state register
Table 13. P1DI(01H),GPIO input state register
步骤五、用示波器测试PX_X或OUTx端口和INTN的信号,看其电平变化是否符合第四步描述
A:在芯片正常的情况,可以按照如下步骤进行排查
步骤一、按键失效时需先确认I2C通信:
(1) VCC供电是否在2.5V~5.5V之内;
(2) RSTN或SHDN使能引脚是否拉高;
(3) I2C地址有AD0和AD1的链接方式决定,通信过程中是否正确;
(4) 通过读0x10寄存器的CHIPID 0x23来判断I2C通信是否成功。
步骤二、确认硬件设计:端口做gpio output时,
(1) PX_X或OUTx端口尽量不要有下拉电阻,防止下拉能力过强导致端口输出高也无法拉高;
(2) AW9523B和AW9527的P1_X端口为Push-Pull输出;P0_X端口默认为Open-Drain输出,也可以通过0x04寄存器的bit4设置为Push-Pull;P0_X作Open-Drain输出时,外部需准备上拉电阻。
步骤三、接着确认寄存器配置
(1) 端口的模式配置:
AW9523B和AW9527的0x12和0x13寄存器如下:
Table 1. LED mode switch register(12H)
Table 2. LED mode switch register(13H)
AW9110C和AW9106C的0x12和0x13寄存器如下:
Table 3. P0WKMD(12H), GPIO control switch to LED driver register
Table 4. P1WKMD(13H), GPIO control switch to LED driver register
(2) 方向配置是否正确:
AW9523B和AW9527的0x04和0x05寄存器如下:
Table 5. Configuration register(04H,05H)
AW9110C和AW9106C的0x04和0x05寄存器如下:
Table 6. P0DIR(04H),GPIO input or output select register or as BLINK,SMART-FADE Mode select
Table 7. P1DIR(05H),GPIO input or output selection register, or used for BLINK,SMART-FADE mode choice
(3) 输出电平:
AW9523B和AW9527的0x02和0x03寄存器如下
Table 8. Output state register(02H,03H)
AW9110C和AW9106C的0x02和0x03寄存器如下:
Table 9. P0DO(02H),GPIO output state register or as driver control in SMART-FADE mode
Table 10. P1DO(03H),GPIO output state register or as driver control in SMART-FADE mode
步骤四、用示波器测试PX_X或OUTx端口信号,看是否上述第三步设置
注意:
当VCC上电且RSTN或SHDN拉高后,PX_X或OUTx端口的电平默认状态和AD1、AD0的关系如下:
AW9523B和AW9527默认输出电平:
AW9110C和AW9106C默认输出电平:
A:1、 AW20144X_20198X_20216X的open或short检测需要在灯常亮是进行;所以需要点亮所有灯,其流程如下:
1) 使能芯片和当前项目使用的SW通道:
l PAGE0页的0x00寄存器的CHIPEN位设置为1;
l PAGE0页的0x00寄存器的SWSEL根据项目使用的SW设置。
GCR: Global Control Register (Page 0: Address 0x00)
2) 将PAGE1页所有灯珠的PWMx和PAGE2页所有灯珠的SLx都设置为0xff
PWMx (x=0~215): PWM Configure Register (Page 1: Address 0x00~0xD7)
SLx (x=0~215): SL Configure Register (Page 2: Address 0x00~0xD7)
3) 根据项目在PAGE0页的0x01寄存器设置全局电流;推荐设置为0x0f
GCCR: Global Current Control Register (Page 0: Address 0x01)
注意:
Open判断的条件是:CSx引脚上的电压小于VTHopen(PAGE0页0x2B寄存器OTH bit,0为0.1V、1为0.2V);
Short判断的条件是:CSx引脚上的电压大于PVCC-VTHshort(手册的开短路描述VTHshort大小,例如AW20216QNR的VTHshort =0.8V)
SRCR: Open/Short Control Register (Page 0: Address 0x2B)
2、 在PAGE0页的0x00寄存器的OSDE打开open或short检测;
GCR: Global Control Register (Page 0: Address 0x00)
3、 延时100ms;
4、 读PAGE0页的0x03~0x26寄存器查看检测结果,其对应的位置如下:
OSR0~OSR35: Open/Short Status Register (Page 0: Address 0x03~0x26)
5、 注意:需要先检测short,将其对应灯珠修改后再进行open检测
6、 用AW20216QNR举例如下:
1、 //1.点亮所有灯
2、 // Chip enable and open SW1-SW11
3、 aw_i2c_writebyte(I2C_ADDR, 0xf0, 0xc0);
4、 aw_i2c_writebyte(I2C_ADDR, 0x00, 0xb1);
5、 // Set PWMx
6、 aw_i2c_writebyte(I2C_ADDR, 0xf0, 0xc1);
7、 for(int i = 0;i < NUMS; i++){ //NUMS is the number of LEDs
8、 aw_i2c_writebyte(I2C_ADDR, i,0xff);
9、 }
10、 // Set SLx
11、 aw_i2c_writebyte(I2C_ADDR, 0xf0, 0xc2);
12、 for(int i = 0;i < NUMS; i++){ //NUMS is the number of LEDs
13、 aw_i2c_writebyte(I2C_ADDR, i,0xff);
14、 }
15、 // Set global current
16、 aw_i2c_writebyte(I2C_ADDR, 0xf0, 0xc0);
17、 aw_i2c_writebyte(I2C_ADDR, 0x01, 0x0f); //Need to calculate based on the project
18、
19、 //2.开始short检测
20、 // Set short detection
21、 aw_i2c_readbyte(I2C_ADDR, 0x00, ®_value);
22、 reg_value &= AW20144_BIT_CHIPEN_DIS; //AW20144_BIT_CHIPEN_DIS = (~(1<<0))
23、 reg_value |= AW20144_BIT_SHORT_EN; //AW20144_BIT_SHORT_EN (0x5)
24、 aw_i2c_writebyte(I2C_ADDR, 0x00, reg_value);
25、 soft_delay(100); //100ms
26、 for(int i = 0x03;i < 0x26; i++){
27、 aw_i2c_readbyte(I2C_ADDR, i, short_result); //short_result值就是咱们short检测结果,按照手册描述查找对应位置
28、 }
29、 //3.修好short位置
30、 //4.开始open检测
31、 // Set VTHopen
32、 aw_i2c_writebyte(I2C_ADDR, 0x29, 0x20);
33、 aw_i2c_writebyte(I2C_ADDR, 0x2B, 0x22); //0x02 OTH=0 VTHopen=0.1V,0x22 OTH=1 VTHopen=0.2V,
34、 // Set open detection
35、 aw_i2c_readbyte(I2C_ADDR, 0x00, ®_value);
36、 reg_value &= AW20144_BIT_CHIPEN_DIS; //AW20144_BIT_CHIPEN_DIS = (~(1<<0))
37、 reg_value |= AW20144_BIT_OPEN_EN; //AW20144_BIT_OPEN_EN (0x7)
38、 aw_i2c_writebyte(I2C_ADDR, 0x00, reg_value);
39、 soft_delay(100); //100ms
40、 for(int i = 0x03;i < 0x26; i++){
41、 aw_i2c_readbyte(I2C_ADDR, i, open_result); //open_result值就是咱们open检测结果,按照手册描述查找对应位置
42、 }
43、 aw_i2c_writebyte(I2C_ADDR, 0x29, 0x00);
44、 //5.软件复位并按照项目需求进行初始化
7、 用AW20216SQNR举例如下:
1、 //1.点亮所有灯
2、 // Chip enable and open SW1-SW11
3、 aw_spi_writebyte(CMD_PAGE0, 0x00, 0xb1);
4、 // Set PWMx
5、 for(int i = 0;i < NUMS; i++){ //NUMS is the number of LEDs
6、 aw_spi_writebyte(CMD_PAGE1, i,0xff);
7、 }
8、 // Set SLx
9、 for(int i = 0;i < NUMS; i++){ //NUMS is the number of LEDs
10、 aw_spi_writebyte(CMD_PAGE2, i,0xff);
11、 }
12、 // Set global current
13、 aw_spi_writebyte(CMD_PAGE0, 0x01, 0x0f); //Need to calculate based on the project
14、
15、 //2.开始short检测
16、 // Set short detection
17、 aw_spi_readbyte(CMD_PAGE0, 0x00, ®_value);
18、 reg_value &= AW20144_BIT_CHIPEN_DIS; //AW20144_BIT_CHIPEN_DIS = (~(1<<0))
19、 reg_value |= AW20144_BIT_SHORT_EN; //AW20144_BIT_SHORT_EN (0x5)
20、 aw_spi_writebyte(CMD_PAGE0, 0x00, reg_value);
21、 soft_delay(100); //100ms
22、 for(int i = 0x03;i < 0x26; i++){
23、 aw_spi_writebyte(CMD_PAGE0, i, short_result); //short_result值就是咱们short检测结果,按照手册描述查找对应位置
24、 }
25、 //3.修好short位置
26、 //4.开始open检测
27、 // Set VTHopen
28、 aw_spi_writebyte(CMD_PAGE0, 0x29, 0x20);
29、 aw_spi_writebyte(CMD_PAGE0, 0x2B, 0x22); //0x02 OTH=0 VTHopen=0.1V,0x22 OTH=1 VTHopen=0.2V,
30、 // Set open detection
31、 aw_spi_readbyte(CMD_PAGE0, 0x00, ®_value);
32、 reg_value &= AW20144_BIT_CHIPEN_DIS; //AW20144_BIT_CHIPEN_DIS = (~(1<<0))
33、 reg_value |= AW20144_BIT_OPEN_EN; //AW20144_BIT_OPEN_EN (0x7)
34、 aw_spi_writebyte(CMD_PAGE0, 0x00, reg_value);
35、 soft_delay(100); //100ms
36、 for(int i = 0x03;i < 0x26; i++){
37、 aw_spi_writebyte(CMD_PAGE0, i, open_result); //open_result值就是咱们open检测结果,按照手册描述查找对应位置
38、 }
39、 aw_spi_writebyte(CMD_PAGE0, 0x29, 0x20);
40、 //5.软件复位并按照项目需求进行初始化
A:D类或者K类音频功放输出为方波PWM载波形式,因此测量功率(电压)时,需要在两个输出各接一个低通滤波器将其开关调制频率滤除,然后测量滤波器的差分输出即可得到模拟输出信号。
图1 RC低通滤波器的电路
图2 搭建的RC低通滤波器实物图
低通滤波器推荐如下表中的电阻、电容值:
例如下图3测量AW87318输出端信号时,在两个输出各接一个低通滤波器将开关调制频率滤除,然后测量滤波器的差分输出即可得到模拟输出信号。
图3 AW87318输出测试
测试步骤:
1、滤波板与PA输出和示波器接线如下图4,滤波板输入与喇叭并联接到功放VON、VOP输出,滤波板输出接到示波器两个通道。
图4 滤波板与PA输出和示波器接线示例
2、示波器2个通道分别采集VON、VOP滤波后的波形,再做差得到最终的PA输出电压波形结果。
图五 示波器测试界面示例
PA输出功率计算:
(
:喇叭的负载阻抗)
A:1.音频数字芯片搭配3.1版本数字底板使用时,在EVB板安装位置的背面,焊接0Ω电阻以连接外部PVDD电压,在数字底板的PVDD接口处连接正确的PVDD电压,即可实现芯片外供PVDD。
注意:
1. 配套的稳压电容的耐压值需大于35V;
2. 芯片是否支持PVDD外供,以及外供PVDD时的上电顺序,请参考具体的芯片手册。
A:MCU平台数字PA驱动不能直接使用acf bin文件,需要将acf bin转化为aw_params.h,步骤如下:
1、将acf bin文件比如aw883xx_acf.bin文件拷贝到PA驱动目录的acf_parse_h文件夹下:
2、在acf_parse_h目录下按shift+右键—>在此处打开PowerShell窗口:
3、调用acf_parse_h.exe工具将bin文件转化为aw_params.h
输入参数:acf_parse_h.exe aw883xx_acf.bin
转换成功会有”header file fill complete”信息提示,同时当前目录下会有aw_params.h文件生成:
4、将aw_params.h中的chip id修改成实际PA型号的ID:
5、使用修改后的h文件替换驱动中的原始文件即可。
备注:该方法适用于数字PA AW88166,AW88394,AW88399使用。
A:在常温误触测试过程中,将机器对空放置,用手触摸上天线,下天线diff值发生耦合上升。



可通过增加一个时隙,将上天线对应的CS作为下天线的参考通道。
以本测试为例,上天线对应CS3,将CS3映射为CH3,选择将CH3作为CH0的参考通道,将REFADOWNCOEF和REFAUPCOEF配置为1,以此抵消耦合上升量。
A:本文介绍如何使用scpV4打开已有(艾为提供)的acf.bin文件(适用于AW87565/AW87394/AW87391new/AW88271等功放参数),修改增益、功率等,然后重新输出生成acf.bin文件。具体操作如下:
1.打开页面选择open project file(bin);
2.选择打开对应AW87565的acf.bin(初版由艾为提供);
3.点击对应右侧场景(如music),按需求修改对应参数;
4.修改参数后,右击project,然后选择生成acf.bin,保存成修改后的文件名即可。
A:MTK HAL AURISYS场景切换支持两种方案实现:
1、 通过arsi_set_addr_value接口实现动态切换参数,可通过以下两种方式实现
(1)adb指令
adb shell "AudioSetParam AURISYS_SET_PARAM,HAL,ALL,AWINIC,ADDR_VALUE,0x10013d30, scene_id=SET"
(2)HAL 层调用 aurisys_set_parameter(const char *key_value_pair)接口:aurisys_set_parameter("AURISYS_SET_PARAM,HAL,ALL,AWINIC,ADDR_VALUE,0x10013d30,scene_id=SET");
2、通过audio_mode/reserve2参数进行切换
平台调用arsi_query_param_buf_by_custom_info/arsi_parsing_param_file_by_custom_info接口进行参数获取时,艾为通过接口中arsi_task_config_t结构体内audio_mode和reserve2两个参数进行场景参数的输出:
当reserve2等于0时,获取的场景ID等于audio_mode,如果reserve2不等于0,获取的场景ID等于reserve2+20。
A:AW9110C&AW9106C配置IIC到GPIO生效的时间间隔在100ns以内
测试速率:400k, 测量时间点:写output寄存器值后,芯片应答位到gpio生效的时间间隔
A:AW提供MCU代码中有该功能,打开步骤如下:
1、PA初始化信息中添加渐入渐出功能使能开关:
2、设置淡入淡出时间(设置参考值2-5ms):
3、设置淡入淡出步长(一般保持默认值即可)
渐入、渐出功能作用时间 = 目标音量/步长 * 淡入淡出时间
A:
图1-AW88261FCR 1W扫频曲线
图1为AW88261FCR 20hz-20khz 1W输出功率时的扫频曲线,20Khz电压幅值比1Khz高0.21dB。
不同频点的输入信号幅值相同,输出电压幅值不同的原因是:在不同频点时PA的增益有差异,高频部分增益更大,所以扫频曲线高频部分电压更高。
图2 AW88261FCR不同频率的增益曲线
图2 是AW88261FCR规格书上不同频率的增益曲线,20Khz电压幅值比1Khz高约0.2dB。
(不同频率的增益不同,是CLASSD环路特性导致的,因为CLASSD环路存在极点,为了补偿环路稳定性,在环路带宽内会补偿零点,零点会导致高频增益出现上翘。)
一般PA 20-20khz增益差值在±0.5dB以内,一定范围内增益的偏差不会对用户使用产生影响。不同PA的增益曲线参考芯片规格书。