目录

  • <任务内容>
  • <实现硬件&测量平台>
    • 实现原理
  • <数据结果>
    • 第一帧数据
    • 第二帧数据
    • 第三帧数据
    • 第四帧数据
  • <波特率计算>
    • 算法一
    • 算法二
  • <结论总结>
  • <关键程序附录-HAL>

<任务内容>

  1. 观察串口发送数据波形(TTL电平标准)
  2. 计算每帧数据的波特率,分析波特率误差

<实现硬件&测量平台>

  • STM32F103VET6
  • RIGOL_DS1202ZE示波器

实现原理

  1. 由STM32实现串口的收发数据功能

  2. PC给STM32发送数据"123\r"

    十六进制为 < 0x31 0x32 0x33 0x0A >
    
  3. 利用示波器采样STM32的串口接收并循环发出的引脚

  4. 得到数据,截图,并分析

<数据结果>

第一帧数据

图中数据为0-1000,1100-1
真实数据为0-0011,0001-1 ==> 0x31
第一帧数据传输时间为0.00us-1.04ms

第二帧数据

图中数据为0-0100,1100-1
真实数据为0-0011,0010-1 ==> 0x32
第二帧数据传输时间为1.04ms-2.08ms

第三帧数据

图中数据为0-1100,1100-1
真实数据为0-0011,0011-1 ==> 0x33
第三帧数据传输时间为2.08ms-3.12ms

第四帧数据

图中数据为0-0101,0000-1
真实数据为0-0000,1010-1 ==> 0x0A
第四帧数据传输时间为3.12ms-4.16ms

<波特率计算>

算法一

  1. 四帧数据(40bit)传输的总时间为4.16ms
  2. 理论上以9600的波特率传输四帧数据(40bit)需要的时间为1/240s约等于4.17ms
  3. 所以波特率误差为(4.17-4.16)/4.17 = 2.40‰

算法二

  • 第一帧:[(1/960s) - 1.04ms] / (1/960s) = 0.961‰
  • 第二帧:[(1/960s) - 1.04ms] / (1/960s) = 0.961‰
  • 第三帧:[(1/960s) - 1.04ms] / (1/960s) = 0.961‰
  • 第四帧:[(1/960s) - 1.04ms] / (1/960s) = 0.961‰
  • 误差稳定在0.961‰

<结论总结>

  1. 为了误差值得测量准确性

    • 可以增加小数点后有效位
    • 多测数据以求平均
  2. 串口数据发送遵循的是低位先行
    因此读数据时要倒着读.

<关键程序附录-HAL>

