嵌入式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分析

时间: 2025-01-01 20:56:48

嵌入式LINUX入门到实践(一)的相关文章

嵌入式LINUX入门到实践

从今天开始,用这个博客记录和总结嵌入式LINUX从入门到实践完整过程. 第一章的内容是IIC协议与自平衡小车.首先树立目标: 1.使用mini2440开发板的IIC协议,采集MPU6050六轴传感器数据. 2.将步骤1整理为驱动,写入LINUX内核. 3.编写简单的上位机3D模型,实时显示传感器状态. 4.完善上述三步骤,完成平衡小车的硬件. 5.搭建基于2440芯片的自平衡小车平台,包括机械与电路部分. 6.完成自平衡小车的平衡. 7.完成自平衡小车的前进和转向. 8.加入安卓端,进行简单的手

嵌入式Linux学习小结

这两个月一直在学习Linux.作为一名刚開始学习的人,学习期间难免磕磕碰碰.走弯路,可是,抱着不怕失败.多尝试的信念,终于还是坚持下来了. 如今已经清楚Linux的框架,知道怎么去开发一个Linux程序.同一时候.随着学习的深入,我发觉自己已经爱上Linux了. 以下简单谈谈我的Linux学习体会,也算是对这段时间的一个小小总结. 嵌入式Linux(ARM+Linux)学习步骤: 1.  在PC上安装虚拟机(如VMware.VirtualBox等),在虚拟机上安装Linux操作系统(如Red H

BeagleBone Black快速入门教程第1章嵌入式Linux之于Maker们

BeagleBone Black快速入门教程第1章嵌入式Linux之于Maker们 Maker的中文含义类似"创客".创客是指一群酷爱科技.热衷实践的人群,他们以分享技术.交流思想为乐.但为了保持Maker的原味,这里我们一致使用英文的Maker.Maker文化是DIY(Do IT Yourself)文化的延伸,它在其中糅合了技术元素.本文选自<BeagleBone Black快速入门教程大学霸> 1.1  Maker的世界 Maker们的兴趣主要集中在以工程化为导向的主题

linux驱动开发重点关注内容--摘自《嵌入式Linux驱动模板精讲与项目实践》

本文摘自本人拙著 <嵌入式Linux驱动模板精讲与项目实践> 初步看起来Linux设备驱动开发涉及内容非常多,而须要实现驱动的设备千差万别.事实上做一段时间驱动之后回首看来主要就是下面几点: (1)对驱动进行分类.先归纳为哪个类型的驱动.归类正确再利用内核提供的子系统进行开发,往往会发现事实上非常多通用的事情内核已经帮我们做了,一个优秀的驱动project师应该最大程度上利用内核的资源.内核已经实现的毕竟稳定性强.可移植性高. (2)找到内核的提供的子系统.接下来就是要制作该子系统对该类设备提

Linux开源模块移植概述暨交叉编译跨平台移植总结--摘自《嵌入式Linux驱动模板精讲与项目实践》

本文摘自<嵌入式Linux驱动模板精讲与项目实践>一书中的"开发与调试技巧". Linux的强大威力就在于有很多开源项目可以使用,通常很多需求可以通过寻找相关的开源模块做为快速解决方案.要把这些开源模块应用到嵌入式中,其中一个关键点就是要使用交叉编译工具对开源项目进行交叉编译. 根据具体情况,下载的开源项目在组织上有很多情况,在此对各种情况进行归类介绍. 1. 下载的开源软件包找不到Makefile 对于这种开源包通常是采用configure的方式组织的,那么第一步就是使用

Linux开源模块迁移概述暨交叉编译跨平台移植总结--从《嵌入式Linux驱动模板简洁和工程实践》

本文摘录<嵌入式Linux驱动模板简洁和工程实践>一本书"开发和调试技术". Linux强大的是,有那么多的开源项目可以使用.通常非常需要可以通过寻找相关的源模块被定义为高速的解决方案.使这些开源模块的嵌入.对开源项目进行交叉编译. 依据详细情况.下载的开源项目在组织上有非常多情况,在此对各种情况进行归类介绍. 1. 下载的开源软件包找不到Makefile 对于这样的开源包一般是採用configure的方式组织的,那么第一步就是使用软件包中的configure生成Makef

嵌入式Linux开发环境的搭建以及嵌入式入门的一些想法

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">       最近开始学习嵌入式Linux开发,对于嵌入式我是完完全全的新手,但是我还是想写一些东西,给后来的人做个参考,让一些人少走些弯路.</span> 1.在主机Linux下安装基本的开发环境: $ sudo apt-get install build-essentia

嵌入式Linux利用Wifi搭建无线服务器(物联网实践之无线网关)

在 http://www.cnblogs.com/heat-man/p/4564539.html中,在嵌入式Linux开发板上我们从最底层实现了一个智能家居的远程控制系统,然而采取的是用网线连接到交换机上的,感觉老土.巧的是,来北京找工作,找到一家做Wifi模组的公司,这几天老大给我的任务是在min210上开发板上跑我们的Wifi模块,以便熟悉环境,好不容易昨天刚搞好,就把自己写的服务器架上试了试,md,无线的感觉就是不一样呀! 下面整理一下思路: 首先你需要一些硬件设施: ARM开发板,计算机

(转)嵌入式linux与ARM开发板的入门建议

第一,学习基本的单片机编程. 对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统.学移植那么只会马上就陷入一个很深的漩涡.我在刚刚开始学ARM的时候是选择ARM7(主要是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维,使用ADS 去编程,第一个实验就是控制 led.学过一段时间ARM的人都会笑这样很笨,实际上也不是,我倒是觉得有这个过程会好很多,因为无论做多复杂的系统最终都会落实到这些最底层的硬件控制,因此