当前课程知识点:ARM微控制器与嵌入式系统 >  第五章 ARM微控制器的各种外设 >  5.7.4 ARM微控制器外设:I2C编程实例—加速度传感器 >  5.7.4 ARM微控制器外设:I2C编程实例—加速度传感器

返回《ARM微控制器与嵌入式系统》慕课在线视频课程列表

5.7.4 ARM微控制器外设:I2C编程实例—加速度传感器在线视频

5.7.4 ARM微控制器外设:I2C编程实例—加速度传感器

下一节:5.8.1 ARM微控制器外设:ADC简介

返回《ARM微控制器与嵌入式系统》慕课在线视频列表

5.7.4 ARM微控制器外设:I2C编程实例—加速度传感器课程教案、知识点、字幕

各位同学大家好

我是清华大学工程物理系的曾鸣老师

欢迎大家继续回到我们

ARM微控制器与嵌入式系统的MOOC课堂

继续进行I2C同步串行通讯的

最后一个单元的学习

前面三个单元里

我们学习了它的基本原理

电气特性 通讯协议 数据帧

特别是以运动传感器或者加速度传感器

这样一种芯片作为靶子

学习了它的函数如何封装

如何编程把一个I2C接口给用起来

那么这个单元

我们用很短的时间来给讲讲

怎么把它玩起来

它能怎么玩

那么我们用的加速度传感器

这样一种芯片

它是一个典型的I2C的通讯接口

它是一个数字芯片

所以我们通过I2C接口可以对它进行读写

读它内部的寄存器

写它内部的寄存器

分别获得数据和对它进行配置

那么我们知道它接到了

PORTE的一个I2C引脚上

那么我要考一考大家

一个I2C这个芯片

我们真正把它用起来

怎么才能用好呢

或者怎么才能真正掌握它呢

我建议大家学一个东西

就从它的原理学起

不要丢掉它的物理本质

我们把它芯片手册打开

看看它的基本原理

如果这是一门时间拉的更长

时间更冗余的课我就会考一考大家

说如果你是一个芯片设计人员

或者说你是一个创意人员

你来做一种创意创新

你会用什么样的结构

来使加速度或者运动这样一种量

变成一个电学量可以被你采集

那么很多同学就脑袋一片空白

说曾老师你这个脑洞好大

怎么突然问这样一个问题

其实不是的

很多这样的传感器背后都有它的道理

比如说我们说加速度或者我们的运动

我们会想到什么呢

我们会想到加速度会反映成什么样

可测量的物理量那大家会想想想

想了很多

其实有一个中学物理学过很多的东西

就是弹簧振子

对吧 我们有胡克定律

所以一个弹簧振子

在一个这个加速度体系里头

它的位移代表了这个它的加速度

那么有了一个弹簧振子的概念

也就说如果我们有一个类似于

弹簧振子的结构

我们可以通过这些振子的位置

来反映加速度大小

那如果我们有了几个振子

比如说像这样一张芯片的示意图里几个板

那大家能不能产生联想

它怎么变成电学量的

有的同学在这个时候就开始开窍了

就是说板跟板嘛

那我电容啊

这个面积一定距离变电容大小就变

这就慢慢就有道理了

所以我们加速度传感器芯片的高度抽象

它的内部结构是由Mask工艺实现的

用硅实现的

但是它的高度抽象就是这样一个

带有阻尼的这样的平行板

而这种板的位移变成了

随加速度可调的电容

这就是它的基本原理

所以当我们有一个可调电容的时候

我们可以通过这些电容值改变

带来在一定电压上它的电荷量的改变

或者一定电荷量上它电压的改变

这样一些电学量的关系

来实现对于加速度的电学表征

所以我们测量这些电压或者电荷量

我们就能实现对于加速度测量

如果有朝一日大家会深入的

进行电子学研究时候你会发现

你对这种电学量的测量的精度

就决定了你对于加速度测量的精度

和动态范围

所以我们就会理解我们能买到不同的

测量精度和动态范围的加速度传感器

这是第一个物理概念

第二个物理概念是我们使用了

是一种三轴加速度传感器

也就是我们测量的是沿芯片的

这个切向反向xyz三个轴的加速度的分量

那么实际上我们真正在物理世界里头

我们最最常见的加速度是什么呢

其实并不是我们运动起来加速度

而是无所不在的重力加速度g对吧

所以我们一个芯片放置的时候

总在某一个轴的方向上

会有一个g的加速度是可以测量到的

那么实际上我们这样一种芯片

大家另外一个联想是

它不仅是一个运动传感器

它也是一个姿态传感器

