新手上路
- 积分
- 23
- 金钱
- 23
- 注册时间
- 2020-10-13
- 在线时间
- 4 小时
|
3金钱
本帖最后由 y414286079 于 2020-10-14 09:28 编辑
最近在做一个项目,使用STM32F105驱动摄像头GC6153并接受数据,结构是这样的,通过MCO给GC6153工作时钟,然后启动后通过IIC发送配置信息,配置完成后GC6153就会通过SPI来发送图片数据。
数据量特别大,320*240*2,一共150K,此芯片的RAM为64K,内部FLASH为124K。所以我想了个方法,因为150K是分包发的,一包的数据量是240*2加上一些包头包尾,所以我在接收完一包后立刻对数据进行提取再保存,提取出来的数据总量为75K,这样就能把空间省到只需要一包数据的缓冲区和75K的储存空间。每包数据之间的时间间隔为1.7MS,提取算法目前已经实现,能处理得过来,但是在添加了提取完每包数据后将数据写入FLASH的代码后,发现处理不过来了,导致后面接收的数据乱了,理论推导计算了一下写入FLASH所用的时间是大于每包的间隔时间的。
目前SPI的接收方式为中断接收,我想尝试使用DMA的方法来接收SPI,这样能否将CPU空闲出来处理FLASH的写入?但是感觉很悬啊,因为DMA同样是会占用掉总线,导致不能写入FLASH。还没实际测试过效果,不知道大家还有什么方法可以推荐给我吗?
|
|