历史上的今天
返回首页

历史上的今天

今天是:2024年12月20日(星期五)

正在发生

2018年12月20日 | STM32学习笔记8——串口输出数据丢失问题

2018-12-20 来源:eefocus

项目中采用STM32F103和AD7260进行数据采集。采集后想将数据通过串口逐点输出到上位机,然后查看数据是否正确。AD7260是采用外部中断进行采集的,当AD7260的BUSY输出下降沿后,触发外部中断,这时CPU去采集数据。


串口输出部分,我先是这么做的:在中断中采集数据的后面添加printf(串口已经重定向到printf函数)语句,每采集得到一个点后直接printf输出。上位机用软件SerialChart测试,发现数据经常丢失,或者出现一个很大的数(明显超出ADC的输出范围)。可初步断定,是串口输出部分出了问题。调试得出的结果很简单,但一开始走了很多弯路,如下: 

1、先是感觉串口输出被外部中断打断,在网上查串口输出和和外部中断是否会有冲突,经检查,中断优先级设置等没问题。 

2、在debug模式下,测试外部中断函数执行的时间,发现的确偏长,约3~10ms,这尼玛也太长了。这时,我直接判断可能是ADC时序的问题,又各种看数据手册,用示波器测试ADC各个管脚,没发现问题。 

3、还是在debug模式下,逐句测试各语句耗费的时间,终于逮住罪魁祸首,原来是printf函数。尼玛,我竟然没想到自己程序的问题,竟然直接怀疑串口是否应该重定向到printf了。 

4、用另一个以前测试正常的板子和程序测试printf所用时间,发现的确是ms级,我终于意识到问题了。 

5、程序波特率为9600,我在中断中每次发的数据为一个16位数据,计算下用时:8×2/9600*1000=1.667ms,就是ms级啊。


终于找到问题和解决方案所在了。那就是,串口输出速率较慢,不适合在采集中断里实时调用。要将数据通过串口输出,还是老老实实地将数据缓存,然后在主循环中输出。


注:以前都是通过缓冲数据后串口输出的(当然,程序是在别人基础上改的),这次自己偷懒,直接将快速数据串口输出,出了问题。

推荐阅读

史海拾趣

DURATOOL公司的发展小趣事

DURATOOL公司自成立以来,一直致力于电子工具的技术创新。在20世纪90年代,公司研发出了一款具有革命性的数字万用表,该产品在精确度、稳定性和操作便捷性方面均大幅超越当时的市场主流产品。这一创新不仅为DURATOOL公司赢得了大量忠实用户,也为其在电子测量工具市场树立了技术领先的形象。随后,DURATOOL公司不断加大研发投入,推出了一系列具有竞争力的新产品,逐步巩固了其在电子工具行业的领先地位。

BULGIN公司的发展小趣事

BULGIN公司的历史可以追溯到1923年,当时A.F.Bulgin先生和他的同伴在英国创立了A.F.Bulgin有限公司。公司专注于无线电电子零件的制造与生产,凭借产品的优质口碑,BULGIN的品牌逐渐广为人知。随着订单的不断增加,公司迅速成长,并在二战前已经拥有了当时最先进的现代化大规模生产线。

Herley New York公司的发展小趣事

在1939年至1945年的二战期间,BULGIN的产能被英国政府全面征用。为了满足战时需求,BULGIN公司开发出能够适应全世界各地区苛刻使用环境的产品。在这段时间里,公司为英国政府制造了超过1千万只零部件,并在密封技术领域积累了宝贵的经验,这些经验一直延续至今。

ESPROS [Espros Photonics corp]公司的发展小趣事

ESPROS在飞行时间(Time-of-Flight,简称ToF)技术领域取得了显著突破。ToF技术是一种用于测量光在物体上反射所需时间的测距技术,它在3D视觉应用中具有广泛的应用前景。ESPROS凭借其多年的技术积累,成功开发出从单点传感器到QVGA面阵的完整ToF产品线,为客户提供了全方位的3D ToF解决方案。

