一、前言
本文将以介绍如何用 IIC 跟 AW9823B 驱动来实现灯效功能为主题,在 QN9080 的 SDK 中已经有 IIC 的例程,可以以例程为参考先熟悉 IIC 的通信过程。下面将给大家介绍世平集团代理产线的产品 AW9523B 的调试过程。
2.1 SDK 及软件下载
本文基于 NXP QN9080 IC,SDK 和软件可在 NXP 官网 https://mcuxpresso.nxp.com 下载。
2.2 硬件
本文基于 QN9080 官方板进行开发,官方板如图 2.2 所示:
图 2.2
2.3 开发软件
本文基于 NXP QN9080 平台,SDK 可在 NXP 官网 https://mcuxpresso.nxp.com 中下载。 SDK 支持 IAR、Keil、MCUXpresso IDE 三种开发软件、下面以 IAR 为开发环境作为介绍。
三、芯片说明与特性
3.1 芯片说明
AW9523B 是一款 IIC 接口、16 路呼吸灯、每路可作扩展 GPIO 控制器。上电后,16 路 GPIO 默认为输出模式,输出默认值可以通过 2 位器件地址进行配置,每一路 GPIO 都可单独配置输入输出。
3.2 特性
- 支持 16 路共阳极恒流型 LED 驱动
- 256 级线性调光,四个电流范围可选择
- 输入端口状态的变化可产生中断输出
- 400kHz 快速 IIC 接口,可支持 8V 通信
- 支持硬件复位,复位端口 10 微秒去抖动处理
- 工作电压:4 V ~ 5.5 V
- 单路LED电流最大值:37 mA
- 封装形式:TQFN4X4-24L
四、参考电路
五、调试过程
通过上面的说明,大家可以对这个芯片以及具体硬件设计有了基本的思路和了解,设计自己想要的灯效,可以加入 PWM 脉宽控制去设置呼吸灯,依次增大减小灯光的电流值,还可设置不同的跑马灯,不同的颜色等,可以通过对 RGB 三个内部灯光进行电流值的配置
来改变颜色,三个灯全亮是显示白色。现在我们直接上干货。让我们一起来看具体的调试过程。
在本篇博文中,以 IIC 写函数为例,读函数也可类推。写函数主要是通过 MCU 来对从机设备的写值地址中写入所需的值,主机到从机通信的一个过程。
下面是 IIC 的初始化函数,主要包含更改默认的波特率配置、IIC 主机的初始化配置函数、为非阻塞传输创建 IIC 句柄的函数等。
在头文件中,不要忘了对各个寄存器地址进行宏定义,这样能够提高代码的可读性。
下面是一个灯效的 Demo 演示函数以及效果,能够实现流水灯效果。首先是对IIC的初始化,然后是对从机设备的输出模式进行设置,默认的输出状态设置为 0,每个 GPIO 可设置为 GPIO 模式或者 LED 模式。For 循环中是如何具体的对每个 IO 进行控制,第一个是从机地址,第二个是控制哪个 IO,第三个是 IO 的输出电流值。
下面是灯效演示图,灯的亮度可通过设置 256 级电流来控制。
六、易错点提示
1、硬件上先确认电源、时钟、IIC、RST 等控制信号是否正确以及上电时序满足要求,是否有上拉电阻。
2、 查看软件上写入的IIC地址是否正确,并用示波器或者逻辑分析仪确认,以及能否正常的对 IO 拉高拉低。
3、 在 IIC 读写中,有人会比较困惑,为什么从地址要左移 1 位?这是 IIC 协议决定的,它的地址实际为 7 位,因为 IIC 协议为左对齐,所以需要对 IIC 地址左移 1 位。但是,有些 API 里面,已经把地址左移 1 位了。编程中需要注意这个问题,通常从机地址的问题都会在 Datasheet 中有特殊说明,大家在查阅 Datasheet 的时候需要注意这一点。
在本文中,API 是没有对地址进行移动的,我们要对这个驱动的从机地址先进行处理,否则主机无法寻找从机地址。
七、总结
经过对以上了解,相信大家已经可以调通这个驱动芯片了,同时能够对 IIC 通信有进一步的理解。只要掌握了上面的要点,配合上芯片的数据手册,你也可以设计出充满创意的 RGB 灯效。
八、参考资料
[1] AW9523B_呼吸灯驱动 BREATHINGLEDDRIVER_2018-02-02.pdf
评论