//main.c
void main()
{/*......各模块初始化......*/while (1){if (usart_1_Rx_dateTypedef.usart_Flag){HAL_UART_Transmit(&huart1, (uint8_t *)usart_1_Rx_dateTypedef.Buffer, usart_1_Rx_dateTypedef.usart_Cnt, 0x10);  //发送数据for(int i = 0;i<usart_1_Rx_dateTypedef.usart_Cnt;i++)   usart_1_Rx_dateTypedef.Buffer[i] = 0;usart_1_Rx_dateTypedef.usart_Cnt = 0;usart_1_Rx_dateTypedef.usart_Flag = 0;}}
}
/*** @brief 串口中断回调函数* @param 调用回调函数* @note  串口每次收到数据以后都会关闭中断,如口重复使用,必须再次开启* @retval None*/
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if (huart->Instance == USART1){usart_1_Rx_dateTypedef.Buffer[usart_1_Rx_dateTypedef.usart_Cnt] =usart_1_Rx_dateTypedef.it_Buffer[0]; //保存接收数据usart_1_Rx_dateTypedef.usart_Cnt++;        //计数值加1if (0x0D == usart_1_Rx_dateTypedef.it_Buffer[0]){                                        //ASSIC   换行表示结束usart_1_Rx_dateTypedef.usart_Flag = 1; //接收结束标志}else{HAL_UART_Receive_IT(&huart1, (uint8_t *)usart_1_Rx_dateTypedef.it_Buffer, 1); //否则使能串一中断}}
}

<UART 波形分析><1>基于RIGOL_DS1202ZE示波器分析串口数据相关推荐

  1. STM8学习笔记---通过示波器分析串口数据

    在用单片机做串口通信时,经常会遇到通信错误,但是检查程序时却没发现有什么问题.这时候就可以借助示波器来观察串口数据是不是正确.但是串口数据的波形要怎么看呢.先来看看串口数据帧的定义: 常用的数据格式为 ...

  2. STM32G070RBT6基于Arduino框架下串口数据接收使用示例

    STM32G070RBT6基于Arduino框架下串口数据接收使用示例 相关篇<STM32G070RBT6基于Arduino串口的使用>

  3. 基于APP Designer 实现串口数据监测功能App总结(1)——函数间变量传递

    文章目录 1.全局变量类型 global: 2.作为app的属性传递: 3.setappdata函数为句柄添加数据: 4.跨空间计算evalin和赋值assignin: 5. 将数据保存到文件,需要时 ...

  4. 基于APP Designer 实现串口数据监测功能App总结(2)——app设计

    本文具体介绍app设计的过程,该app接收的数据格式是16位整形数,分byte以字符方式打印.打印U16变量var,打印格式为 printf("%c%c\n",U8(var> ...

  5. 相信我,SDRAM真的不难(九)----基于SDRAM缓存的串口传图综合实战(UART + SDRAM + VGA)

    写在前面 本文是SDRAM系列文章的第九篇,前面八篇已经实现了一个简单的SDRAM控制器.正所谓光说不练云玩家,接下来我们搞搞实战,真正把SDRAM给用起来. 本文将结合UART模块.VGA模块.SD ...

  6. ARM架构与编程(基于I.MX6ULL): 串口UART编程(七)

    文章目录 1.硬件知识 URAT硬件介绍 1.1.串口的硬件介绍 1.2.串口的参数 1.3.串口电平 1.4 串口内部结构 2. IMX6ULL UART操作 2.1. 串口编程步骤 2.1.1. ...

  7. linux中断子系统(基于imx6ul arm32分析)

    0.说明 本文主要针对linux内核中断整个框架进行梳理,针对的是armv7架构,硬件平台是imx6ul,基于arm GIC控制器来分析. GIC是arm公司设计使用的中断控制器,全称Global I ...

  8. 基于PC与单片机串口通信的温度监控系统程序设计

    基于PC与单片机串口通信的温度监控系统程序设计 1.系统介绍 1)本系统主要讲解基于PC与单片机串口通信的温度监控系统程序设计(如图1),上位机采用常用的PC机,下位机使用的是STC89C52单片机, ...

  9. led的伏安特性曲线 matlab实现_一种基于MATLAB的分析避雷器伏安特性的方法与流程...

    本发明属于电力电子技术领域,涉及一种基于MATLAB的分析避雷器伏安特性的方法. 背景技术: 目前,我国±1100kV特高压直流输电工程建设正在稳步推进,特高压直流系统用金属氧化物避雷器是直流输电系统 ...

最新文章

  1. CloudStack Ctrix官网版本
  2. Eclipse+CDT+MinGW搭建C++环境 (转)
  3. N^N最左边和最右边的数(数学)
  4. JavaScript学习杂记--对象和数组
  5. python一键清屏_python添加清屏功能
  6. ActiveRecord学习笔记(四):处理Many-To-Many映射
  7. 爬虫学习之-Python list 和 str 互转
  8. centos 低版本出现fatal: unable to access 'https://github.com/XXXX': SSL connect error
  9. jmeter constant timer 如何添加_性能测试-Jmeter——软件测试圈-软件测试文章
  10. DirectX Repair v4.2.0.40217 最新2022全能运行库系统修复工具增强版
  11. 文件无法删除 你需要计算机管理员 提供的权限才能对此文件进行更改解决办法
  12. 四阶幻方c语言编程,13年 第四届 蓝桥杯C语言C组 第4题 幻方填空
  13. 古墓丽影10linux,《古墓丽影:崛起》Linux 版上架 Steam
  14. 2022年计算机二级MS Office高级应用复习题及答案
  15. 电信计费系列1-座机计费
  16. 深度学习还没入门?看看深度学习三巨头的Deep Learning综述(4)
  17. 12个成功案例,告诉你提升客户体验新方法!
  18. redis incr命令最大值问题
  19. C语言-03-基本数据类型及输入输出函数
  20. 网站SEO的技巧都有哪些?快速增加权重靠谱吗?

热门文章

  1. 数字IC前端学习笔记:LSFR(线性反馈移位寄存器)
  2. Win8的Metro界面
  3. 乐高无限最好玩的服务器联机打怪,乐高无限游戏玩法大全多种模式任你选择
  4. JBPM 3.2.2动态修改duedate
  5. LE-VINS:固态激光雷达增强的视觉惯性导航系统
  6. 最近在对郎成2440开发板作linux系统移植?最新的进展!
  7. 计算机网络(第八版)谢希仁编著 笔记
  8. 泛微OA V8 SQL注入漏洞和文件上传漏洞
  9. 基于平均不同分辨率的共振峰跟踪算法matlab仿真
  10. 阿里巴巴为何选择香港 上市部分股本比例是关键