![](https://img-blog.csdnimg.cn/img_convert/f9258a78eaea4126b5654435f70f03ef.png)
类I2C介绍
一般显示驱动芯片采用了类I2C接口,可通过MCU与显示驱动芯片进行通信,类I2C总线具有低功耗、抗干扰强、传输距离长等优点,相比于标准I2C,不需要寻址操作,操作更加简单。下面将对类I2C通信及注意事项进行说明。
分类
I2C接口有与标准I2C接口相同的start和stop信号,无从机地址,部分电路有与标准I2C接口相同的应答信号。主要分为以下两类:
无应答信号ACK位,以AiP1640、AiP33624、AiP33620等电路为例;
有应答信号ACK位,以AiP650、AiP1637等电路为例。
通信介绍
(1)无应答信号的类I2C介绍
以AiP33624为例:
◆start和stop信号
start信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
stop信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
![](https://img-blog.csdnimg.cn/img_convert/75f092eabec9340cfd6d33ccf5743878.png)
◆数据位的有效性规定
在进行数据传送时,在SCL的上升沿锁存数据,SCL为高电平期间,SDA线上的数据必须保持稳定,只有在SCL线上的信号为低电平期间,SDA线上的数据状态才允许改变,且SDA线上的数据不能在SCL为下降沿改变。
![](https://img-blog.csdnimg.cn/img_convert/31facf2dcd7859c7dddfdd3cd3ea4d61.png)
◆单字节通信
单字节通信中8个时钟一个周期,高位在前。
![](https://img-blog.csdnimg.cn/img_convert/248f43a8117a37ec98d1cf1f3e19ce54.png)
◆多字节通信
在多字节通信时,第一个字节为指令,第二个字节开始是RAM的数据。第二个字节开始,数据会从地址0x00开始,依次存入RAM中。
![](https://img-blog.csdnimg.cn/img_convert/7d53d2b2d3626d0ffb6e2cacb18fb61b.png)
(2)有应答信号的类I2C介绍
以AiP650为例:
AiP650电路与AiP33624相比,有相同的start、stop信号和数据位有效规定。AiP650在传输数据的过程中,在时钟线的第九个时钟,芯片内部会产生一个应答信号ACK将DIO管脚拉低。无论是命令写入或者是数据写入读出时,在一个8位字节后的第9位都是ACK信号输出。
![](https://img-blog.csdnimg.cn/img_convert/4cf14ebcdca0d45f11d88f4054cef68f.png)
常见问题及处理办法
(1)ACK半高问题
◆ 常见不良现象
在有ACK应答信号的通讯波形中,会发现ACK信号存在“半高波形”,严重的会影响信号识别,例如AiP650电路应用中会存在ACK“半高”导致无显示问题。
◆原因
若读取ACK时主控未将SDA端口设置为输入,而是保持为高电平输出,AiP650会在ACK应答时会返回低电平,因此会造成电平冲突存在半高波形,严重时甚至影响功能。
若读取ACK信号时将SDA设为输入状态后,又通过指令SDA端口置高,同样造成电平冲突存在半高波形,导致ACK信号出现异常。
![](https://img-blog.csdnimg.cn/img_convert/8b810ef363923e2fd8ce0c6d41236a8c.png)
![](https://img-blog.csdnimg.cn/img_convert/b08428dacb03d9a79acc82a9decb0394.png)
![](https://img-blog.csdnimg.cn/img_convert/d0e095e0413a63c284123630e30b7a6e.png)
◆改善措施
在读取ACK时,需将主控的SDA端口设置为输入模式,建议设为高阻输入。
(2)初始化处理
◆常见不良现象
初始化第一条指令未识别,导致功能异常。例如AiP33624方案中曾出现第一条指令全局亮度未识别,导致整体亮度偏暗。AiP5908、AiP5916等电路需要注意此问题。
◆原因
初始化可能存在如下两个状态:
当执行端口初始化程序时,为了执行子函数,在子函数运行前将SCL和SDA的端口置低,但该操作误写入一个start信号,如下图所示。
整机上电时,MCU端口电平可能处于不可控状态,此时的SCL、SDA电平则有可能在通信初期识别为start信号,如下图所示。
前两种状态均在正常指令前多一个异常start信号,即:出现连续两个start信号。当识别第一个start信号时,总线被占用,后一个start信号则被识别为数据信号,导致第一条指令识别错误。常见的异常波形如下所示:
![](https://img-blog.csdnimg.cn/img_convert/8c10d812c4fa6610fa9e2364591d7b19.png)
![](https://img-blog.csdnimg.cn/img_convert/a2dbb23497df5409e9aaebfac1a939ab.png)
◆改善措施
建议上电后第一条指令或初始化部分写2遍,做好防错机制,避免信号识别错误,增强抗干扰能力。
可在第一条指令前增加1个结束信号,以释放通信总线。
(3)时钟频率注意事项
由于频率越快越容易受到干扰,建议时钟频率保持在1MHz以下,若说明书有特殊说明,请参照说明书。如AiP33624、AiP33620、AiP33616说明书注明建议时钟频率大于100KHz。
(4)AiP33624系列通信注意事项
在对AiP33624(AiP33620、AiP33616)电路进行通信时,第七个时钟和第八个时钟不可暂停通信。
![](https://img-blog.csdnimg.cn/img_convert/e41e40fc46e4c16f2ac42df16bb38109.png)
上图所示标注时段,不管是从“指令→RAM数据”或“RAM数据→RAM数据”,从一组通信数据的第7个时钟开始,到下一组通信数据的第1个时钟上升沿期间,内部显示地址总线将被通信接口模块占用,此时将暂停显示。因此如果主机在第7和第8个时钟时暂停通信,会导致显示暂时关闭。
(5)推荐外围接法
建议通讯端口串联220Ω电阻,接100pF对地电容,10K上拉电阻,增强抗干扰能力;建议靠近IC放置。
![](https://img-blog.csdnimg.cn/img_convert/03aef68f3a453fdba2e7e4736cc2a436.png)
(6)初始化中显示RAM区处理
在上电完成后,需对所有的显示RAM进行数据写入,然后再开显示,避免因显示RAM数据未清导致的显示异常。
(7)SDA、SCL边沿问题
◆常见不良现象
SDA在SCL的上升沿变化时,容易导致数据识别错误。
◆原因
SDA在SCL的边沿变化,SDA与SCL边沿存在交叉,若交叉点位于翻转电平附近,易受干扰导致数据识别错误。如图所示:
![](https://img-blog.csdnimg.cn/img_convert/a8fac184fbc0513b3fceb5a411231d6f.png)
◆改善措施
建议SDA在SCL低电平变化,避免在SCL边沿变化,增强抗干扰能力。