前面的随笔完成了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应该发什么

思路有了,现在看代码

最新文章

  1. 树莓派 基于Web的温度计
  2. 1Z0-053 争议题目解析520
  3. 用Backbone.js教程系列的链接
  4. 使用SQL Server作业设置定时任务
  5. 在_Layout模版中使用@Styles.Render()没有效果
  6. FineUI第四天---PageManage的概述
  7. 【CC评网】2013.第39周 漂亮的作息表
  8. Docker 监控- Prometheus VS Cloud Insight
  9. 2.x ESL第二章习题2.5
  10. PHP 魔术变量和魔术函数详解
  11. 学习vue 20天,我写了点东西
  12. year:2017 month:7 day:19
  13. servlet实现登陆注册
  14. 【NOIP模拟】LCS及方案数(DP)
  15. c++自定义类型
  16. 解决C#程序只允许运行一个实例的几种方法详解
  17. CNVD-C-2019-48814 漏洞
  18. C++使用目录
  19. C# 多进制转换
  20. Android开发-基本概念(申明:来源于网络)

热门文章

  1. html 01前沿-web介绍
  2. Android基础Activity篇——Intent向下一个活动传递数据
  3. [iuud8]如何在mac下配置cocos2dx环境
  4. expres webpack es6 babel 构建多页系统开发架构
  5. element-ui打包的坑爹之处 !!!必看三遍!!!
  6. WIN7如何在任务栏建立我的电脑的快捷图标
  7. 常用mysql系统参数参考
  8. mysql的慢查询实战+sql优化
  9. 模拟水题,查看二维数组是否有一列都为1(POJ2864)
  10. python 最简单的web应用(一)