裸机——I2C 2
前面的随笔完成了I2C时序分析(不涉及仲裁)
现在可以学使用控制器的I2C了。
1.先回顾I2C的基础知识
(1)总线包括SCL + SDA。
(2)通信的特点:
同步,串行,电平
所以决定了 I2C 低速,抗干扰不强,无法长距离传输。
(3)从设备 + 主设备
I2C总线上可以来连接多个从设备,形成一对多,
为了识别从设备,主设备通过从设备地址来识别。
(4)传输数据格式

2. 接下来看SoC上I2C控制器的逻辑结构

3.I2C的操作与具体的外设有关,下面以g-sensor为例
先理清思路:
(1)设置GPIO和电源(看原理图)
(2)获得从设备的地址,和最大工作频率(外设芯片手册)
(3)查看外设的I2C通信流程图(外设芯片手册)
首先需要看g-sensor的原理图,解决其电源和GPIO工作模式

可以看出,g-sensor要工作,需要将 PWMTOUT3设置位输出高电平,I2C相关的GPIO需要设置为 I2C 模式
现在需要从设备地址和最大工作电频


这样就晓得了从设备地址 0x0001111
最大通信频率 400KHZ
然后从 SoC 的数据手册可以晓得 0 写 1 读。
这样,就能让 CPU 和 g-sensor 通信了。
但是如何通信,需要查看 g-sensor 的通信流程

上面这张图指示了SoC的通信的流程图中,Data应该发什么

思路有了,现在看代码
裸机——I2C 2的更多相关文章
- 裸机——I2C
网上搜了些资料,碍于智商和基础,看不懂, 只有将S5PV210 数据手册关于I2C的部分,翻译记录下,留到以后用. 1.OVERVIEW The S5PV210 RISC microprocessor ...
- linux之I2C裸机驱动解析(转)
1 硬件特性 1.1 概述 I2C总线是由Philips公司开发的两线式串行总线,这两根线为时钟线(SCL)和双向数据线(SDA).由于I2C总线仅需要两根线,因此在电路板上占用的空间更少, ...
- I2C裸机驱动程序设计
① I2C(Inter-Integrated Circuit)总线是由飞利浦公司开发的两线式串行总线,用于连接微控制器及其外围设备 ② I2C总线有两根双向信号线 (1)SDA:Serial Data ...
- mini2440裸机之I2C
// File Name : IIC.c // Function : S3C2440 IIC-bus Master Tx/Rx mode Test Program // (I ...
- [国嵌攻略][153][I2C裸机驱动设计]
eeprom简介 eeprom电可擦除可编程只读存储器,是一种类似于flash的固态存储器,但是与flash相比又存在一些区别: 1.eeprom可以按位擦写,而flash只能大片擦除. 2.eepr ...
- JZ2440 裸机驱动 第12章 I2C接口
本章目标: 了解I2C总线协议: 掌握S3C2410/S3C2440中I2C接口的使用方法: 12.1 I2C总线协议及硬件介绍 12.1.1 I2C总线协议 1 I2C总线的概念 2 I2C总线的信 ...
- STM32 硬件I2C 到底是不是个坑?
/** ****************************************************************************** * @author Maox ...
- [I2C]I2C架构分析
转自:http://blog.csdn.net/wangpengqi/article/details/17711165 1. I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一 ...
- I2C总线和S5PV210的I2C总线控制器
一.什么是I2C通信协议? 1.物理接口:SCL + SDA (1)SCL(serial clock):时钟线,传输CLK信号,一般是I2C主设备向从设备提供时钟的通道. (2)SDA(serial ...
随机推荐
- CSS的相对定位和绝对定位(position)
什么是定位呢? 定位(position),故名思议,就是确定元素在页面中的位置. CSS的常用定位有两种,一种是相对定位,一种是绝对定位. 下面我们看例子 <html> <head& ...
- position:fixed相对父级元素定位而不是浏览器
position:fixed默认是相对浏览器定位的 原理:fixed定位相对父级容器定位,不添加:top,bottom,left,right样式,通过margin定位 代码:http://jsbin. ...
- CommonJS 的实现原理
CommonJS 使用 Node.js 的四个环境变量moduleexportsrequireglobal 只要能够提供这四个变量,浏览器就能加载 CommonJS 模块. Browserify 是目 ...
- java:xml解析
DOM.SAX.JDOM.DOM4J四种解析:https://www.cnblogs.com/longqingyang/p/5577937.html Java解析XML文件例子:https://blo ...
- php中增删改查以及返回结果(一)
虽然毕业后找的第一份正式的工作并不那么令人满意,但是在度过最初的迷茫期后,自己还是决定成为一个程序猿. 最近也是利用上班偶尔闲下来的时间,开始看书,撸代码,写一些小程序. 这两个礼拜主要的写的都是有关 ...
- 如何将windows日志转成syslog格式并发到远程sysylog服务器
安装Snare, 随便找了个版本下载下来,安装一路next,除了中间让你输入一次http的管理登录口令. 2,配置 之后打开URL:http://192.168.37.23:6161/,输入默 ...
- IOS 多线程-NSThread 和线程状态
@interface HMViewController () - (IBAction)btnClick; @end @implementation HMViewController - (void)v ...
- Poj(2240),Floyd求汇率是不是赚钱
题目链接:http://poj.org/problem?id=2240. Floyd算法修改一下,我要最大路径(通过转汇率变到最大)改成max. #include <iostream> # ...
- 自己编写shave函数
import numpy def shave(I,border=None): I = I[border[0]:I.shape[0]-border[0],border[1]:I.shape[1]-bor ...
- malloc动态分配字符串数组“ 一个月内的提醒”
//输出一个月提醒 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_R ...