关于51单片机如何接收串口的大量数据

zhong_SKY 2015-06-26 10:10:16
我设计了一个单片机的上位机和下位机,但是在上位机向下位机传输大量数据时出现了问题,请问下位机应该如何编程才能顺利地接收上位机发来的一大串数据呢?
...全文
7202 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
rushbrush 2016-05-14
  • 打赏
  • 举报
回复
通常串口的中断处理速度可以满足及时取走中断寄存器的接收数据的。而瓶颈在你的接收缓冲区不够大,无法及时处理,导致数据被丢。所以要么单片机有足够大的缓冲区,可以缓存你的帧数据,要么你的 处理速度足够,可以保证缓存的数据可以及时被处理,要么设计软流控,就是发送方只有收到接收方的确认后才能发送下一帧。否则就只能通过硬流控来控制了。不过硬流控在 某些时候受物理设计的限制,比如板子就没设计硬流控的信号线,那就没办法。
qq_31711825 2016-03-01
  • 打赏
  • 举报
回复
大哥还在吗?我现在就是要实现这个功能,只不过我是需要从txt文件中读取大量数据,想问问你有没有好的方法?你是怎么实现大数据传输的?不会是一点点发过去的吧?
cslrd 2015-10-22
  • 打赏
  • 举报
回复
使用队列做缓冲区
  • 打赏
  • 举报
