嵌入式LINUX入门到实践(一)

时间:2022-05-22 06:16:35

MINI2440 IIC协议

IIC协议在工程中应用广泛,在我看来,此协议的优势就在于其硬件及其简单,结构清晰。

首先来解读一下S3C2440A这款芯片的IIC协议。
嵌入式LINUX入门到实践(一)

一、一个协议的解读从如上结构图中分析。无非就是四部分。首先从主机发送入手。嵌入式LINUX入门到实践(一)

手册484页,对主机发送模式框图显示如上。解析:

1、配置主机为发送模式   2、发送从机地址与读数据信号  3、ACK  4、发送数据


二、再者是主机读数据模式。

嵌入式LINUX入门到实践(一)

手册485页,对主机接收模式框图显示如上。解析:

1、配置主机为接收模式   2、发送地址与读信号  3、ACK  4、读取数据清除中断


 三、中断的设定与处理是解析协议的另一关键。现在对IIC协议的中断进行分析。

嵌入式LINUX入门到实践(一)

如上图,手册488页IIC控制寄存器。第5位为发送和接收中断使能位。第4位为中断标志位。如果为1则有中断等待。写0清除标志。

在488页低端的注释中对中断的产生和处理有详细说明:

嵌入式LINUX入门到实践(一)

如上,由第2点可知,中断源有3个:1字节(8bit)数据的发送或接收完毕;主机(此时2440位从机)呼叫或从机(2440为主机)地址与主机发送的地址相匹配;仲裁失败(具体后续说明)。

结合中断与主机发送、接收框图,对协议有整体的把握,现在的问题是ACK的分析。


四、ACK分析

嵌入式LINUX入门到实践(一)

手册478页,说明了ACK定义如上。在发送完一个字节后,必须有一个ACK位。所以无论是主机还是从机,在发送数据后都会有ACK位,现在的问题是:


ACK的内容是什么?


嵌入式LINUX入门到实践(一)

嵌入式LINUX入门到实践(一)

由上两图中可知,发送者发送1byte后释放SDA,接收者将SDA拉低。

因此ACK是约定好的。是不可更改的约定。


五、程序编写。

参考韦东山LINUX教程的第二部分裸机程序,对IIC进一步认识。

在接下来的程序中对IIC程序进行分析。

-----------------------------------------------------------------2015.8.4------------------------------------------------------------