S5PV210-arm-裸机-i2c

I2C协议,是同步的,串行通信方式。有两个线,一根SCLOCK时钟线,一根SDA数据线,时钟是右SOC提供的,SOC和外设用I2C通信时,使用的是一个时钟,数据线是两者传输信息用的。一般在通信的过程中,分为主设备和从设备,如果主设备要向从设备发送信息时,从设备不可以发送东西。

可以一对一进行I2C通信,也可以一对多进行I2C通信,在一对多I2C通信时,主设备像往常一样先把SDA,SCL拉高,SCL维持高电平的这一段时间里,SDA产生了一个由高电平到低电平的变化,就成功发送了一个起始位,这时,所有的从设配都开始把自己的耳朵竖起来听了, 因为所有从设备都是连接在这两条总线上的。发送完起始位后,主设备开始发送八位数据了,分别在SCL的每一个上升沿读取SDA数据线的高电平和低电平对应的0和1,这八位数据包括七位的从设备的地址,和一位(0或1)代表读或者写。当从设备发现发送过来的地址后,就赶紧把这个地址和自己的地址进行对比(每个从设备都有一个自己固定的地址(在一个电路板上)),如果从设备发现发送过来的地址和自己的地址相符合,就知道这时主设备就要开始和自己进行通信了。如果发现发送过来的地址和自己的地址不符合,那么从设备就不给予理会,因为它知道不是在叫他。当发现地址和自己的地址一样时,这个设备就开始读取了第八位,从而知道主设备是要跟它进行写还是读,确认是读或者写后,接收方要给发送发一个应答信号ACK,来告诉一声发送放,证明它收到了,它知道了。当接收方看见这个ACK信号后,就知道他已经应答了,回复了,接着就开始发送真正的数据了。也是八位的数据,因为I2C在通信时,一次传输的数据是一个字节。接收方接受到这些数据后,也要发送一位应答信号,来告诉发送方我已经接收完毕了。接着发送方就可以发送一个停止位,证明这次通信结束了。停止位是SCL维持在一个高电平的时间段内,SDA由一个低电平到一个高电平的变化。

在两个设备在进行I2C通信时,主设备发完起始位后,就要开始发送地址,去寻找要进行通信的那个从设备,这个地址一共由八位组成,其中高7位是地址,低一位是R/W,读或者写,一般如果主设备要接收从设备的数据时,低一位为1,反之为0.

一般是发送一个起始信号,在发送一个字节的地址信息,包括RW位,一共八位,接着等从设备发送ACK响应,我们在接收一个字节的数据,这八位就是我们要读的数据。读完后,我们要给从设备发送一个ACK,告诉它我们读完了,接着我们在给发送一个停止位,或者不发送停止位,继续读。

代码的框架:

整个代码的框架包括两部分,一部分是I2C的代码,称为物理层,就负责I2C的时序,起始位,发送数据,接受数据应答的时序等。

另一份部分是G - secsor传感器的代码,这部分代码称为应用层,协议层,传输层,负责控制自己内部的寄存器,如果是通过总线给自己写数据的话,也就是说如果是SOC控制I2C的物理层给Gsensor的数据的话,就是在Gsensor协议层去操作,去调用I2C的发送数据的函数,将数据写入到自己的相应的寄存器中。

如果是SOC控制Gsensor通过I2C总线读取数据到SOC的话,就是在Gsensor的协议层代码中通过调用I2C的接收

函数,将寄存器中的数据通过I2C的总线传输到SOC中去。

所以整个代码框架是分两个部分的,一部分是I2C的代码叫做物理层,一部分是Gsensor的代码,叫做协议层,或者应用层,或者传输层。

在协议层写代码时,只要知道自己的工作流程即可,不用去关心I2C物理层的代码是怎么实现的。

时间: 2024-10-12 15:04:35

S5PV210-arm-裸机-i2c的相关文章

ARM裸机之点亮LED

声明:本文由个人学习过程中整理而成,转载请注明出处 实验开发版:S5PV210 1.什么是GPIO? General Purpose Input Output (通用输入/输出)简称为GPIO,属于芯片引脚的一部分. 嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号.而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如灯亮与灭.对这些设备/电路的控制,使用传统的串行口或并行口都不合适

ARM裸机

ARM体系结构与汇编指令可编程器件的特点 CPU在固定频率的时钟控制下节奏运行 CPU可以通过总线读取外部存储设备中的二进制指令集,然后解码执行 这些可以被CPU解码执行的二进制指令集是CPU设计的时候确定的,是CPU的设计者ARM定义的,本质上是一串01组成的数字,这就是CPU的汇编指令集.从源代码到CPU执行过程 .C等高级语言源代码---编译器--->.S汇编源代码---汇编器--->Elf格式二进制可执行程序---Objcopy工具--->Bin格式烧录文件---总线--->

