双NCP5602 LED驱动器具有遥控普通背光和图标的功能。并且,在背光模式下运行时,芯片有十六个输出电流调整步骤,用于精确设置LED亮度。如NCP5602数据表所述,这些功能由标准的I2C协定语言控制。本应用注释以基本八比特微控制器,给出了一个控制芯片内嵌所有功能的软件实例。假设存储器控制单元(MCU)具备基本功能,编译器代码可以导入其他MCU。
I2C协定语言:基本概念
I2C是接口互换芯片的简称,由飞利浦半导体公司于二十多年前开发。此概念建立在串行通信基础上,采用一条时钟线同步数据流,另一条用作数据内容专用的双向开漏极。两线可识别为:
SCL——>串行时钟线
SDA——>串行数据线
标准I2C的数据基于高达400 kHz速率的字节格式,而新高速协定语言高达3 MHz。除格式外,I2C的主要优点在于可与几个外围设备共享公共时钟和数据总线。新交换发生时,将第一个字节作为想要访问的物理设备地址便可实现这目的。为确保SDA线上不发生冲突,系统一次仅使用一个主设备,其他外围设备仅处于从属模式,准备读取I2C数据总线。
无数据传输时,两线均处于高电平,无时钟工作。为启动数据交换,主设备强制SDA变低,同时SCL=高:这样即产生了启动(START)脉冲,且所有外围设备应准备接收该比特后的下一个字节。
如上所述,第一个字节包含选定共享同一I2C总线外围设备的物理地址。该地址由[7:1]比特构成,最大有效比特(MSB)在前,最小有效比特(LSB)用于表示通信类型:见图1。另外,为防止数据冲突,物理地址必须由I2C委员会登记,确保共享同一条总线的设备没有相同的地址。
所有时序完全由I2C规范定义,任何处理协定语言的系统必须符合前述规范。
当然,如果不具备向所选地址发送一个或多个字节的能力,这个概念便没有效;但这特性是I2C协定语言的组成部分。
与NCP5602通信,MCU必须连续发送三个字节:
第一个字节——>物理地址= $9E
第二个字节——>内部寄存器访问= $01
第三个字节——>输出电流值:$00至$20。
时钟和数据信号的占空比无需精确至50%,但向NCP5602发送正确数量的时钟脉冲时必须谨慎:计数错误会失去同步,且芯片不再确认新编程数据。特别是软件必须考虑支持从NCP5602反馈ACK的第九个比特。
另一方面,由于SDA线用于双向数据传输,MCU的I/O引脚必须配置为输出(在SDA上发送数据)或输入(当等待确认)。
软件部分
该程序的主要目的是支持安森美半导体开发的白光LED驱动器。在现有飞思卡尔半导体8比特机器产品系列中选择了一种成本相对较低的微控制器。另一方面,由于同一个程序可以在更复杂的电路中使用,已经确定可以使用汇编工具,而非C或C+协定语言。
键盘支持
键盘连接至四个PORTA比特[3:0],中断功能由XXX寄存器启动。系统配备四个外部按钮后,能够控制简单白光LED驱动器的所有内置功能。数字定时器滤去按下按钮时产生的大多数反弹。识别按键后,使用相关子程序并完成相应功能。返回空闲状态后,软件清除键盘中断。
I2C步骤
键盘受到启动或在RS232端口上检测到命令以后,软件使用子程序。根据要求的指令,子程序向I2C端口发送适当信息。