历史上的今天
今天是:2024年09月01日(星期日)
2018年09月01日 | 使用STM32的串口进行大量数据传输
2018-09-01 来源:eefocus
近的一个项目需要用单片机和上位机进行大量数据的传输,每次传输的内容为一个1000*7的矩阵,矩阵中的每个元素都是一个4位有效数字,通过字符的形式保存,(如:1.000占5个字节)简单计算一下,1000*7*5=35000Byte,也就是30几K,而单片机型号为:STM32F103ZET6, SRAM有64K 。如果直接申请一个数组来保存,占用空间太大,但是又不适合用C标准库中的malloc 进行动态内存分配,网上有人自己写的实现动态内存管理的代码,可以移植,这是第一个问题。
第二个问题是,当我在串口中断中只做一件事:将接收的数据打印到终端,不再做其他事时,数据接收到的是完整的,一开始为了节省内存,申请了一个比较小的数组,循环使用。每当接收到1024个字节就写到flash中,但是这种方式会丢包,因为在向flash中写数据的过程中,PC 端仍然在发,但是STM32却没有接收,因此造成部分数据丢失,因为时间有限,后来只好申请了一个比较大的数组将数据一次性接收,并在数据包的首尾设置标志。这样才避免了丢包的问题,但是数据太大,太占空间,现在将这个问题留在这里,等解决了再补充。
史海拾趣
|
Linux下的设备驱动程序被组织为一组完成不同任务的函数的集合,通过这些函数使得Windows的设备操作犹如文件一般。在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作,如open ()、close ()、read ()、wr ...… 查看全部问答> |
|
!求助,关于stc-isp下载器v4.8以上版本各选项的详细说明! 百度了半天,还是没有找到这个版本各中选项的详细说明,用过的前辈有资料的请指教一下,比如什么\"每次下载重新调入已在打开在缓冲区的文件\"....等等等等,十分感谢!… 查看全部问答> |
|
招聘手机Baseband Engineer & Electrical Engineer(北京) 职位要求: 1. 本科及以上学历背景 2. 具有三年以上手机基带,电路设计工作经验 3. 英语读写能力强。 有意者请与我联系: Email:sindyshi@chinacareer.com Tel: 010-58790033-2 ...… 查看全部问答> |




