单片机与上位机通过串口通信--笔记

2023-05-16

定义

先说什么是串口?
(1)他是一种通信接口,单片机 IO 口上的复用功能,上位机(电脑)和下位机(开发板) 之间的数据传输。
(2)串行接口简称串口,也称串行通信接口或串行通讯接口(通常指 COM 接 口),是采用串行通信方式的扩展接口。
(3)串行接口(Serial Interface)是指数据一 位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向 通 信(可以直接利用电话线作为传输线),大大降低了成本,特别适用于远距 离通信,但传送速度较慢。
(4)串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。。

通信方式

单工通信:单向传输,只能接受或者发送 例如:收音机 遥控器 广播
半双工通信:同一时间 只能接受或者发送 例如:对讲机
全双工通信:同一时间,既可以接收数据也可以发送数据 例如:手机

数据传输方式

串行通信:数据按位传输,一位一位的传输
并行通信:数据按照多位进行传输,一次发送或者接收多位数据

时钟

异步通信:接收方和发送方使用不同的时钟频率
同步通信:接收方和发送方使用相同的的时钟频率

串口

Usart 全称:Universal Synchronous/Asynchronous Receiver/Transmitter 串行同步/异步收发器
Uart 全称:Universal Asynchronous Receiver/Transmitter 串行异步收发器

协议格式

字长描述
(1)起始位:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起 始位”开始,以“停止位”结束,字符之间没有固定的时间间隔要求。
(2)数据位:要发送的数据
(3)奇偶校验:在标准 ASCII 码中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程
中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。
奇校验规定:正确的代 码一个字节中 1 的个数必须是奇数,若非奇数,则在最高位 b7 添 1;
偶校验规定:正确的 代码一个字节中 1 的个数必须是偶数,若非偶数,则在最高位 b7 添 1。
(4)停止位:停止位是按长度来算的。串行异步通信从计时开始,以单位时间为间隔(一个单位时间 就是波特率的倒数),依次接受所规定的数据位和奇偶校验位,并拼装成一个字符的并行字 节;此后应接收到规定长度的停止位“1”。所以说,停止位都是“1”,1.5 是它的长度,即 停止位的高电平保持 1.5 个单位时间长度。一般来讲,停止位有 1,1.5,2 个单位时间三种 长度。
(5)波特率:波特率的产生:
在这里插入图片描述
我们一般说的波特率就是前边的Tx/Rx波特率,但是单片机真正识别的是分母上的USARTDIV,包括小数和整数
例如:
以baud为9600
Fck以72MHz为例
求得单片机识别的USARTDIV:

9600=72 000 000/ 16 *USARTDIV
这里得到USARTDIV=468.75
USARTDIV的值是放入从USART_BRR寄存器的,前四位放置小数部分,后12位放置整数部分,最后的16到31位保留

在这里插入图片描述

CH340转串口

CH340 是一个USB 总线的转接芯片,实现USB 转串口、USB 转IrDA 红外或者USB 转打印口。
在串口方式下,CH340 提供常用的MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备直接升级到USB 总线。
电脑通过USB发送数据经过CH340转化为单片机可识别的数据;
也可以说是把USB口的信号转为TTL电平的RS232串口信号
就像是两个不同语言的外国人一样,他们如果要实现信息交流,就要有一个精通这两国语言的翻译官,去分别翻译两个人的话给另一个人听,以此达到交流的目的。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机与上位机通过串口通信--笔记 的相关文章