ARM裸机开发中内存管理库RT_HEAP的使用

在使用arm芯片进行裸机开发的时候,很多时候都需要内存管理的功能,我们可以使用自己写的内存管理程序,也可以直接使用标准库,不过我一般比较喜欢标准库,速度快,今天就来说说在C语言环境下怎么样进行内存的动态使用 首先,应该初始化C堆,初始化代码如下 #include "malloc.h" #pragma import (__use_realtime_heap) //这个函数在rt_heap.h中声明,需要用户自己去实现,返回任意值 unsigned __rt_heap_extend(uns

ARM裸机程序之LED灯

从3月份开始看arm的裸机程序,到现在一个半月了,做到后来,发现自己越做到综合的程序,越吃力,还是得回头看看,为了最终写一个bootloader打下点基础吧,所以以这篇文章为开始,总结一下之前做过的裸机程序,希望会有所收获,我用的开发板是友善之臂的mini2440. 首先声明一点我都是在linux环境下写裸机程序的,因为这样能知道更多底层的东西,不过在这里面写就是有点不方便的是调试的时候,所以你程序要是调试不出来,你得把程序移植到一些编译器里调试(请注意移植的时候格式有点不同),所以偶尔在kei

嵌入式外部中断控制编程方法论—比較CC2541(51核)和S5PV210(ARM核)

这是一篇阐述怎样对嵌入式SOC外部中断进行控制编程的方法论文章.希望读者理解本篇文章后.能够具备对市场上全部已经面世和将来面世的嵌入式芯片的外部中断进行控制编程的能力. 笔者原创的技术分享一直都恪守下面原则: 从需求的角度去理解嵌入式各种软件和硬件模块的作用和组成.并从芯片系统设计的角度去阐述怎样进行控制编程. 前者对于理解复杂的系统(如linux的各个子系统)是非常有效的:后者所讲的是代表一个芯片设计project师的视觉,芯片模块由他负责设计,他对于该模块的控制编程自然是最有发言权的. 笔者

ARM裸机编程系列----nandflash

关于NAND Flash S5PV210的NAND Flash控制器有如下特点: 支持512byte,2k,4k,8k的页大小 通过各种软件模式来进行NAND Flash的读写擦除等 8bit的总线 支持SLC和MCL的NAND Flash 支持1/4/8/12/16bit的ECC 支持以字节/半字/字为单位访问数据/ECC寄存器,以字为单位访问其他寄存器. 注意:在此使用的GEC210的NAND Flash类型为SLC,大小为512MB,型号为K9K8G08U0A.所以本章的内容是针对SLC类

ARM裸机第十一部分-NandFlash和iNand

NandFlash和iNand NandFlash的接口 Nand的型号与命名 (1)Nand的型号命名都有含义,就拿K9F2G08来示例分析一下:K9F表示是三星公司的NandFlash系列.2G表示Nand的大小是2Gbit(256MB).08表示Nand是8位的(8位就是数据线有8根) (2)Nand命名中可以看出:厂家.系列型号.容量大小.数据位数. Nand的数据位 (1)Nand有8位数据位的,有16位数据位的.做电路时/写软件时应该根据自己实际采购的Nand的位数来设计电路/写软件

【转载】eclipse调试arm裸机程序

一.集成开发环境 软件部分:eclipse , GDB Server , Jlink软件 硬件部分:Jlink硬件 准备工作1:从SD/NOR Flash启动,格式化nand flash 准备工作2:硬件连接 1. Jlink连接 2. 串口连接 3. nand启动 二.安装GDB Server 解压:tar xvzf arm-linux-gdb-7.5.tar.gz 进入目录:cd arm-linux-gdb-7.5 编译安装:./build-all 上面执行好后,gdb工具就安装好了,安装在

Linux ARM IIC I2C EEPROM 读写操作

检测有几组i2c总线 [email protected]:~# i2cdetect -l i2c-0 i2c        OMAP I2C adapter                 I2C adapter i2c-1 i2c        OMAP I2C adapter                 I2C adapter [email protected]:~# 检查每个总线上的设备在线状态:-y表示yes,0表示/dev/i2c-0 [email protected]:~# i2

eclipse调试arm裸机程序

一.集成开发环境 系统:centos 6.5 软件部分:eclipse , GDB Server , Jlink软件 硬件部分:Jlink硬件 准备工作1:从SD/NOR Flash启动,格式化nand flash 准备工作2:硬件连接 1. Jlink连接 2. 串口连接 3. nand启动 二.安装GDB Server 下载 GDB   ftp://sourceware.org/pub/gdb/releases/ 解压:#tar xvzf gdb-7.5.tar.gz 进入目录:#cd gd