|
本帖最后由 shenshen927 于 2017-8-26 16:57 编辑
其实我是有这样的一个需求(我的开发板是pyb,mcu是STM32F405),有一个串口在源源不断的接收数据,数据接收速率非常高,波特率可能达到921600,我需要一直监听并接收该数据,对数据做相应的处理后,需要将这些数据以文件的形式保存在sd卡中。
针对这样的需求,我在实现的时候有以下几个方面的考虑:
1、由于串口速率较高,我应该采用while(True)死循环的方式一直读,还是采用定时器的方式定时读?如果采用定时器,目前stm32f405的最小定时间隔是不是1毫秒?这个定时间隔对921600的速率来说会不会造成数据拥塞?最终导致串口缓冲区溢出(话说f405的串口缓冲有多大?),从而存在数据丢失的可能?
2、由于我收到数据后,需要做相应的解析处理并存储为文件,这部分操作 放到上面说的循环里面做合适么?对于上位机编程来讲,一般文件IO的处理都是比较慢的,嵌入式方面在不上系统的前提下也没有线程的概念吧,因此如果这部分操作放在接收数据的循环里面执行,会不会因为文件存储而造成阻塞串口接收或者阻塞其它功能的执行?
3、请问,这样的需求,如何设计最优呢? 谢谢版主大大。
|
|