CAST电子部单片机方向授课——串口通信 预习文档

课前小准备

安装串口调试助手

第一步:进入Microsoft Store

第二步:在Microsoft Store中搜索 “串口调试助手”

第三步:点击获取,按要求安装即可

下载完成后,桌面上可能没有快捷方式,需要在win里搜索一下,然后拖到桌面上。

注:其他安装方法都可以,反正就是正常安装步骤,没什么特殊的。

知识预备

有关通信的一些知识:

说白了,通信其实就是一堆01的组合,不同的01序列表示不同涵义。

通信可以用以下的框图概括

并/串行通信

并行通信

定义:利用多条传输线将一个数据的各位同时传送。

传输方式:传输一个字节(8个位)的数据时,并口是将8个位一字排开,分别在8条连接线上同时传输。

特点:传输速度块,适用于短距离通信。

串行通信

定义:利用一条传输线将数据一位位地顺序传送。

传输方式:传输一个字节(8个位)的数据时,串口是将8个位排好队,逐个地在1条连接线上传输。

特点:通信线路简单,利用电话或电报线就可以实现通信,降低成本,适用于远距离通信,但传输速度慢。

一般来说,串行通信更加普遍实用。

串行通信的通信方向

单工

定义:数据只能在一个方向上传输,通信双方数据只能由一方传输到另一方

半双工

定义:数据可以错时双向传输,通信双方数据可以支持两个方向传输,但是同一时间只能由一方传输到另外一方。

全双工

定义:数据可以同时双向传输,通信双方数据可以同时进行双向传输,对于其中一个设备来说,设备需要支持发送数据时可以进行数据接收。

串行通信的通信方式

异步通信

异步通信就是通信双方之间可以在任意时刻发送数据。比如说qq,同学A准备给同学B发送消息1,同学B一直在等待接收;同学A敲下回车键,开始发送;同学B一接受到消息1,就将消息1存进自己的电脑里,完成消息接收。

更specifically的说法:

异步通信是一种很常用的通信方式。异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。当然,接收端必须时刻做好接收的准备。发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。异步通信的好处是通信设备简单、便宜,但传输效率较低(因为开始位和停止位的开销所占比例较大)。

同步通信

同步通信就是通信双方之间有一个时间信号约束。比如说,同学A想给同学B发送消息2,同学A在不发送消息的时候,一直举着手(表示现在不发送消息);当同学A放下手(表示消息开始发送),同学B急忙接收消息,然后将消息存储起来;当同学A消息发送完成后,同学A举手,同学B停止接收,这样就完成了一轮消息接收。在这个例子里,时钟信号就是同学A的手有没有举。

更specifically的说法:

同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。

采用同步通信时,将许多字符组成一个信息组,这样,字符可以一个接一个地传输,但是,在每组信息(通常称为帧)的开始要加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。在同步传输过程中,一个字符可以对应5~8位。当然,对同一个传输过程,所有字符对应同样的数位,比如说n位。这样,传输时,按每n位划分为一个时间片,发送端在一个时间片中发送一个字符,接收端则在一个时间片中接收一个字符。

同步传输时,一个信息帧中包含许多字符,每个信息帧用同步字符作为开始,一般将同步字符和空字符用同一个代码。在整个系统中,由一个统一的时钟控制发送端的发送和空字符用同一个代码。接收端当然是应该能识别同步字符的,当检测到有一串数位和同步字符相匹配时,就认为开始一个信息帧,于是,把此后的数位作为实际传输信息来处理。

串口通信(UART:Universal Asynchronous Receiver/Transmitter)

什么是通信协议?

所谓通信协议,就是双方实体完成通信或服务所必须遵循的规则和约定。比如说:同学A给同学B发送消息,需要举左手;同学C给同学D发消息,需要举右手;那么举的是左手还是右手,就是两边通信协议的差别之一。

串口通信简介

UART串口通信,是一种串行、异步、全双工的通信协议。在STM32单片机中,串口通信只需要两根线,RX和TX(除了VCC和GND)。RX就是接收线(Recieve);TX就是发送线(Transmit);在单独一条线上,只能进行单向发送。在UART通信协议中,高电平表示 ‘1’,低电平表示 ‘0’ 。UART的特点是:通信线路简单,只要一对传输线就可以实现双向通信,大大降低了成本,但传送速度较慢。

通信过程

