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:用定时线程轮询的方式来做,当一个按键按下时,启动线程一直轮询监控是否有第二个按键按下,直到所有按键释放才取消线程。
A:VLED(阳极)=VF+R*I+Vdrop+Vxs
其中,VLED(阳极)为LED阳极供电电压;
如果LED阳极接VCC,那么VLED最大不能超过5.5V;
VF为灯的Forward Voltage值;
如果灯有串接分压电阻,R为串接电阻阻值;I为灯需要通过的最大电流值;
Vdrop为dropout voltage on ports;(Iout=20mA时,典型值60mV-80mV,数据见手册)
Vxs为整个灯的走线回路线损预留值,可根据实际情况预估;
A:中断异常信号波形如图所示。
中断信号异常原因:AW9523B的0x11寄存器中bits[3:2]默认值为reserve,未给出实际默认值,客户将bits[3:2]均设置为1,此时中断信号频率恰好与OSC输出一致,因此导致了芯片中断信号异常。
当中断异常信号波形有规律变化时,可排查客户设置的寄存器值与规格书中寄存器reserve值是否存在冲突。
AW9523B驱动dtsi中GPIO的配置只有P0_x,如果要将P1_x配置为GPIO模式,直接将gpio_idx依次往上加即可。如配置P1_0为输出模式,默认输出电平为低电平。
gpio5{
aw9523b,gpio_idx = <8>; // The specific port identifier used, This is used here:P1_0
aw9523b,gpio_dir = <1>; //The specific port work in output(1) or input(0)
aw9523b,gpio_default_val = <0>;
};

我们可以使用P0 port为open-drain 输出,并上拉成1.8V电压。
将P0 Port配置成Open-drain 模式,加上外部的上拉电阻,此时上拉电压可配置成1.8V或其它电压
配置11H缓存器D[4]=0,将P0 Port配置成Open-Drain输出�

上拉电阻接法参考如下示例P0_0及P0_1,上拉电压根据需求可配置成1.8V~VBAT

提醒#1︰仅有P0 Port可配置成open-drain 或 push-pull mode, P1 Port仅可配置成push-pull mode.
提醒#2︰上电时所有的IO初始状态为输出,输出状态是根据AD0/AD1的电平决定。

以上可參考FAQ0200439, FAQ0200044以及FAQ0200045。
提醒#3︰P0 Port做为输入时也可配成Open Drain加上拉1.8V, AW9523B VIH高于1.4V即认为高准位。
首先VCC和LED阳极电源的大小主要受限于VCC引脚和各端口的耐压,建议最大不超过5.5V。
在LED应用中,芯片VCC与灯阳极可为同一电源,也可分开独立供电,但要注意两点
- 灯阳极的电压不能大于芯片VCC电压;
- 上电时序要求:VCC上电不能晚于LED阳极电源上电;
同时,还要注意,当AW9106B、AW9110B、AW9523B的全部端口均作为LED驱动时,AD0AD1引脚必须均接高电平,以确保上电后各端口的默认状态为高阻或高电平,保证灯不会误亮。
AW9523B、AW9106B、AW9110B作为LED驱动的更多注意细节,可参考FAQ0200050。
I2C通讯地址由芯片的七位地址,和一位读写标志位组成。A7~A1为AW9523B 芯片地址,A0为读写位。
A7~A3 为固定数据"01110",A2/A1通过选择AD1/AD0引脚选择,应用时根据实际情况来选择相应的地址。


文中端口含义:(AW9106B:OUT0-5、AW9110B:OUT0-9、AW9523B:P0_x&P1_x)
端口如果设置为推挽输出,使用时不需要外接上拉电阻,输出的高电平为VCC电压。
端口如果设置为开漏输出,使用时需要外接上拉电阻,输出的高电平为外接的上拉电平。
端口如果设置为输入,因为内部没有自带上下拉,所以当所接的信号可能有悬空或者不定态时,需要外接接上拉或下拉电阻。
各端口电平、INTN、RSTN(AW9523B为RSTN、AW9106B和AW9110B为SHDN)、SCL、SDA、AD1、AD0不能超过VCC电平。
芯片作为输入时,内部没有自带上下拉,需要外部接上下拉电阻。
AW9106B、AW9110B、AW9523B的中断引脚只有一种情况下会产生中断:端口配置为输入模式,并且对应端口的中断使能位打开(REG06H、REG07H),一旦监测到端口的电平状态发生改变(高电平变为低电平、低电平变为高电平,8us deglitch),就会产生中断。表现为INTN引脚拉低。
产生中断信号后,INTN引脚会被持续拉低,除非通过一定的操作才能释放中断信号。
INTN信号释放方法:主控通过IIC分别读REG00H和REG01H寄存器(不能连读)可以释放中断。