BNS Solutions公司的发展小趣事

随着电子行业的不断发展,新技术和新应用层出不穷。BNS Solutions公司紧跟时代步伐,不断加大研发投入,推动技术创新。公司团队不断探索新技术、新材料的应用,开发出了一系列具有创新性和前瞻性的电子产品。这些产品不仅提高了行业的整体技术水平,还引领了行业变革的潮流。通过持续创新,BNS Solutions公司在电子行业中保持了领先地位,成为了行业的佼佼者。

G24 Innovations公司的发展小趣事

为了进一步拓展国际市场,远阳公司开始实施国际化布局战略。公司通过设立海外研发中心、生产基地等方式,加强与全球市场的联系和互动。同时,远阳还积极寻求并购整合机会,通过收购同行业优质企业,实现优势互补和资源共享。这些举措不仅增强了远阳的国际竞争力,也为企业的可持续发展注入了新的动力。

问答坊 | AI 解惑

基于嵌入式Web的电子交警系统

近年来智能交通系统发展迅速,它力图把先进的信息技术、通信技术、计算机技术、电子控制技术等高新技术有效地集成运用于整个交通运输管理体系,在大范围内建立起一种全方位的实时、准确、高教的交通运输综合管理系统。迄今为止,日本、美国、西欧、 ...…

查看全部问答>

哪里可以下载wince 5.0?

要比较正规一点的,有链接最好。…

查看全部问答>

菜鸟不要进来

pic16c74b芯片在写入时出错是什么原因啊! 求高手出手相助…

查看全部问答>

Operational amplifier gain stabilityPart 3 AC gain-error analysis

本帖最后由 dontium 于 2015-1-23 13:39 编辑 Operational amplifier gain stabilityPart 3 AC gain-error analysis …

查看全部问答>

MSP430 DCO振荡器频率?

(1) MSP430 DCO振荡器频率范围是多少?我如果不用外部晶振,我进行采样或定时的时候不能准确确定采样间隔?其受温度影响到底如何? (2)MSP430F 1XX与MSP430F4XX系列中 4XX系列使用32。768K晶振时,可以精确确定DCO,而1XX则不可以,我的理 ...…

查看全部问答>

IAR无法烧写程序

采用的为USB MSP430仿真器, 型号(MSP430F149)、硬件仿真(FET-debugger )、usb口选择这些我之前都选好了,在进行烧写程序时,系统有如下提示: No device found or device disconnected. Please connect the device and press Retry to recon ...…

查看全部问答>

带有铁电存储器的MSP430

今年上半年的MCU DAY还在说要推出带有铁电存储器(FRAM)的MSP430,没想就已经推出来了。铁电存储器首先是非易失性的存储器,其实还有非常快的读写速度,几乎与RAM想当。TI目前推出的带有FRAM的MSP430可以在FRAM和普通RAM上运行,若是使用FRAM即使 ...…

查看全部问答>

使用串口芯片 SC16C55的一个问题

SC16C55永远只发出每字节的低四位什么原因,高四位永远是F。 用示波器测量了SC16C55八根入口数据线数据都是对的,但是传出来的串行数据就是出现问题。有谁遇到过。…

查看全部问答>

STM8L151K4如何设置才能是Active-halt mode

如题,谢谢! 我现在的程序如下,进入halt后就是不能唤醒。 CLK_LSICmd(ENABLE);   /* Enable RTC clock */   CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1);   /* Wait for LSE clock to be rea ...…

查看全部问答>

关于论坛门户与论坛访问频率调查

针对论坛网友是否经常浏览门户(www.eeworld.com.cn)新闻等内容,发起本次投票,希望大家踊跃参与,为EEWORLD的更好发展贡献一份自己的力量,本帖也是SOSO回来后我发的第一个帖子就算是迎接SOSO回归啦!~…

查看全部问答>