你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何使用STM32存储激光雷达串口每秒钟发送上来的4000个数

[复制链接]
大连海港 提问时间:2017-5-2 10:25 /
阅读主题, 点击返回1楼
收藏 1 评论23 发布时间:2017-5-2 10:25
23个回答
watershade 回答时间:2017-5-4 21:22:39
大连海港 发表于 2017-5-3 19:55
看了您的建议以及码这么多字,真心非常感谢!怪我自己之前没有认真思考清楚,帖子中发东西的下面也需要改 ...

看来我之前对你贴纸中的两个float误解了,我还以为数据都是float的。所以:
1、你提供的数据结构应该是雷达提供方的。所以230400当然可以,但是我建议再大一倍。你可以做个测试就试一下。因为雷达数据的特殊性,所以每一次的确不需要时间标志。
2、的确很抱歉,我忘记了CCMRAM占用的64K内存。我之前只是看别人玩过这一区域,自己一直没有试过。正常情况下,不做图像音频等的处理。变量占用的存储空间不会特别大。你可以根据自己的需求估算一下可能占用的内存,我估计192K是足够的。如果你觉得SRAM,Flash的空间也可以利用,但是如果你要来回王SRAM里面搬迁就太麻烦了。(但是之前看到有人的代码就是在Flash里面运行的,不太清楚是怎么一种考量)。外扩SDRAM是个办法,存储空间可以扩大很多。EEPROM一般用于掉电存储的信息,这里不适合你。
说到CCMRAM,我们还可以讨论一下你的数据到底能否存到这里。OK,你用DMA将串口收到的数据直接搬迁到你定义的一片存储区。(我们想不说这个区域有多大)但是,根据你的数据结构。你真正能够利用的数据用两个16位的数据就可以涵盖。也就是说你不会等到存储区存满才将数据一股脑的提取出来(包含提取和校验)。所以处理之后的数据放哪里呐,据说存CCMRAM有很多优势。尤其是你直接用CPU或DSP处理这些数据。而这篇专用的64K,你可以做很多事情。
ringbuf就是用来解决你需要保留最新一定量数据的好方法。这是标准做法。你应该感谢这位网友。

3、现在说算法的问题。之前学习Coursera上的机器人课程,简单了解的是势场法。而你这个VFH法应该是需要通过接受到的新数据去更新场景中ROI或者目标锥形区域的概率。(VFH没有深入了解过,不好意思)所以也符合我之前的说法。不过看来你存储一圈甚至更多圈区域的数据挺好的。
关于算法的实现。建议你看一下CMSIS-DSP。你会发现里面有很多我们之前只在数学里常用的计算工具。我们的确遇到过将计算机代码转到单片机里面就无从入手的情况。最典型的是我们用matlab实验好代码,却发现将代码移植到单片机里是一个大工程。我最早想到的方法是用matlan的那个自动生成代码的工具。发现那个工具收费之后,也曾想过使用别人编写好的某个计算工具(比如矩阵运算)的嵌入式代码库。可是也不太好。去年我尝试使用CMSIS-DSP里面的计算工具(函数)来解决自己的问题,尽管还是有一些没有(比如tan2).但是却有很多好用的。比如矢量电机控制用的帕克变换和卡莱克变换等,直接就有。也有PID的,和一些矩阵的。如果你有很好的办法也请赐教。

因为知识量有限,有错误的请多包涵。



yygkqzh 回答时间:2017-5-4 22:22:25
jcx0324 发表于 2017-5-3 15:46
芯片自身带的RAM都够了,根本没必要那么复杂,串口可以最高跑到好几M呢,主要看你的线路 ...

F4最快好像是10M
zbber 回答时间:2017-5-4 22:51:18
用429就加个256Mbit的SDRAM
大连海港 回答时间:2017-5-5 09:02:28
zbber 发表于 2017-5-4 22:51
用429就加个256Mbit的SDRAM

您好,之前帖子也有人回复加个SDRAM,您能具体说说原因吗?因为我想存储的数据量也就20-30K,这样直接存在CCMRAM里面可以吗?对了,您知道定义的数组在CCMRAM里面,还是SRAM里面呢?还是指针指向,让在哪里就在哪里
大连海港 回答时间:2017-5-7 01:09:46
watershade 发表于 2017-5-4 21:22
看来我之前对你贴纸中的两个float误解了,我还以为数据都是float的。所以:
1、你提供的数据结构应该是雷 ...

您好,我想向您请教一个我做这个东西需不需要使用缓冲区的问题。别人和我介绍说是如果我处理数据的速度大于我数据写进去的间隔时间,那就会造成数据丢失的问题,所以使用ringbuff。现在我们来算一下,或者估计一下。
我的串口波特率为230400,每秒钟发送5000组数,每组数4个字节,这样算下来,每两次发送数据的中间时间大概0.001826s。而我处理这些数据只需判断他们的角度,并且存储到一个数组中(我不知道其他的东西时间需要算进来不),我如果用F4,168MHZ,您觉得这个处理速度时间是多少?有必要用环形缓冲吗
大连海港 回答时间:2017-5-7 01:11:40
回复需要审核了吗
zailshang745 回答时间:2018-8-6 10:21:35
同在做激光雷达,按照协议是一次性传送22个字节,传送多次,最后放在一次,校验处理,一秒钟有十帧以上,但是现在写避障程序很茫然
wo1357997531 回答时间:2019-8-22 09:57:10
请问 你的激光雷达是基于什么原理的
wo1357997531 回答时间:2020-10-13 16:06:32
请问 激光雷达是基于三角原理的吗
12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版