人工智能
最新课程
- 高压系统功能安全简介
- 揭秘高压应用安规中的电气间隙和爬电距离
- 管理微型逆变器中的电源转换挑战
- 比较三相工业系统的交流/直流电源转换拓扑
- 隔离认证概述及其对高压设计的意义
- 在基于 GaN 的电源中实现钛金级效率
- 提高 800V SiC 牵引逆变器效率和功率密度的主要设计注意事项
- 如何设计安全可靠和高效的储能系统
- 使用传统升压控制器创建初级侧调节反激式转换器
- 相移全桥转换器基础知识
热门课程
TI-RSLK 模块 18 - 讲座视频 - 串行通信 - FIFO
大家好,
我是
在本视频中,我们将讨论
串行通信。
换句话说,我们将获取
微控制器中的数据,然后通过
将其传送到
在本视频中,我们将了解相应的基本原理。
换言之,通信是一个
包含三个步骤的过程。
我们必须获取信息,然后将其编码成
一种可以进行传输的形式。
我们将会传输该数据,使其穿过障碍,
跨越一定的距离。
然后,我们需要将该数据解码成信息。
正如我在这里的这个实验
您将会通过
稍后,在下一章中,我们将再次使用
来与另一个微控制器进行通信,
那便是蓝牙微控制器
我们将要使用的协议叫做
通用异步接收/发送(UART)。
我们将会使用中断。
在整个过程中,我们将学习很多
基本参数,比如波特率、带宽
和响应时间。
转入正题吧。
首先,让我们来讨论一下数据是如何进行编码的。
我们将会取一个八位的数据片段,
八位的信息,将其编码成
一帧。
帧是一个不可分割的通信块,
编码过程将在开始位置放置一个
起始位,
该位一定是
一个停止位,
该位一定是
所以帧的组成将会是起始位、八个数据位、停止位。
一次
如果我们是在两个微控制器之间
进行通信,那么实际电压
将会是零或高电平。
其他协议可能会使用其他电压。
但是,这一协议的计时方式是一次一位。
所以,我们可以讨论一位的时间长度,
也就是所谓的位时间。
或者说,每传输一位所耗费的时间。
所有的位都具有相同的时间。
将位时间取倒数便可得到波特率。
也就是每秒的总位数。
我们将以每秒
这将会是我们的波特率。
您会注意到这里没有时钟。
只有数据位。
所以我们需要一种可实现同步的方法。
协议的一部分便是同步的方法。
因为停止位是高位,
起始位是低位,所以一定--
如果我们认为这是前一帧的
停止位,
这里一定会有一个
这意味着帧的开始。
我们便是要同步到这个转换。
输入上的停止--起始转换被用于
进行同步。
波特率是每秒传输的
总位数。
但是如果我们对传输的信息总量
感兴趣,那便是带宽。
在本例中,由于有八个
数据位,十个帧位,
因此系统的带宽将是
波特率的
让我们来看看具体的细节,MSP432
它有四个
我们将在实验
然后在实验
其中的另一个,即
当我们想要配置
我们需要告诉微控制器,引脚不是
GPIO
这意味着需要将
置为
置为
现在,P1.3
UART
我们知道它会一次处理一位。
那么,它是如何一次输出一位的呢?
我们将会使用移位寄存器。
发送器和接收器都有
一个移位寄存器。
当我想要进行传输时,
软件会将数据写入该寄存器。
这里会有一个与该寄存器相关的中断标志位。
如果缓冲器为空,TXIFG
所以通常
一种是忙等待(Busy-wait),
另一种是当该标志为
一旦该标志为
将数据写入那里的寄存器。
UART
添加起始位,
并会添加停止位。
最终可得到一帧的总共
然后,它会在
就像我所说的,
一次发送一位。
发送
接收器的处理方式与之相同。
但要稍微复杂一些,
因为必须要进行同步。
同样,我们会看到,接收器上的
将会使接收器与发送器同步。
现在,它们必须采用相同的波特率。
这个边沿可使两个时钟实现同步。
然后,我将在发现该边沿后,在接收器中
以
然后,停止位被剥离,
起始位被剥离,八个数据位
被加载到另一个寄存器中。
这便是接收数据寄存器。
该寄存器有一个关联的标志。
如果该标志为
基本上,软件要么进行忙等待(Busy-wait),
要么当该标志位为
当该标志出现时,软件
可以从接收缓冲寄存器中读取数据。
这就是它的基本工作方式。
让我来举例说明一下。
在这个特定示例中,我将要传输
小写字母
01100001。
我将会把这个八位数据从这个
发送到那个
这是我的目标。
开始时,这个缓冲器是空的,那个也是空的。
这个标志位(TXIFG)为
这个标志位(RXIFG)为
这就是空闲状态。
发送器注意到了这一情况,
它将会把这个
让我们来看看发生了什么。
61
该标志变成
然后,让我们将其发送出去。
下一步是,当
会被加载到
移位寄存器中。
起始位会在开始位置,
停止位则会在结尾处。
中间这里是我的数据位。
0,
注意,现在发送缓冲器又变成了空的。
所以,如果想要的话,我们实际上可以写入另外一帧。
但是目前还没有全部完成。
还需要传到另一边。
还需要传到另一边。
让我们通过将其向外移出而使其到达另一边。
我们将会一次移动一位。
我们发送一位。
也就是这里。
我们再发送一位。
也就是这里。
再发送一位。
再发送一位。
因此,数据便这样一位一位地移出
发送器,并移入接收器。
这里会有
或者说
起始位、八个数据位,然后是停止位。
在接收到全部
我获得了一整帧。
现在,它可以检查并确保起始位为低位。
它可以检查并确保停止位为
从而检查是否有错误。
假设没有错误,它将会获取
中间的八位并将其加载到
接收寄存器中。
这就是接下来要发生的事情。
61
这个标志位将变成
数据现在已经被传递过来了。
这个标志位便出现了。
同样,它可以导致中断或忙等待循环。
然后软件将会读取
并清除该标志位。
就是这样。
我们将
这里列出了许多细节信息。
为了确保其正常工作,
您必须要阅读
数据手册。
这些是您想要了解的寄存器。
显然,我们必须启用
接收器和发送器。
这是波特率。
我们要在这里设置波特率。
这是我们刚才讨论的两个寄存器。
我们将会写入这个寄存器,然后从这个寄存器读取。
这是出现的两个标志位。
当接收缓冲器中存在数据时,接收标志位会被置为
当发送缓冲器为空时,发送标志位会被置为
而且会有相应的使能位
与这些标志位向关联。
同样,请查阅数据手册。
这不是很复杂。
您可以自己看明白。
那么,我将会如何使用该标志位呢?
为了触发中断,我将设置
发送标志位和接收标志位来触发中断。
在
也可以是其中的任一个。
如果是一个接收标志位,我将读取数据
并将其放入
同样,这里有两个软件
一个从接收器收集数据,
另一个从发送器发送数据。
如果发送器处于空闲状态,这也是
中断发生的原因,那么我将会
从
如果
否则,我将会把数据发送出去。
基本上,我都会以这样的方式
在
在中断服务例程内使用
我将会在接收数据上执行放置操作,
并将执行获取操作。
这是两种不同的
一个是发送通道,一个是接收通道。
综上所述,串行通信
是一种非常常见的协议。
也是比较简单的方法之一。
我们采用的是
数据一次发送一位。
这里没有时钟,所以它使用边沿来进行同步。
在实验中,您将使用中断驱动型连接,
因为它允许我们把很多东西连接在
一起。
本课程到这里马上就要结束了。
我们的机器人已经变得非常复杂,
我们需要能够执行各种任务,
我们的软件需要能够只在需要时执行相应任务,
这便是我们使用中断的原因。
波特率是每秒传输的总位数,
换句话说,这是位时间,
波特率等于
带宽是信息传输速率,
在本例中,由于我们拥有八个数据位,
10
波特率的
这是最大带宽。
希望您喜欢本次实验。
它非常简单,但能让您的微控制器
与另一个微控制器通信。
祝您实验愉快。
- 未学习 TI-RSLK 模块 1 - 讲座视频 – 使用 CCS 在 LaunchPad 上运行代码
- 未学习 TI-RSLK 模块 1 - 实验视频 1.1 – 安装 tirslk_maze
- 未学习 TI-RSLK 模块 1 - 实验视频 1.2 – 安装 CCS 和调试
- 未学习 TI-RSLK 模块 1 - 实验视频 1.3 – 运行 TExaS 逻辑分析仪
- 未学习 TI-RSLK 模块 1 - 实验视频 1.4 – 运行 TExaS 示波器
- 未学习 TI-RSLK 模块 2 - 讲座视频 – 电压、电流和功率
- 未学习 TI-RSLK 模块 2 - 实验视频 2.1 – 测量电容器的阻抗
- 未学习 TI-RSLK 模块 2 - 实验视频 2.2 – LED (I,V) 响应曲线、指数关系
- 未学习 TI-RSLK 模块 3 - 讲座视频 - ARM Cortex M 架构
- 未学习 TI-RSLK 模块 3 - 讲座视频 - ARM Cortex M 组件
- 未学习 TI-RSLK 模块 3 - 实验视频 3.1 - 调试解决方案、可视化、断点和单步执行
- 未学习 TI-RSLK 模块 4 - 讲座视频 - C 语言编程
- 未学习 TI-RSLK 模块 4 - 讲座视频 - 设计
- 未学习 TI-RSLK 模块 4 - 讲座视频 - 调试
- 未学习 TI-RSLK 模块 4 - 实验视频 4.1 - 调试解决方案、可视化、变量、单步执行
- 未学习 TI-RSLK 模块 4 - 实验视频 4.2 - 调试解决方案、可视化、断点、单步执行
- 未学习 TI-RSLK 模块 5 - 讲座视频 - 电池和电压
- 未学习 TI-RSLK 模块 5 - 实验视频 5.1 - 测量电池的电压和电流
- 未学习 TI-RSLK 模块 5 - 实验视频 5.2 - 连接电机驱动器和配电板
- 未学习 TI-RSLK 模块 6 - 讲座视频 - GPIO MSP432
- 未学习 TI-RSLK 模块 6 - 讲座视频 - GPIO 编程
- 未学习 TI-RSLK 模块 6 - 实验视频 6.1 - 演示反射传感器的工作原理
- 未学习 TI-RSLK 模块 6 - 实验视频 6.2 - 演示实验解决方案 - 测试线路传感器
- 未学习 TI-RSLK 模块 7 - 讲座视频 - 有限状态机理论
- 未学习 TI-RSLK 模块 7 - 讲座视频 - 有限状态机线路跟踪器
- 未学习 TI-RSLK 模块 7 - 实验视频 7.1 - 运行 FSM 启动代码
- 未学习 TI-RSLK 模块 7 - 实验视频 7.2 - 运行解决方案代码 - 设计更好的 FSM
- 未学习 TI-RSLK 模块 8 - 讲座视频第一部分 - 开关
- 未学习 TI-RSLK 模块 8 - 讲座视频第二部分 - 连接输入和输出 - LED
- 未学习 TI-RSLK 模块 8 - 实验视频 8.1 - 连接开关和 LED 以及调试
- 未学习 TI-RSLK 模块 9 - 讲座视频 - SysTick 计时器 - 理论
- 未学习 TI-RSLK 模块 9 - 讲座视频 - SysTick 计时器 - PWM
- 未学习 TI-RSLK 模块 9 - 实验视频 9.1 - 演示通过调整占空比来运行检测信号
- 未学习 TI-RSLK 模块 9 - 实验视频 9.2 - 演示通过运行正弦波输出来调整功率
- 未学习 TI-RSLK 模块 10 - 讲座视频 - 调试实时系统 - 理论
- 未学习 TI-RSLK 模块 10 - 讲座视频 - 调试实时系统 - 中断
- 未学习 TI-RSLK 模块 10 - 讲座视频 - 调试实时系统 - SysTick 中断
- 未学习 TI-RSLK 模块 10 - 实验视频 - 演示运行线传感器和黑匣子记录器
- 未学习 TI-RSLK 模块 11 - 讲座视频 - 液晶显示屏
- 未学习 TI-RSLK 模块 11 - 实验视频 11.1 - 演示 LCD 界面
- 未学习 TI-RSLK 模块 12 - 讲座视频 - 直流电机 - 物理
- 未学习 TI-RSLK 模块 12 - 讲座视频 - 直流电机 - 接口
- 未学习 TI-RSLK 模块 12 - 实验视频 12.1 - 演示电机基础知识
- 未学习 TI-RSLK 模块 12 - 实验视频 12.2 - 演示机器人以预设模式移动
- 未学习 TI-RSLK 模块 13 - 讲座视频 - 周期性输入
- 未学习 TI-RSLK 模块 13 - 讲座视频 - 脉宽调制
- 未学习 TI-RSLK 模块 13 - 实验视频 13.1 - 通过计时器产生的 PWM 输出来旋转电机
- 未学习 TI-RSLK 模块 13 - 实验视频 13.2 - 测量中断延迟
- 未学习 TI-RSLK 模块 14 - 讲座视频 - 实时系统 - 理论
- 未学习 TI-RSLK 模块 14 - 讲座视频 - 实时系统 - 边沿触发中断
- 未学习 TI-RSLK 模块 14 - 实验视频 14.1 - 使用边沿触发中断为碰撞开关提供实时响应
- 未学习 TI-RSLK 模块 15 - 讲座视频 - 数据采集系统 - 理论
- 未学习 TI-RSLK 模块 15 - 讲座视频 - 数据采集系统 - 性能测量
- 未学习 TI-RSLK 模块 15 - 实验视频 15.1 - 使用 ADC 测试红外距离测量
- 未学习 TI-RSLK 模块 16 - 讲座视频 - 转速计 - 输入捕捉
- 未学习 TI-RSLK 模块 16 - 讲座视频 - 转速计 - 接口
- 未学习 TI-RSLK 模块 16 - 实验视频 16.1 - 测试转速计以测量速度
- 未学习 TI-RSLK 模块 17 - 讲座视频 - 控制系统
- 未学习 TI-RSLK 模块 17 - 实验视频 17.1 - 演示控制系统 - 积分控制
- 未学习 TI-RSLK 模块 17 - 实验视频 17.2 - 演示控制系统 - 比例控制
- 未学习 TI-RSLK 模块 18 - 讲座视频 - 串行通信 - UART
- 未学习 TI-RSLK 模块 18 - 讲座视频 - 串行通信 - FIFO
- 未学习 TI-RSLK 模块 18 - 实验视频 18.1 - 演示 UART
- 未学习 TI-RSLK 模块 18 - 实验视频 18.2 - 命令解释器
- 未学习 TI-RSLK 模块 19 - 讲座视频 - 低功耗蓝牙 - 无线
- 未学习 TI-RSLK 模块 19 - 讲座视频 - 低功耗蓝牙 - 理论
- 未学习 TI-RSLK 模块 19 - 讲座视频 - 低功耗蓝牙 - 简单网络处理器
- 未学习 TI-RSLK 模块 19 - 实验视频 19.1 - 演示 BLE
- 未学习 TI-RSLK 模块 19 - 实验视频 19.2 - 与机器人通信