ET6226M应用使用笔记
一、简介
ET6226M是一种带键盘扫描电路接口的 LED驱动控制专用电路。内部集成有控制数字接口、数据锁存器、LED驱动、键盘扫描、辉度调节等电路,具有控制简单、使用灵活的特点。
二、硬件电路图(参考应用线路图)
典型应用图
应用注意点:
- C1=1uF且尽可能放置在接近VCC的地方,按键串联电阻建议R5~R8 = 2kΩ。
- R1,R2 = 4.7kΩ; R3,R4 = 100Ω; C2,C3 = 100pF; 通讯端口上的RC滤波电容电阻网络应尽可能靠近ET6226,电阻值和电容值可根据实际抗干扰要求和验证结果进行调整。
3.通讯线离VDD走线远一点
4.MCU的GND和芯片的GND走线尽量短一点
三、ET6226M Reference code
注: MCU:ATMEGA16 编译环境:ICC AVR C语言
- ET6226采用高速两线式串行接口通讯方式。
驱动代码参考:
/*********************通讯频率建议100K***********************/
/*********************开始***********************/
void ET6226_Start(void)
{
SDA_OUT;//设置SDA端口为输出
_delay_us(2);
SDA_H;
_delay_us(2);
SCL_H;
_delay_us(2);
SDA_L;
_delay_us(2);
SCL_L;
_delay_us(2);
}
/*********************结束***********************/
void ET6226_Stop(void)
{
SDA_OUT;//设置SDA端口为输出
_delay_us(2);
SCL_L;
_delay_us(2);
SDA_L;
_delay_us(2);
SCL_H;
_delay_us(2);
SDA_H;
_delay_us(2);
}
/*******************************等待应答*******************/
//等待应答信号
//返回值:1,接收应答失败
// 0,接收应答成功
uint8_t ET6226_Ack(void)
{
uint8_t ErrTime=0;
SDA_IN; //设置SDA端口为输入
_delay_us(5);
SCL_H;
while(SDA_Value)//SDA IO口状态
{
ErrTime++;
if(ErrTime>250)
{ET6226_Stop();return 1;}
}
SCL_L;
_delay_us(10);
SDA_OUT;//设置SDA端口为输出
return(0);
}
注:在读ACK的时候,如果强制把数据线DAT(即代码中的SDA)强制置高,会导致第九个时钟线的地方DAT出现一个随机的中间电平,在该情况下,会出现显示异常。ACK规范写法应该是MCU将DAT端口设为输入,等待ACK信号。如果没有规范软件写法,ACK信号出现中间电平(小于0.7VDD,大于0.2VDD),会出现显示异常。
/*****************发送一个字节*********************/
void ET6226_Write(uint8_t input)
{
uint8_t i;
for(i=0;i<8;i++)
{
if(input&0x80)
SDA_H;
else
SDA_L;
_delay_us(2);
SCL_H;
_delay_us(2);
SCL_L;
_delay_us(2);
input=input<<1;
}
}
void ET6226_Send_byte(uint8_t address1,uint8_t data1)
{
ET6226_Start();
ET6226_Write(address1);
ET6226_Ack();
ET6226_Write(data1);
ET6226_Ack();
ET6226_Stop();
}
/*************************读一个字节*******************/
uint8_t ET6226_Read(void)
{
uint8_t i;
uint8_t Data=0;
SDA_IN;//设置SDA端口为输入
for(i=0;i<8;i++)
{
SCL_H;
Data=Data<<1;
if(SDA_Read) //SDA端口的输入电平
Data=Data|0x01;
else
Data=Data|0x00;
_delay_us(2);
SCL_L;
_delay_us(2);
}
SDA_OUT;//设置SDA端口为输出
return(Data);
}
/*************************读按键键值*******************/
uint8_t ET6226_Read_Key(void)
{
uint8_t key_data;
ET6226_Start();
ET6226_Write(0x4F); //读按键对应的指令
ET6226_Ack();
key_data=ET6226_read();
ET6226_Ack();
ET6226_Stop();
return(key_data);
}
/*************************全显*******************/
void ET6226_Drive_Data(void)
{
ET6226_Send_byte(0x68,0xff); //GR1对应的显示数据
ET6226_Send_byte(0x6A,0xff); //GR2对应的显示数据
ET6226_Send_byte(0x6C,0xff); //GR3对应的显示数据
ET6226_Send_byte(0x6E,0xff); //GR4对应的显示数据
ET6226_Send_byte(0x48,0x01); //状态配置
}
注:1.ET6226芯片状态控制指令B7位(不关心位)请填写0。
2.B0和 B2位不能同时为 1。
3.七段和八段工作状态下,DP/KP端口状态不同,需要外围也不同。
4.七段工作状态下,DP/KP端口为开漏输出,指示灯接在 VCC和 DP/KP之间。
结合以上应用说明和相关注意点规范使用ET6226。