回复
51单片机的串口中断函数会写吧,直接在中的函数中取出数据保存起来,然后再清中断标志位 void srei()interrupt 4 { if(RI==1) { P0=SBUF; RI=0; //P0口接led来检测接收到的数据 a=SBUF; flag=1; } }
qq_29463067 2015-08-10
  • 打赏
  • 举报
回复
哈哈,大神们有没有程序的,直接上咯
彬浦 2015-07-31
  • 打赏
  • 举报
回复
看了上面的回复,好像我又学到了不少东西
daiya81 2015-07-30
  • 打赏
  • 举报
回复
用中断接收,效果好一些
of123 2015-07-22
  • 打赏
  • 举报
回复
如果接收的数据非常多,无法全部缓存,可以考虑如下方案: 1 缓存采用循环结构。 2 UART 接收采用中断处理,将接收到的数据随时写入缓存。 2 数据处理采用状态机轮询方式,即可以被中断所打断。
默寞 2015-07-21
  • 打赏
  • 举报
回复
一般的会用硬握手信号(RTS)与上位机进行握手,当下位机数据处理不过来,置起该信号告诉上位机不要发送数据,当可以接收时再清除该信号,上位机就会继续发送
SupermanTm 2015-07-20
  • 打赏
  • 举报
回复
串行口速度快的话(115200bps),在片内空间划出部分做成环形缓冲区,主循环处检查队列指针确定有无数据,然后把数据转移到片外空间,然后再处理 如果串行口速度不十分快的话,也可以直接在中断中把数据送到片外RAM 如果是直接解释不加校验的话,可以采用一个状态变量,一边接收一边解释执行的。
mangoalx 2015-06-30
  • 打赏
  • 举报
回复
用中断接受,直接放入环形缓冲,中断外处理
rushbrush 2015-06-30
  • 打赏
  • 举报
回复
看你处理的速度了。如果处理较慢,就得加一些硬件流控来控制接受的速度了。如果只是收到数据做简单处理,那么中断里实时处理一下就OK了。
woshi_ziyu 2015-06-30
  • 打赏
  • 举报
回复
只要缓冲区够大就可以。,。。
zhong_SKY 2015-06-29
  • 打赏
  • 举报
回复
在传输过程中总是把握不了时间,导致数据无法准确接收,不知各位大神有没有好的方法可以分享一下。
sd6814466 2015-06-27
  • 打赏
  • 举报
回复
不要在中断程序内执行太多代码,以免还在处理第一个字节时下一个字节就来了,从而导致漏数据
lbing7 2015-06-27
  • 打赏
  • 举报
回复
一般来说,现在的单片机的速度都能跟得上串口速度,前后台处理不方便的话,上用系统,让系统来处理底层接收 至少,之前我们传过一些不算大的数据,不见丢。。。。
schlafenhamster 2015-06-27
  • 打赏
  • 举报
回复
数据流控制 RST,CST
worldy 2015-06-26
  • 打赏
  • 举报
回复
大串数据y有多大?接收的数据是立即使用,然后抛弃,还是要缓存起来?要知道51的内存是很少的 你的先测试,传输少量数据是否正常
wangjc_801114 2015-06-26
  • 打赏
  • 举报
回复
单片机应该能响应你的串口中断速度的,大数据不是问题,串口本身就是一个字节一个接收的,关键是你单片机需要处理的工作是不是多
worldy 2015-06-26
  • 打赏
  • 举报
回复
引用 2 楼 shen_guang_wu 的回复:
串口连续传输字节时,下位机的RXBUF只能存一个字节,你必须在两个传输位(停止位、起始位)的时间内把数据取走,不然下一个字节的数据就来了
一般是不用担心这个问题,接收是有缓存的,也就是说,你有接收一个字节的时间可以取数,如果你用9K6的波特率,你大概有1ms的时间接收,时间充足的很
加载更多回复(1)
单片机简介 一台能够工作的计算机要有这样几个部件构成:CPU(进行运算、控制)、 RAM (数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口 等)。在个人计算机上这些部件被分成若干块芯片,安装一个称之为主板的印刷 线路板上。而在单片机中,这些部件全部被做到一块集成电路芯片中,所以就称 为单片机(也称微控制器 MCU),而且有一些单片机中除了上述部份外,还集成 了其它部份如 A/D,D/A 等。体积不大,一般用 40 脚封装, 当然功能多一些 单片机也有引脚比较多的, 如 68 引脚, 功能少的只有 10 多个或 20 多个引 脚,有的甚至只 8 只引脚。 1.2 51 单片机简介 51 单片机是对所有兼容 Intel 8031 指令系统的单片机的统称。该系列单片 机的始祖是 Intel 的 8004 单片机,后来随着 Flash rom 技术的发展,8004 单片 机取得了长足的进展,成为应用最广泛的 8 位单片机之一,其代表型号是 ATMEL 公司的 AT89 系列,它广泛应用于工业测控系统之中。很多公司都有 51 系列的兼 容机型推出,今后很长的一段时间内将占有大量市场。51 单片机是基础入门的 一个单片机,还是应用最广泛的一种。需要注意的是 51 系列的单片机一般不具 备自编程能力。 80C51 是 MCS-51 系列中的一个典型品种;其它厂商以 8051 为基核开发出的 CMOS 工艺单片机产品统称为 80C51 系列。 当前常用的 80C51 系列单片机主要产 品有: Intel(英特尔)的:i80C31、i80C51、i87C51,i80C32、i80C52、i87C52 等; ATMEL(艾德梅尔)的:AT89C51、AT89C52、AT89C2051,AT89S51(RC),AT89S52 (RC)等; Philips(飞利浦)、华邦、Dallas(达拉斯)、Siemens(西门子)等公司的许多产品
单片机简介 一台能够工作的计算机要有这样几个部件构成:CPU(进行运算、控制)、 RAM (数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口 等)。在个人计算机上这些部件被分成若干块芯片,安装一个称之为主板的印刷 线路板上。而在单片机中,这些部件全部被做到一块集成电路芯片中,所以就称 为单片机(也称微控制器 MCU),而且有一些单片机中除了上述部份外,还集成 了其它部份如 A/D,D/A 等。体积不大,一般用 40 脚封装, 当然功能多一些 单片机也有引脚比较多的, 如 68 引脚, 功能少的只有 10 多个或 20 多个引 脚,有的甚至只 8 只引脚。 1.2 51 单片机简介 51 单片机是对所有兼容 Intel 8031 指令系统的单片机的统称。该系列单片 机的始祖是 Intel 的 8004 单片机,后来随着 Flash rom 技术的发展,8004 单片 机取得了长足的进展,成为应用最广泛的 8 位单片机之一,其代表型号是 ATMEL 公司的 AT89 系列,它广泛应用于工业测控系统之中。很多公司都有 51 系列的兼 容机型推出,今后很长的一段时间内将占有大量市场。51 单片机是基础入门的 一个单片机,还是应用最广泛的一种。需要注意的是 51 系列的单片机一般不具 备自编程能力。 80C51 是 MCS-51 系列中的一个典型品种;其它厂商以 8051 为基核开发出的 CMOS 工艺单片机产品统称为 80C51 系列。 当前常用的 80C51 系列单片机主要产 品有: Intel(英特尔)的:i80C31、i80C51、i87C51,i80C32、i80C52、i87C52 等; ATMEL(艾德梅尔)的:AT89C51、AT89C52、AT89C2051,AT89S51(RC),AT89S52 (RC)等; Philips(飞利浦)、华邦、Dallas(达拉斯)、Siemens(西门子)等公司的许多产品
单片机多功能调试助手分两个版本,分别是:含CH375 DLL版本、无DLL版本,它们的区别主要体现在是否对CH37X USB提供支持。为了减少对服务器的负担,现在单片机多功能调试助手只提供无DLL的版本,即不对CH372/CH375 USB芯片提供支持,只支持HID USB设备!含有DLL版本的暂只提供给购买开发板的买家! 在此感谢网络上众多的朋友的反馈与建议,没有他们的支持就没有该软件的茁壮成长!本人会继续努力进行更新,为大家提供一个功能完善与稳定的调试工具,为大家节省不必要的时间。 本软件的使用手册可到www.smartmcu.com进行下载! 作者: 温子祺 联系方式:wenziqi@hotmail.com或wenziqi@gmail.com 博客: http://www.cnblogs.com/wenziqi 淘宝: http://shop61791934.taobao.com/ 官网: www.smartmcu.com 注:软件版权归作者所有,未经作者允许,禁止用于商业用途,违者必究! ===================================================== 2015-12-12 (1)内嵌了蓝牙调试助手功能。 ===================================================== 2015-12-8 (1)在Win7以上系统执行更稳定,默认支持管理员运行。 ===================================================== 2013-07-23 (1)增强稳定性 ===================================================== 2012-05-21 (1)优化了Ping和TCP连接过程 (2)开放了检验源码 ===================================================== 2012-02-06 (1)发送区域支持保存发送数据256字节 ===================================================== 2011-10-17 (1)帧换行功能可调 ===================================================== 2011-07-10 (1)串口、USB、网咯接收数据时能够自动对\n和\r\n进行识别 注意:Windows默认对'\r\n'进行换行的 Linux 默认对‘\n’进行换行的 ===================================================== 2011-07-26 (1)修正了PING会出现大延时的问题 (2)修正了网络调试发送计数错误的BUG ===================================================== 2011-07-24 (1)数据校验修正和添加了部分功能 (2)服务器支持多项发送 ===================================================== 2011-07-10 (1)串口、USB、网络接收数据时能够自动对\n和\r\n进行识别 注意:Windows默认对'\r\n'进行换行的 Linux 默认对‘\n’进行换行的 ===================================================== 2011-05-05 (1)串口调试添加Modem模式 ===================================================== 2011-04-25 (1)修正Ping过慢的BUG ===================================================== 2011-04-20 (1)在接收区添加了右键菜单(清空、显示控制、文本输出控制) ===================================================== 2011-04-13 (1)修正串口调试隐藏BUG (2)提升了界面启动的速度 ===================================================== 2011-04-07 (1)发送数据支持回车换行 (2)修正了C51代码向导的BUG ===================================================== 2011-03-31 (1)修改了清空发送和清空接收的BUG ===================================================== 2011-03-24 (1)修改了下载功能 (2)修正了HexToText 和 HexToBin ===================================================== 2011-03-03 (1)在C51代码向导当中增加了计算软件延时的功能 (2)修正了通信端口监视不正常的BUG (3)解决了回车键会退出界面的BUG ===================================================== 2011-02-28 (1)在串口、USB、网络接收数据的过程中,能够正确显示当前接收数据的速度 (2)在C51代码向导当中增加了输出为Keil工程的功能,方便编译 ===================================================== 2011-02-25 (1)增加了双击文本框可以保存数据记录的功能 (2)增加了Hex/Bin文件输出文本的功能 ===================================================== 2011-02-20 (1)修正了在连续发送的逻辑BUG (2)修正了串口监视关闭时发生内存错误的BUG ===================================================== 2011-02-13 (1)修正了在无USB HID设备的情况下还能够打开USB设备的BUG ===================================================== 2011-02-11 (1)修正了界面风格,防止在不同的系统显示不一致! ===================================================== 2011-02-07 (1)修复了部分BUG,如串口高级监视、代码生成等。 (2)编码转换增强、调试工具增强(支持帧换行,方便分析数据)! (3)USB支持自动寻找设备! ===================================================== 2011-01-31 (1)添加了串口高级监视功能,能够监视其他应用程序的串口通信。 (2)添加了8051单片机代码生成功能。(懒人的必备O(∩_∩)O哈哈~) ===================================================== 2011-01-15 (1)修正了发送大量数据出错的BUG ===================================================== 2011-01-13 (1)修正了串口、USB、网络监视的BUG ===================================================== 2011-01-08 (1)新增加COM、USB、NET多项发送功能,更加利于调试! ===================================================== 2011-01-02 (1)调整了界面,让其显示更加多的数据! ===================================================== 2010-12-28 (1)修正Hex接收会出错的BUG ===================================================== 2010-12-21 (1)完美支持中文字数据收发 ===================================================== 2010-12-14 (1)修正COM、USB、NET、SERVER接收数据时会出现乱码的BUG (2)优化了线程接收数据的策略 ===================================================== 2010-12-10 (1)支持USB、网络接口监视 (2)优化了自动升级策略 (3)增强了位图输出16进制数功能(支持单色图、16位图、24位图) (4)具有自动保存参数功能 ===================================================== 2010-12-02 (1)修正了串口检测、接收策略, (2)添加了串口监视功能 (3)添加了BCC校验 (4)增强字模制作功能(支持特殊字符、英文、汉字等) ===================================================== 2010-11-29 (1)添加了记录发送、接收字节数的统计功能 (2)添加了自动检测新版本的功能 ===================================================== 2010-11-25 (1)添加了连续发送的功能 (2)添加了在线下载新版本的功能 (3)完善服务器功能 (4)完善了字模输出(摆脱外接字符文件) (5)完善了位图转16进制文件功能,可保存为C文件 ===================================================== 2010-11-02 (1)添加了服务器功能,网络调试更方便! (2)界面更加宽阔,显示更多的信息! ===================================================== 2010-09-26 (1)修正了单片机功能助手运行时间长导致的假死问题。(多谢网友提供宝贵的意见) ===================================================== 2010-09-01 (1)修正了串口类,提升接收数据的效率。 ===================================================== 2010-08-03 (1)在检验值计算支持TCP/IP校验和计算 (2)在NET调试新增加了Ping功能 ===================================================== 2010-07-28 (1)修正CRC计算错误 ===================================================== 2010-07-15 (1)修正打开关闭串口接收数据文本框数据丢失 (2)串口对话框更为简洁
单片机简介 一台能够工作的计算机要有这样几个部件构成:CPU(进行运算、控制)、 RAM (数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口 等)。在个人计算机上这些部件被分成若干块芯片,安装一个称之为主板的印刷 线路板上。而在单片机中,这些部件全部被做到一块集成电路芯片中,所以就称 为单片机(也称微控制器 MCU),而且有一些单片机中除了上述部份外,还集成 了其它部份如 A/D,D/A 等。体积不大,一般用 40 脚封装, 当然功能多一些 单片机也有引脚比较多的, 如 68 引脚, 功能少的只有 10 多个或 20 多个引 脚,有的甚至只 8 只引脚。 1.2 51 单片机简介 51 单片机是对所有兼容 Intel 8031 指令系统的单片机的统称。该系列单片 机的始祖是 Intel 的 8004 单片机,后来随着 Flash rom 技术的发展,8004 单片 机取得了长足的进展,成为应用最广泛的 8 位单片机之一,其代表型号是 ATMEL 公司的 AT89 系列,它广泛应用于工业测控系统之中。很多公司都有 51 系列的兼 容机型推出,今后很长的一段时间内将占有大量市场。51 单片机是基础入门的 一个单片机,还是应用最广泛的一种。需要注意的是 51 系列的单片机一般不具 备自编程能力。 80C51 是 MCS-51 系列中的一个典型品种;其它厂商以 8051 为基核开发出的 CMOS 工艺单片机产品统称为 80C51 系列。 当前常用的 80C51 系列单片机主要产 品有: Intel(英特尔)的:i80C31、i80C51、i87C51,i80C32、i80C52、i87C52 等; ATMEL(艾德梅尔)的:AT89C51、AT89C52、AT89C2051,AT89S51(RC),AT89S52 (RC)等; Philips(飞利浦)、华邦、Dallas(达拉斯)、Siemens(西门子)等公司的许多产品

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