在线时间1079 小时
UID299704
注册时间2011-6-18
NXP金币1976
TA的每日心情 | 开心 2025-6-10 23:03 |
---|
签到天数: 1502 天 连续签到: 1 天 [LV.Master]伴坛终老
版主
  
- 积分
- 10080
- 最后登录
- 2025-7-2
|
[LPC1768]PCA9551驱动的编写
这个小芯片的作用还是蛮大的,给我们平时用于状态显示的指示灯提供了一个非常便捷的应用方案——可以完美节省一个MCU的一个timer。
在开发板上面提供了4个LED的输出功能,4个按键输入功能。我们在此项目里面仅使用LED灯的输出功能,暂时不使用按键输入功能。因为其按键功能只能使用扫描的方式,而扫描会频繁占用I2C总线,并不方便我们同时操作总线上面的其它I2C器件。对于LED显示输出功能我们也使用带有占空比的PWM方式驱动LED灯,将其由直流驱动升级为交流驱动有利于功耗的降低与延长LED的寿命。
在此背景下,我们构造以下接口,提供给应用层程序使用:
- int_8 setLEDConfig(PCA9551Class *pDev, uint_8 cmd, uint32_t arg);
- #define REG_INPUT (0x00)
- #define REG_PSC0 (0x01)
- #define REG_PWM0 (0x02)
- #define REG_PSC1 (0x03)
- #define REG_PWM1 (0x04)
- #define REG_LS0 (0x05)
- #define REG_LS1 (0x06)
- #define CMD_CONFIG (0x00)
- #define CMD_OUTPUT (0x01)
- #define CMD_INPUT (0x02)
复制代码
有了调试好的I2C底层程序再编写上层应用程序时就方便多了。我们只需要编写对应的发送内容即可。
记住,我们仅使用这4个LED灯做为指示灯,因此,我们避免了频繁刷新而带来的I2C总线的占用。
TO BE CONTINUED.
|
|