IIC硬件设备基本运用原理——linux下的 GSL1680驱动开发

245 阅读4分钟

进度二

熟悉外设GSL1680

下载查看GSL1680的datasheet,了解“电路结构,工作原理,寄存器,通信时序”

第一步上ALLDATASHEET.com找芯片数据手册

image.png

第二步用知云文献翻译阅读芯片数据手册

image.png

第三步总结需要用到的地方

  • 电路结构:GSL1680通过4个引脚与主机控制器连接(除了电源),使用I2C接口进行通信,包括SDA、SCL、IRQ和SHUTDOWN引脚。

  • 工作原理:当触摸屏上的某个通道被触摸时,设备会转入激活模式并等待激活超时后返回到低速扫描模式。如果没有通道被触摸,则保持低速扫描模式直到超时后进入绿色模式。

  • 通信时序:GSL1680的I2C通信遵循标准的I2C协议,包括START条件、写地址、写数据、STOP条件等步骤。每个周期至少有一次数据采集,并且可以通过配置来调整这些周期的时间。此外,对于中断的使用,如果需要读取消息而IRQ线未被断言,建议进行双重读取以检查一致性,从而确保没有同时发生读操作和消息更新的情况。

  • 中断:根据文本片段,GSL1680设备通过I2C接口与主机控制器通信,并使用中断信号IRQ来通知主机有新的消息准备好。当某个通道被触摸时,设备会转入激活模式并等待激活超时后返回到低速扫描模式,然后设备将进入绿色模式,在绿色模式下以更慢的速度监视触摸屏。如果需要利用这个中断功能,您需要编写代码来检测IRQ引脚的状态变化,并在检测到低电平(即IRQ信号激活)时执行相应的操作。

Device Address

GSL168X支持单个i2c兼容设备地址0x40。通过兼容i2c的接口传输时,会向左移位形成SLA+W或SLA+R地址,如下表所示。 SLA+W和SLA+R格式

6451e8516659ca6d3df9a88a652136f.png

`0x40`的二进制表示是`01000000`再加上第八位READ置1,WRITE置0(?芯片手册没说,网上查的)
Writing to the Device

写设备的一个写周期包括START条件和设备的i2c兼容地址(SLA+W)。下一个字节是开始写入的位置的地址。

多字节传输中的后续字节——实际数据——被写入地址指针的位置,地址指针的位置+1,地址指针的位置+ 2,依此类推。

WRITE操作以i2c兼容总线上的STOP条件结束。一个新的写周期涉及发送另一个地址指针。注意,WRITE周期必须以STOP条件结束;如果一个周期被新的START条件终止,GSL168X可能无法正确响应。

下图显示了一个将四个字节的数据写入从0x80开始的连续地址的示例。

4字节的示例,0x12345678写地址0x80(?)

image.png

Reading from the Device

从设备读取为了从设备读取,通常会发生两个兼容i2c的总线活动:第一个是兼容i2c的写操作来设置地址指针,第二个是实际的兼容i2c的读操作来接收数据。当检测到READ周期的STOP条件时,地址指针返回到其起始值。

没有必要在每次读取之前设置地址指针。每次读操作后,地址指针都会自动更新,所以如果读操作顺序正确,地址指针就是正确的。

WRITE和READ周期由START条件和设备的i2c兼容地址(分别为SLA+W或SLA+R)组成。每个循环必须以STOP条件结束;如果一个周期被新的START条件终止,GSL168X可能无法正确响应。

下图显示了从地址0x80读取四个字节的i2c兼容命令。

从地址0x80读取一个4字节的例子

image.png

熟悉6818的IIC控制器

下载查看6818的datasheet,了解iic“电路结构,工作原理,寄存器,通信时序”

1.IIC是一种数据传输协议(SPI,USB,SDIO,UART......)

2.速度比较:IIC(100K,400K,3.4M)<SPI<SDIO<网络< USB

3.IIC是一个半双工通信方式,两根总线(SCL,SDA),每个设备都有唯一设备地址

4.一次传输8bit,高位在前,低位在后;总线空闲状态:数据线SDA拉为高电平

微信图片_20240427044446.png