学习stm32有1年多之久了,可是串口接纳数据尽管触摸的很多了,可是最近忽然遇到串口中止要接纳好几百KB甚至几兆的数据,却一时半会想不想出设计计划来。仍是学的不透彻,明日好好研讨总结一下!
串口怎么接纳大数据通过几天的查找和查验现总结一下。举例来说单片机内存只要512KB,而咱们要接纳一包1M的图片数据并送至液晶屏LCD显现。很显然单片机的内存不足1M假如接纳完在处理,必定会使单片机溃散,假如咱们拓荒一个512字节巨细的Buffer,用串口中止接纳数据,能够循环运用Buffer200屡次才能将一包接纳过来。这个时分,咱们能够spiflash将每一包buffer数据写到Flash,等1M数据接纳完后再从FLASH里读出来处理数据。但这种计划要求Flash容量有必要足够大,假如串口接纳的数据不是一种的话发的很频频的话,也简单很快将Flash作废,他的读写次数只要10完次对同一页的读写时,而且还要考虑到速度和价钱问题。
另一种方法便是不运用外部Flash直接对数据进行处理,这种方法咱们司理告诉我叫做透传(需求查验)。便是接纳完一个buffer512个字节后,发生一个标志方位1,表明一包接纳完,这个时分咱们敞开另一个守时器中止守时查询标志位,假如标志位为1,咱们将数据提取出来,送至LCD显现,当然这里有个细节要求,需求LCD发送数据足够快,数据送完后,串口中止才会接纳,也便是处理数据的速度要比串口接纳数据的速度快,咱们也能够恰当调低串口波特率,下降速度,假如是9600,算法如下一包数据有开始位,结束位,数据位共10个,9600/10=960,也便是一秒接纳960个字节,1MS接纳0.96个字节,也便是说1Ms多一点就一个字节,而处理的速度要在1MS内完成才不会被中止打断。