基于STM32的串口数据包的传输

姓名:赵宗明

学号:19021211230

【嵌牛导读】:STM32    串口通信    数据包

【嵌牛鼻子】:利用电脑端通过串口通信控制单片机内部的参数以及单片机内部数据包向电脑端传输并显示

【嵌牛提问】:串行接口是连接单片机和PC机的一种简单方式。单片机一个字节是如何收发的?一串数据是如何收发的?电脑端一个字节、一串数据是如何收发的?这个项目向大家展示了如何使用电脑端与单片机进行数据包的相互传递。

【嵌牛正文】:

1.实验介绍
本实验主要用到了STM32的串口模块、IIC模块,定时器模块、LED模块,借助了开源的MPU6050所使用的DMP库,还使用了基于G语言图形化编程的Labview软件开发的上位机。MCU通过IIC协议实时向MPU-6050传感器读取数据并打包发送至上位机,并在电脑端以波形的形式实时显示传感器的角度数据。同时电脑端发送四个角度值数据至MCU作为角度的报警值,传感器将此四个数据作为两个轴的(俯仰角、翻滚角)角度界限,当角度超过这四个界限值时以4个LED作为报警提醒用户。

上位机前面板

2.实验目的
·熟练使用串口收发模块,掌握串口收发的原理和具体实现方法。
·熟练掌握MCU与上位机的双向通信方式和数据包的传输及校验方式。

3.实验内容
任务要求:MCU利用IIC协议向MPU-6050传感器获取数据,并将数据传输至DMP模块,进行数据的解算得到传感器的实时角度,并将实时的角度通过串口发送至电脑端,电脑端获取角度数据并以波形的形式实时显示,同时,用户可以在上位机操作界面输入角度的界限值,实现下位机的光报警功能。
软件工具以及硬件平台:
开发软件利用了KeilSoftware官方提供的Keil5和美国国家仪器(NI)公司研制Labview图形化编程环境。
硬件使用了ST公司内核为Cortex-M3的Stm32f103-vet6,基于C语言编程开发。

4.实验原理及实现方法
该设计主要包括以下几个重要模块:波特率产生模块、数据包接收模块、数据包发送模块、LED控制模块、上位机、IIC模块。

以下为该设计的实现框图:

原理框图

4.1模块设计
波特率产生模块:

波特率表示每秒钟传送的码元符号的个数,是衡量数据传送速率的指标,它用单位时间内载波调制状态改变的次数来表示。可以利用70M系统时钟通过计数的方式产生115200波特率模块连接至发送和接收模块。当RX或TX模块发来波特率请求信号时,波特率产生模块开始计数,当计数值达到数据发送或接收所需数值时模块产生输出,TX或RX接收到信号时便执行发送或接收的操作。本设计利用了库函数的方式,选择了115200的传输波特率。

串口发送模块:

       串口发送数据包的基础是:串口正确发送一个字节的数据。串口发送一帧(一个字节)数据的格式为:起始位+8bit数据+停止位,所以发送一组数据实际传输的数据为10bit。该设计数据发送涉及多个数据的传输,所以采用了数据包的方式利用帧头帧尾校验进行数据传输及解析。MCU端串口发送格式为:

0XA5(帧头)+ AngleX_H + Angle X_L + + AngleY_H + Angle Y_L + 0XC5(帧尾)。上位机接收端利用同样的格式利用状态机的方式解析数据,并将其实时显示。因为串口每次发送一帧数据(一个字节),所以16位的数据必须将其拆分为高8位和低8位再将其发送,接收端接收到后在将两个8位数据整合为16位数据。

以下为数据发送的具体实现方法:

串口接收模块:

串口接收模块较串口发送更为复杂,因为串口要想从数据包中得到有效数据就得确保接收正确的数据包并无误的将其解析。串口接收模块和串口发送模块调用同样的波特率产生模块,均在该波特率下所计算的计数值处进行数据的收发。同样,接收数据包的基础是稳定的接收一帧数据。

接收一帧数据的原理:Stm32的RX引脚是一位一位串行的得到信号,因为发送端发送一帧数据的格式为:起始位+8bit数据+停止位,所以接收端也应该以该格式去解析数据,观察下图


串口传输时序图

本设计需要接收数据包,也就是需要解析多帧数据,该设计中利用了串口中断的方式去解析有效数据。
电脑端发送数据的格式为:、
‘空格’+ ‘元素号’+‘:’+‘数据’(例:“0:12 1:24 2:48 3:64”),因为电脑端发送字符比较简单,所以本设计采用了电脑端发送字符数据,在MCU上解析为十进制数据。具体实现方法如下:




©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容