在通信前,我们需要将线缆正确连接。一般来说,我们用单片机的TX连接另一个模块/单片机的RX,RX连接TX(就是发送端口连接接收端口)。在其中一条线上(比如单片机的TX——模块的RX这条线),通信是这样进行的:

在单片机没有消息发送给模块的时候,线缆上一直为高电平,表示没有消息发送;当单片机要给模块发送消息时,单片机将线缆上电平拉低,变为低电平;经过一个信号周期后(就是传输一位数据,两个信号周期就是两位数据),单片机开始进行数据位的发送,这个数据可以是5,6,7,8,9位的二进制数,传输的方法就是让线缆上的电平发生跳变(比如说传输一位数据 ‘1’,就是将线缆上电平变为高电平,然后持续一个信号周期......);当单片机发送完数据位后,模块可能需要检验刚刚接收到的数据是否正确,于是会有一个校验位的传输:单片机会给模块传输01位的奇偶校验位(后面会说),然后模块会通过这01位的数据来检验刚刚传输的数据是否正确;最后,单片机给模块传输1~2位的停止位,表示数据传输完成;停止位发送完毕后,单片机将电平拉高,表明线缆上无信号传输,一轮数据传输完成。

数据协议

波特率 (baud rate):表示传输数据的速度,单位为bps。比如说某串口通信波特率为9600bps,那么在该通信中传输一位二进制数据所需要的时间就是1/9600 = 104.2us。

空闲位:空闲状态里信号线的电平。通过上述例子可以看出,UART的空闲位是高电平1 。

起始位:通信中发送方发送起始位,表示数据即将开始传输。比如在串口通信中,我们以一位数据 ‘0’ 为标志(其实是空闲位’1‘到起始位’0‘的跳变),表示数据马上开始传输。

数据位:表示传输的二进制数据。数据可以是5,6,7,8,9位二进制数据,但一般都是8位(一个字节)。发送过程中,从发送数据的最低位(LSB)开始发送(即小端模式)。

奇偶校验位:数据位传送完成后,要进行奇偶校验,校验位其实是调整个数,串口校验分几种方式:

1.无校验(no parity)

2.奇校验(odd parity):如果数据位中’1’的数目是偶数,则校验位为’1’,如果’1’的数目是奇数,校验位为’0’。

3.偶校验(even parity):如果数据为中’1’的数目是偶数,则校验位为’0’,如果为奇数,校验位为’1’。

4.mark parity:校验位始终为1

5.space parity:校验位始终为0

停止位:数据结束标志,可以是1位,1.5位,2位的高电平。

串口通信的代码实现

  1. 进入cubeMX,新建F401工程,然后进行SystemCore中RCC和SYS的配置,以及ClockConfiguration中时钟树的配置,完成如下界面(不详细演示了,大家应该都很熟练了,不记得的可以翻第一次授课的ppt,后面有。)

  1. 选择左栏的Connectivity,选择USART1,在Mode里选择Asynchronous,其余默认,如下图

  1. 进行Project Manager里的配置,同见第一次授课的ppt

  1. Generate Code,进入keil工程,进入榔头界面,修改工程属性(也不详细演示了,第一次授课ppt也有,修改结果参照下图)

  1. 在main.c中添加如下代码

  1. 把烧录器和单片机四个烧录引脚连接起来(连接方法见第一次授课ppt,GND-GND, SCK-SWCLK, DIO-SWDIO, VCC-VREF);然后将烧录器上的TX引脚连接单片机的A10引脚,RX连接A9(就是TX-RX, RX-TX);然后将代码烧录进单片机中。

  1. 打开串口调试助手,设置如下图(只要改波特率和串口号),然后点击 “打开串口”

  1. 按下CAST学习板上的RESET按键,就可以看到串口调试助手软件上显示的信息啦~