当我们以一个θ角放置这个芯片的时候

其实它沿这三个轴就会分别产生

比如说在两个轴上产生sinθ和cosθ的

重力加速度g的分量

所以我们对它进行三角函数的

拟合或者查表

其实是可以进行它所放置的姿态测量的

所以同样一个传感器

我在这个单元里

想给大家讲的是拓宽拓宽思路

理解它的原理就能领会

它一些额外的一些应用

放在智能车比赛里

它可以测加速度也可以测车的姿态

然后放在一些别的产业应用里

可以产生一些原来大家没有想到的idea

比如说精密仪器在运输过程当中

是否发生过倾覆

是否发生过颠簸等等等这样一些应用

那么我们这样一个芯片的电路抽象图

就是芯片手册里能够给大家这样一张图

我们在芯片手册第三页就能看到

它不仅是这样一种类似电容的传感器

内部还集成了

模拟电路 运算放大器 ADC采样

最后以I2C的方式能够为我们读写

那么我们对它进行读写

我们会发现我们有这么一个芯片

它的引脚、封装 它的电气特性

其实都给大家了

大家顺着一页一页

翻这个芯片手册就能翻到

那么在这个芯片手册里

我们如果仔细地阅读芯片手册呢

还能获得很多有用的信息

比如说我们用的这个型号

跟它的姊妹型号比

它的这个加速度测量的精度

是不是有点差异

那么又比方说我们都说I2C通讯的时候

每个设备都有它自己唯一的七比特地址

那我们现在板上这个芯片的

七比特地址是什么呢

曾老师刚才讲了一些函数

其实我没有提这个地址

这个地址到哪去找

我应该用哪个地址

才能跟这个芯片通讯上呢

都在我们的芯片手册里

大家就会发现在这张表格里的

最后一行写了我们这个芯片的地址

要么就是0XEC

要么就是0XED

这个芯片有一个引脚

这个引脚接高电平或者低电平

使这个芯片可以配置为两个不同的地址

那么我们在一个I2C总线里头

也就最多能接两个这样的芯片

他们彼此地址不一样

那么大家这个时候

再回过头去看看我们的电路图

这个芯片它的这个引脚

究竟是接了高电平还是接了低电平

我们刚才上节课讲的函数

对于我们板子上的加速度传感器

应该用EC这个地址访问

还是应该用ED这个地址访问

这是大家自己应该回答的问题

那么大家看看我们芯片手册上

也会给出这样一个I2C的通讯时序图

这种时序图跟我刚才的画法不一样

大家静下心来看一看

是不是跟我们刚才讲

I2C的基本概念的时候

时序图在本质上其实是一样的

我们编的函数是不是能跟它兼容

能够正确地完成通讯

这都是大家应该作为设计者的角色

应该琢磨的事情

然后最后一个要讲的内容呢

是这样一个芯片内部的寄存器表

你刚才讲这个芯片内部有寄存器

上节课也讲了

对它的内部的寄存器知道寄存器的地址

如何做个写操作

知道寄存器地址如何做个读操作

我们来看看有哪些寄存器

我们会发现这样一张表

最最简单的使用

只想知道加速度的值

我们要涉及到哪几个东西

就是红框里的这两组

最下面关于这个2A这个地址的

这个寄存器是一个控制寄存器

是配置我们这个加速度传感器开始工作

然后上面有这么几个寄存器呢

16比特 16比特

也就是两个寄存器一组呢

分别是xyz三个轴的加速度的值

所以我们对于这样一个

加速度传感器的编程

在上节课函数封装的基础上抽象下来

就是这个控制寄存器的

若干个比特我们要正确的配置它

进入一个正确的工作模式

也就是要对它进行一次写操作

对于0X2A这个子地址写操作

把它配置到工作模式

接着我们要对xyz三个轴的寄存器

分别进行读取

读取加速度这个测量芯片

当前测到的xyz轴的加速度的值

那么封装成函数就是这两句话

我们对我们这样一个

加速度传感器的芯片

进行一次寄存器的写操作

从时序上来讲

我给大家展开回忆

先要访问EC或者ED那个七比特的地址

在I2C总线上锁定是访问这个芯片

接着要写入2A这样一个

寄存器的子地址再写入01

这样一个我们要给这个寄存器赋的值

三个周期 三个时序

完成一次寄存器的配置

使这个芯片开始工作

然后我们以后

可以通过这个芯片的读取函数

每次来读取其中某一个轴的加速度的值

那么依次也是写入芯片的地址EC或者ED

然后写入这个寄存器的子地址

进行一下restart

再次写入这个芯片子地址读取

