STM32接收数据并严格按照时序同步处理数据

有这样一个需求,因为刚接触STM32开发、希望能得到解决方案或思路,或有偿提供开发帮助。
手边有一块基于STM32F767芯片的一块开发板下位机。
---------------------问题场景-------------------------------
1、PC端持续运算源源不断的生成命令数据并存入数组(每个命令数据约6byte大小)
2、PC需要将生成的数组数据发送到下位机、下位随时按接收顺序根执行命令。
3、PC生产命令的速度较快、下位机消费命令的速度慢。
4、上位机代码已经实现。并且可以根据下位机情况分批发送数据。
5、下位机连续不断的处理命令(如果有),且处理过程对时序要求严格。不能过多受到命令接收过程对时序的影响(或影响范围不能超过2us).
6、下位机获取到的命令中包含Delay参数、因此每条命令之间会有5-200us不等的中断且中断时间有严格要求。
-------------------我想到的问题解决方案------------------------------
1 因为单位时间内需要处理的命令较多。1秒需处理50000+命令约300k数据,因此需选用usb通讯、485、spi等高速通讯方式。
2 因下位机内存有限、因此需要固定内存空间的数据缓冲区,这就需要告知PC端 什么时候可以接收,什么时候可以发送。
3 综上、我觉得使用DMA是个解决办法。但不清楚具体方案实施过程。
----------------------需回答或解决的问题-------------------------------
1,采用什么方案与PC稳定高速通讯。
2,下位机如何缓存和处理数据,且不影响处理数据过程中的时序要求。
如需补充其他内容,请留言。

同样感觉问题不大清楚,如果单片机上的那两个引脚的协议确定,那么就接到stm32上的相应外设引脚即可,然后设置下双方工作模式。如果确定是两根线,那么iic的可能性大一些(不过要查下iic的总线时序,看看是否与描述的一致),毕竟标准spi要miso,mosi,clk与cs四根线。其他的串行通讯暂时能想到的都是异步的了。如果协议不确定,只是想分析协议与数据,那么最好的方式是使用逻辑分析仪。
如果这种情况下仍然想要使用stm32来分析,只能使用io口中断或定时器捕捉模式来分析协议。如果只是只想要数据的话,可以用io中断,再每个单片机clk的上升沿触发中断,在isr中把另一个io口采集到的数据保存并移位(要注意msb在前还是lsb在前,spi是msb在前),采集完8个后处理。不过这样肯定会做累的半死。所有的时序,都要处理好了。还要考虑到各种出错的可能性。
当然如果后面的描述正确的话,可以尝试使用spi协议(spi规定是msb在前,要对应好了)但是需要单片机上一根额外的引脚作为片选接到stm32上,或者想其他办法把片选接上,stm32作为从机使用mosi线,,设置下相位和极性即可。
温馨提示:答案为网友推荐,仅供参考
相似回答