CAST电子部单片机方向授课——串口通信 预习文档的更多相关文章

  1. 单片机: EEPROM和串口通信

    名称:IIC协议 EEPROM24c02 通过串口通信存数读取数据 内容:此程序用于检測EEPROM性能,測试方法例如以下:写入24c02一个数据,然后在内存中改变这些数据. 掉电后主内存将失去这些信 ...

  2. TR-银行通信相关文档

    DMEE配置指南: https://wenku.baidu.com/view/06790649767f5acfa1c7cd73.html F110 DMEE配置: https://wenku.baid ...

  3. labview与单片机串口通信

    labview与单片机串口通信   VISA是虚拟仪器软件体系结构的缩写(即Virtual Instruments Software Architecture),实质上是一个I/O口软件库及其规范的总 ...

  4. 51单片机GPIO口模拟串口通信

    51单片机GPIO口模拟串口通信 标签: bytetimer终端存储 2011-08-03 11:06 6387人阅读 评论(2) 收藏 举报 本文章已收录于:   分类: 深入C语言(20) 作者同 ...

  5. 嵌入式02 STM32 实验07 串口通信

    STM32串口通信(F1系列包含3个USART和2个UART) 一.单片机与PC机串行通信研究目的和意义: 单片机自诞生以来以其性能稳定,价格低廉.功能强大.在智能仪器.工业装备以及日用电子消费产品中 ...

  6. RS232串口通信详解

    串口是计算机上一种非常通用的设备通信协议. ---------------------------------串口的引脚定义: 9芯 信号方向来自 缩写 描述 1 调制解调器 CD 载波检测 2 调制 ...

  7. STC12C5A60S2 双串口通信

    STC12C5A60S2单片机是一款功能比较强大的单片机,它拥有两个全双工串行通信接口,串口1的功能及操作与传统51单片机串行口相同:特殊的是STC12C5A60S2单片机内部有一个独立波特率发生器, ...

  8. C语言dsPIC / PIC24 serial bootloader和C#语言bootloader PC端串口通信程序

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 新dsPIC/PIC2 ...

  9. C语言PIC18 serial bootloader和C#语言bootloader PC端串口通信程序

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 新PIC18 Boot ...

  10. C语言PIC16 serial bootloader和C#语言bootloader PC端串口通信程序

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 新PIC16 Boot ...

随机推荐

  1. 测距工具部分情况下无效的问题解决 - 高德JSAPI

    最近项目中新增了一个需求是在地图上新增一个测距工具,方便看一下距离 高德官方本身自带了有一个测距工具类的 RangingTool ,以插件的方式引入即可 问题一: 如果地图上有覆盖物的话(我这是 po ...

  2. 【LGR-148-Div.3】洛谷基础赛 #1 & MGOI Round I

    [LGR-148-Div.3]洛谷基础赛 #1 & MGOI Round I T1 luoguP9502 『MGOI』Simple Round I | A. 魔法数字 \(100pts\) 水 ...

  3. 一键跳转组件所在的文件与具体行数,提升排查效率,分享几个 React Developer Tools 使用小技巧

    壹 ❀ 引 React Developer Tools对于很多开发同学可能就是一个检查组件props传递对不对的工具,但事实上它的功能比我们想象的强大.比如我们日常排查问题,常常会遇到想知道某个页面某 ...

  4. C#后端接收前端的参数

    接收参数 1. 直接使用 [FromBody] 特性来告诉 ASP.NET Core 将请求的 JSON 数据反序列化为 实体类 对象 [FromBody] BlogNewsDTO实体类 点击查看代码 ...

  5. oracle exp/imp命令使用parfile实现参数文件调用

    优先使用数据泵(expdp/impdp)方式,更高效,问题少. 关于exp/imp工具的使用请参考我的另一篇文章: https://blog.csdn.net/IndexMan/article/det ...

  6. python第五章pta习题总结

    四.编程部分 1.sorted函数: sorted(iterable, cmp=None, key=None, reverse=False) #iterable:可迭代的对象 #cmp:比较规则 #k ...

  7. 了解企业架构EA(Enterprise Architecture)

    一.企业架构简介 企业架构:Enterprise Architecture,EA,或企业体系结构,是在信息系统架构设计与实践基础上发展起来的一个特殊领域. 但是企业架构现在还没有一个公认的定义,综合现 ...

  8. 【Android 逆向】【攻防世界】ill-intentions

    1. apk 安装到手机, 啥输入框都没有 2. apk拖入到jadx中看看 public class MainActivity extends Activity { @Override // and ...

  9. EasyExcel使用及自定义设置单元格样式

    EasyExcel使用及自定义设置单元格样式 https://www.cnblogs.com/Hizy/p/11825886.html easyexcel 自动设置列宽 https://www.man ...

  10. ABP开发需要用到的命令

    0.命令行在哪里执行? 在Visual Studio的"解决方案资源管理器"的解决方案或者项目上点鼠标右键,选择"在终端中打开". 1.安装abp的命令行 官网 ...