这个寄存器刚才我们要的这个地址的值

大家回忆一下这个时序

周而复始我们可以以不同的速度

不同的频率 时间间隔

去读这些加速度的值

从而获得我们这样一块开发板

它的姿态 它的运动的状态

然后来实现一些更加有趣的功能

比如以前有同学用这个板子

来测试老人有没有摔倒

有同学用这个板子来玩体感游戏晃一下

这个小鸟就飞一下

或者人物就跳一下

或者用这个板子的摇晃来控制一个赛车

这都是大家可以把它

风风火火的玩起来创意的内容

那么学完了这个内容

我们体会一下我们通过I2C这样一种

所谓的总线同步串行协议

扩充了一个我们KL25这样一种

ARM微控制器

不具有的加速度测量的功能

使我们能够测量加速度

以此类推在这个I2C总线上

在一个单一的接口上

我们以总线的方式

还能扩充很多别的外设模块

所以它称为Inter IC Bus

也就是I2C

也就是我们这个单元所学习的内容

那么大家可以在日后灵活的把I2C用起来

让我们这个板子

让我们所设计的系统 变得功能更加丰富

而在这个单元里

希望大家消化我刚才讲的内容

把你们的加速度传感器给玩起来吧

ARM微控制器与嵌入式系统课程列表:

第一章 概览

-1.1 课程概览

--1.1 课程概览

-1.2 如何学好嵌入式系统

--1.2 如何学好嵌入式系统

第二章 绪论

-2.1 计算机的基本概念、发展历史

--2.1 计算机的基本概念、发展历史

-2.2 从晶体管到CPU

--2.2 从晶体管到CPU

-2.3 概念CPU、微控制器MCU和嵌入式系统

--2.3 概念CPU、微控制器MCU和嵌入式系统

-2.4 八卦计算机史

--2.4 八卦计算机史与创新

-2.5 不同领域、不同系列的嵌入式系统

--2.5 不同领域、不同系列的嵌入式系统

-2.6 ARM历史与MKL25Z128 MCU

--2.6 ARM历史与MKL25Z128 MCU

--2.6 ARM历史与MKL25Z128 MCU【习题】

--2.6 ARM历史与MKL25Z128 MCU【讨论】

第三章 MCU基础

-3.1 CPU的基本结构和运行机制

--3.1 CPU的基本结构和运行机制

-3.2.1 堆栈的概念

--3.2.1 堆栈的概念

--3.2.1 堆栈的概念【习题】

-3.2.2 堆栈的概念-头脑体操

--3.2.2 头脑体操

-3.3.1 ARM的体系结构

--3.3.1 ARM的体系结构

--3.3.1 ARM的体系结构【习题】

-3.3.2 ARM的体系结构-头脑体操

--3.3.2 ARM的体系结构-头脑体操

-3.4.1 中断的概念和机制

--3.4.1 中断的概念和机制

-3.4.2 中断子程的概念和编程

--3.4.2 中断子程的概念和编程

-3.5 复位、时钟、存储器和总线

--3.5 复位、时钟、存储器和总线

--3.5 复位、时钟、存储器和总线【习题】

-3.6 小结:MCU的总体结构和程序运行机制

--3.6 小结:MCU的总体结构和程序运行机制

--3.6 小结:MCU的总体结构和程序运行机制【习题】

第四章 ARM微控制器的开发

-4.1 第一种外设:IO

--4.1 第一种外设:IO

-4.2 IO外设的编程实操-点亮LED

--4.2 IO外设的编程实操-点亮LED

-4.3 IO外设的进阶知识

--4.3 IO外设的进阶知识

-4.4 嵌入式开发的基本概念与工具链

--4.4 嵌入式开发的基本概念与工具链

-4.5 嵌入式开发的进阶知识

--4.5 嵌入式开发的进阶知识

-4.6 嵌入式开发中的C语言(上)

--4.6 嵌入式开发中的C语言(上)

--4.6 嵌入式开发中的C语言(上)【习题】

-4.7 嵌入式开发中的C语言(下)

--4.7 嵌入式开发中的C语言(下)

--4.7 嵌入式开发中的C语言(下)【习题】

-E0.1 实验零 开发板的初步认识与工具链的安装

--E0.1 实验零 开发板的初步认识与工具链的安装

-E0.2 实验零 体验一个例程的编译与下载

--E0.2 实验零 体验一个例程的编译与下载

-E0.3 实验零 编写第一个程序:点亮核心板LED

--E0.3 实验零 编写第一个程序:点亮核心板LED

-E1 实验一 点灯秘籍

--E1 实验一 点灯秘籍

