新手上路
- 积分
- 40
- 金钱
- 40
- 注册时间
- 2019-6-10
- 在线时间
- 8 小时
|
1金钱
CPU:STM32F439
系统:uCOS
应用描述:
1.本工程目前存在以下几个任务:
A任务:AD采样任务,每20ms采样一次(AD有12个通道,都采集完成),累积并平均1s(即50次)的数据,然后发送到B任务。
B任务:从A任务接收数据,根据数据缓冲数组的长度buf_size(该值可设置,1k或者其他)进行缓冲数据,并进行数据转换字符操作,本任务中有2个缓冲buf,buf1和buf2(定义在sdram中),长度相同,在实时操作中切换使用,例如:buf1用于实时接收A任务数据,buf2用于在积攒满buf_size之后向C任务发送数据首地址。当buf1积攒满之后,将buf1地址发送给C任务,启用buf2进行接收数据,循环往复切换。
C任务:当B任务积攒满buf_size个数据之后,接收数据首地址,向SD卡中写入该组数据。
2.问题描述:
问题1:当其他任务设置不变,若B任务中的buf_size设置为较小的值,例如1k,写入SD卡中的数据正确。若将B任务中buf_size设置为10k或者更大的值之后,写入SD卡的数据错误,通过IAR观察buf(即SDRAM中的数据)发现其数据确实错了。
问题2:当其他任务设置不变,将A任务中的累积平均时间改小例如5次,即100ms平均并发送一次,B任务中的buf_size可设置为20k甚至更大均可以正常工作,即C任务中写入SD卡的数据不存在混乱现象。
3.问题总结:
以上两个问题现象总结感觉像是在SDRAM中存放的数据时间过长时数据即发生了变化。但是SDRAM已经经过读写测试不存在问题。
|
|