嵌入式LINUX入门到实践(一)
MINI2440 IIC协议
IIC协议在工程中应用广泛,在我看来,此协议的优势就在于其硬件及其简单,结构清晰。
首先来解读一下S3C2440A这款芯片的IIC协议。
一、一个协议的解读从如上结构图中分析。无非就是四部分。首先从主机发送入手。
手册484页,对主机发送模式框图显示如上。解析:
1、配置主机为发送模式 2、发送从机地址与读数据信号 3、ACK 4、发送数据
二、再者是主机读数据模式。
手册485页,对主机接收模式框图显示如上。解析:
1、配置主机为接收模式 2、发送地址与读信号 3、ACK 4、读取数据清除中断
三、中断的设定与处理是解析协议的另一关键。现在对IIC协议的中断进行分析。
如上图,手册488页IIC控制寄存器。第5位为发送和接收中断使能位。第4位为中断标志位。如果为1则有中断等待。写0清除标志。
在488页低端的注释中对中断的产生和处理有详细说明:
如上,由第2点可知,中断源有3个:1字节(8bit)数据的发送或接收完毕;主机(此时2440位从机)呼叫或从机(2440为主机)地址与主机发送的地址相匹配;仲裁失败(具体后续说明)。
结合中断与主机发送、接收框图,对协议有整体的把握,现在的问题是ACK的分析。
四、ACK分析
手册478页,说明了ACK定义如上。在发送完一个字节后,必须有一个ACK位。所以无论是主机还是从机,在发送数据后都会有ACK位,现在的问题是:
ACK的内容是什么?
由上两图中可知,发送者发送1byte后释放SDA,接收者将SDA拉低。
因此ACK是约定好的。是不可更改的约定。
五、程序编写。
参考韦东山LINUX教程的第二部分裸机程序,对IIC进一步认识。
在接下来的程序中对IIC程序进行分析。
-----------------------------------------------------------------2015.8.4------------------------------------------------------------
最新文章
- C# 在excel中查找及替换数据
- 关于app的具体实施
- notepad++编译并运行java (自定义包)
- android ble connect slowly
- iOS之Xcode8 Auto Layout新特性
- 用NodeJs实现优先级队列PQueue
- 如何捕获winform程序全局异常?
- Eclipse中启动tomcat时内存溢出
- Asp.Net Core 下 Newtonsoft.Json 转换字符串 null 替换成string.Empty
- mac 配置 ssh 到git (Could not resolve hostname github.com, Failed to connect to github.com port 443 Operation timed out)
- (转)Introductory guide to Generative Adversarial Networks (GANs) and their promise!
- The type org.apache.commons.cli.Options cannot be resolved. It is indirectly referenced from required .class files
- 懒人习惯之ButterKnife Zelezny
- Python 判断文件是否存在的三种方法
- oracle(六) physical read and logical read
- Ubuntu16.04安装jupiter
- python的面对对象
- WinForm 使用 NPOI 2.2.1从datatable导出Excel
- 记重回IT行业的面试
- java随机数Reandom(简单介绍)
热门文章
- Android开发之火星坐标转换工具
- git stash 暂存当前修改
- 【Todo】JS跨域访问问题的解决
- 类Item_field
- java中的clone
- HDU 3467 (求五个圆相交面积) Song of the Siren
- Dapper使用在WCF上总是说Service找不到
- poj 3260 The Fewest Coins
- 去除 waring Method 'CreateNew' hides virtual method of base type 'TCustomForm'
- POJ 1083 Moving Tables