第五章 ARM微控制器的各种外设

-5.1 ARM微控制器外设学习概述

--5.1 ARM微控制器外设学习概述

-5.2.1 ARM微控制器外设:通讯

--5.2.1 ARM微控制器外设:通讯

-5.2.2 ARM微控制器外设:异步串行通讯UART的原理(上)

--5.2.2 ARM微控制器外设:异步串行通讯UART的原理(上)

--5.2.2 ARM微控制器外设:异步串行通讯UART的原理(上)【习题】

-5.2.3 ARM微控制器外设:异步串行通讯UART的原理(下)

--5.2.3 ARM微控制器的外设:异步串行通讯UART的原理(下)

--5.2.3 ARM微控制器外设:异步串行通讯UART的原理(下)【习题】

-5.2.4 ARM微控制器外设:RS-232串口与USB虚拟串口

--5.2.4 ARM微控制器外设:RS-232串口与USB虚拟串口

-5.2.5 ARM微控制器外设:UART的寄存器编程(上)

--5.2.5 ARM微控制器外设:UART的寄存器编程(上)

-5.2.6 ARM微控制器外设:UART的寄存器编程(下)

--5.2.6 ARM微控制器外设:UART的寄存器编程(下)

--5.2.6 ARM微控制器外设:UART的寄存器编程(下)【习题】

-E2 实验二 UART编程实操

--E2 实验二 UART编程实操

-5.3.1 ARM微控制器外设:IO的中断编程(上)

--5.3.1 ARM微控制器外设:IO的中断编程(上)

-5.3.2 ARM微控制器外设:IO的中断编程(下)

--5.3.2 ARM微控制器外设:IO的中断编程(下)

-5.4.1 ARM微控制器外设:定时器的原理

--5.4.1 ARM微控制器外设:定时器的原理

-5.4.2 ARM微控制器外设:定时器的编程

--5.4.2 ARM微控制器外设:定时器的编程

--5.4.2 ARM微控制器外设:定时器的编程【习题】

-E3 实验三 定时器中断编程实操

--E3 实验三 定时器中断编程实操

-5.5.1 ARM微控制器外设:PWM的原理

--5.5.1 ARM微控制器外设:PWM的原理

-5.5.2 ARM微控制器外设:PWM寄存器与编程

--5.5.2 ARM微控制器外设:PWM寄存器与编程

-5.5.3 ARM微控制器外设:PWM编程实例—电子音乐

--5.5.3 ARM微控制器外设:PWM编程实例—电子音乐

-E4 实验四 数码管显示编程实操

--E4 实验四 数码管显示编程实操

-5.6.1 ARM微控制器外设:SPI通讯简介

-- 5.6.1 ARM微控制器外设:SPI通讯简介

--5.6.1 ARM微控制器外设:SPI通讯简介【习题】

-5.6.2 ARM微控制器外设:SPI寄存器与编程

-- 5.6.2 ARM微控制器外设:SPI寄存器与编程

-5.6.3 ARM微控制器外设:SPI编程实例—OLED显示屏驱动

--5.6.3 ARM微控制器外设:SPI编程实例—OLED显示屏驱动

-5.7.1 ARM微控制器外设:I2C通讯简介

--5.7.1 ARM微控制器外设:I2C通讯简介

-5.7.2 ARM微控制器外设:I2C的通讯协议

--5.7.2 ARM微控制器外设:I2C的通讯协议

-5.7.3 ARM微控制器外设:I2C寄存器与编程

--5.7.3 ARM微控制器外设:I2C寄存器与编程

--5.7.3 ARM微控制器外设:I2C寄存器与编程【习题】

-5.7.4 ARM微控制器外设:I2C编程实例—加速度传感器

--5.7.4 ARM微控制器外设:I2C编程实例—加速度传感器

-5.8.1 ARM微控制器外设:ADC简介

--5.8.1 ARM微控制器外设:ADC简介

-5.8.2 ARM微控制器外设:ADC基础

--5.8.2 ARM微控制器外设:ADC基础

-5.8.3 ARM微控制器外设:ADC寄存器与编程

--5.8.3 ARM微控制器外设:ADC寄存器与编程

-E5 实验五 ADC编程实操

--E5 实验五 ADC编程实操

-E6 挑战实验

--E6 挑战实验

第六章 嵌入式系统设计

-6.1 嵌入式系统的接口与设计

--6.1 嵌入式系统的接口与设计

-6.2 嵌入式系统的实例

--6.2 嵌入式系统的实例

5.7.4 ARM微控制器外设:I2C编程实例—加速度传感器笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。