裸机——I2C 2
2024-09-30 18:42:00
前面的随笔完成了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应该发什么
思路有了,现在看代码
最新文章
- 树莓派 基于Web的温度计
- 1Z0-053 争议题目解析520
- 用Backbone.js教程系列的链接
- 使用SQL Server作业设置定时任务
- 在_Layout模版中使用@Styles.Render()没有效果
- FineUI第四天---PageManage的概述
- 【CC评网】2013.第39周 漂亮的作息表
- Docker 监控- Prometheus VS Cloud Insight
- 2.x ESL第二章习题2.5
- PHP 魔术变量和魔术函数详解
- 学习vue 20天,我写了点东西
- year:2017 month:7 day:19
- servlet实现登陆注册
- 【NOIP模拟】LCS及方案数(DP)
- c++自定义类型
- 解决C#程序只允许运行一个实例的几种方法详解
- CNVD-C-2019-48814 漏洞
- C++使用目录
- C# 多进制转换
- Android开发-基本概念(申明:来源于网络)