随机推荐

  • 集美大学-浙大版《C语言程序设计实验与习题指导(第3版)》

    这是我2020年大一入学前写的代码 xff0c 当时的测试点是全过的 xff0c 现在可能有些测试点过不去了 xff0c 如果有发现测试点过不去的 xff0c 可以联系我修改一下 xff0c 希望大家共同进步 xff08 工作量有点大 xf
  • 集美大学 - 2840 - 实验7-1 - 编程题

    实验7 1 1 一维数组 简化的插入排序 本题要求编写程序 xff0c 将一个给定的整数插到原本有序的整数序列中 xff0c 使结果序列仍然有序 输入格式 xff1a 输入在第一行先给出非负整数N xff08 lt 10 xff09 xff
  • 听劝,不要试图以编程为基础去学习网络安全

    目录 一 网络安全学习的误区1 不要试图以编程为基础去学习网络安全2 不要刚开始就深度学习网络安全3 收集适当的学习资料4 适当的报班学习 二 学习网络安全的些许准备1 硬件选择2 软件选择3 外语能力 三 网络安全学习路线第一阶段 xff
  • 集美大学 - 2840 - 实验8 - 编程题

    实验8 1 9 指针 输出学生成绩 本题要求编写程序 xff0c 根据输入学生的成绩 xff0c 统计并输出学生的平均成绩 最高成绩和最低成绩 建议使用动态内存分配来实现 输入格式 xff1a 输入第一行首先给出一个正整数N xff0c 表
  • vscode中文乱码问题及几种常见的解决方案

    问题及原因 问题原因 xff1a 代码文件的字符编码格式为UTF 8 xff0c 但是terminal的字符编码格式为GBK 解决思路 xff1a 统一代码文件和terminal的字符编码格式 解决办法 说明 xff1a 以下的解决方案是针
  • 集美大学 - 2840 - 实验11-2 - 函数题

    实验11 2 1 链表 建立学生信息链表 本题要求实现一个将输入的学生成绩组织成单向链表的简单函数 函数接口定义 xff1a span class token keyword void span span class token funct
  • python正则表达式

    python正则表达式 match函数 re match尝试从字符串的起始位置匹配一个模式 xff0c 如果不是起始位置匹配成功的话 xff0c match 就返回none 函数语法 xff1a re span class token pu
  • 轻松解决VS配置OpenCV环境及导出OpenCV的VS项目模板

    一 OpenCV配置 1 下载OpenCV 点击进入下载OpenCV的官网界面 这里以Windows为例 xff0c 其他同理 xff08 可直接下载最新 xff09 2 提取OpenCV 在这里浅说一句 xff0c 为了方便环境配置文件管
  • 最大子段和问题

    以下给出具体代码 xff1a span class token macro property span class token directive hash span span class token directive keyword i
  • 如何简单又好看地美化你的Ubuntu界面

    起因 最近使用Ubuntu界面实属是审美疲劳了 xff0c 使用老版本的一大问题就是 界面太难看了 秉持新手学习最好是用老一点的稳定版本的观念 Ubuntu旧版本使用或使用过的人非常非常多 xff0c 学习的过程中你一旦出现什么问题互联网上
  • 【实战】物联网安防监控项目【2】———boa服务器的移植

    一 boa服务器的移植 1 源码下载 1 1 boa简介 xff1a 其可执行代码只有大约60KB左右 xff0c Boa是一个单任务的HTTP服务器 xff0c Boa只能依次完成用户的请求 xff0c 而不会fork出新的进程来处理并发
  • 【实战】物联网安防监控项目【4】———从网页上控制A9的LED灯

    前言 学习了一个新知识 xff0c 当然要记录一下啦 这两天学习了boa服务器 cgic标准库和html标签语言 xff0c 又双叕解锁一个嵌入式的新玩法 cgic库是沟通C语言和html网页编程语言的一座桥梁 xff0c 通过在linux
  • 【实战】物联网安防监控项目【5】———把模拟数据传输到web网页、web显示mjpeg-streamer视频图像

    1 模拟数据传输到web 为了把硬件传感器上的数据上传到web网页 xff0c 我们需要在跑linux服务器的开发板上写一个应用程序 xff0c 并创建出几个线程来收集传感器检测到的数据 xff0c 通过进程 线程间通信 boa与cgic库
  • HttpGet Digest授权认证

    工具类 xff1a compile com burgstaller okhttp digest 1 13 import android span class hljs preprocessor content span span class
  • ubuntu下git push失败error: 无法推送一些引用到 ‘xxx ‘解决方法

    如果你在Ubuntu下使用git push上传你的代码到gitee xff0c 突然出现一行报错 xff1a To git 64 gitee com imysy twenty two thread pool test git rejecte
  • 【Linux驱动开发】并发控制机制:原子操作、自旋锁、信号量、互斥锁详解

    并发控制机制 首先我们来了解一下 操作系统的并发性 这个概念 xff1a 操作系统的并发性 concurrence xff1a 指的是两个或者两个以上事件在同一时间间隔内发生 xff0c 即这个设备一会执行这个事件一会执行那个事件 xff0
  • STM32F051K8U6按键中断实例

    引言 最近要开始做毕设了 xff0c 准备用STM32做一个平衡小车 xff0c 好久没做过STM32的裸机项目了 xff0c 做几个项目练练手 xff0c 复习一下 本例程使用STM32CubeMX配套hal库来实现按键中断和串口中断 芯
  • STM32库函数笔记分享

    之前刚开始自学的部分STM32笔记放出 xff0c 希望对新入门STM32和想要复习库函数的小伙伴们起到帮助 建立工程 1 寄存器操作方式 需要不断地查手册来了解每一位是干什么用的 优点 xff1a 代码简介 xff1b 缺点 xff1a
  • rc.exe not found.(完美解决,亲测有效)

    完美解决rc exe not found 报错出错原因解决方法完美解决 报错 这两天安装了vs2015和IVF2016 xff0c 安装完之后在运行程序的时候一直会出现rc exe not found xff0c 重新生成解决方案后还是一样
  • 单片机与上位机通过串口通信--笔记

    定义 先说什么是串口 xff1f xff08 1 xff09 他是一种通信接口 xff0c 单片机 IO 口上的复用功能 xff0c 上位机 xff08 电脑 xff09 和下位机 xff08 开发板 xff09 之间的数据传输 xff08