无人地铁 发表于 2012-4-5 22:43:12

是否可以把OV9650读到的数据直接通过DMA存到SD卡中?

先谢谢各位看帖支持!:handshake
毕业设计还在摸索中,时间紧迫,搞到SD卡的时候发现有

这个东东,是不是说可以通过DMA直接存到SD卡中呢?
这个介绍很少。。。都不知道如何做,望各位前辈给点提示~
先谢过·~:handshake

cepoly 发表于 2012-4-5 23:17:36

应该可以吧 我同学做的摄像头采集数据是直接通过Ziibee发送到终端再保存。。。

无人地铁 发表于 2012-4-5 23:37:29

本帖最后由 无人地铁 于 2012-4-5 23:42 编辑

cepoly 发表于 2012-4-5 23:17 http://armbbs.net/static/image/common/back.gif
应该可以吧 我同学做的摄像头采集数据是直接通过Ziibee发送到终端再保存。。。

Ziibee看来不搞得了,我是直接就在开发板上做了,还有就是是无OS版的哦~ 没有操作系统的~谢谢大虾的回答~:)

TQ-ZQL 发表于 2012-4-6 11:30:08

这个应该不太现实
如:dma它只会将数据单一地放到指定地址,你基本上不知道它现在发的是第几个字节。而sd的写有它自己的时序/方法(如每次写512字节就要发个crc之类的等)。就这个问题就不好解决(我个人认为)

无人地铁 发表于 2012-4-10 15:33:31

TQ-ZQL 发表于 2012-4-6 11:30 static/image/common/back.gif
这个应该不太现实
如:dma它只会将数据单一地放到指定地址,你基本上不知道它现在发的是第几个字节。而sd的 ...

谢谢版主的回答,那个录相机是如何实现的呢:funk:

connortao 发表于 2012-4-10 16:52:21

无人地铁 发表于 2012-4-10 15:33 static/image/common/back.gif
谢谢版主的回答,那个录相机是如何实现的呢

ov9650数据读取和dma存到sd卡我分别做过,我觉着直接ov9650-dma-sd不大可能。你要是需要做成录像机,我建议是先0v9650-dma-ram,再ram-dma-sd。

TQ-ZQL 发表于 2012-4-10 17:00:35

一般做法大概是先将数据保存到内存中,然后再将数据做相关处理(编码之类的)。再放到其它介质(如sd卡)中保存

无人地铁 发表于 2012-4-10 19:26:25

connortao 发表于 2012-4-10 16:52 static/image/common/back.gif
ov9650数据读取和dma存到sd卡我分别做过,我觉着直接ov9650-dma-sd不大可能。你要是需要做成录像机,我建 ...

对啊。。我就是这个意思。。DMA就是把内存RAM里的数据搬别的地方比如液晶显示器呀~
   TQ那个SD卡读写现在还不是很行呀。。裸机代码读是没有问题的,可是写的话说写失败,或是写成功了,比如写了0x0f到相应地址,读出来的时候却是0xff。。。这是怎么回事呀。。:handshake

无人地铁 发表于 2012-4-10 21:26:02

TQ-ZQL 发表于 2012-4-10 17:00 static/image/common/back.gif
一般做法大概是先将数据保存到内存中,然后再将数据做相关处理(编码之类的)。再放到其它介质(如sd卡)中 ...

再次感谢热心的版主回答小菜的问题,但是我在读写SD卡的时候不太行。版主看看是怎么回事~:dizzy:
环境:2011年10月购的TQS3C2440,无OS裸奔中第10个实验Test_SDI;
问题:写成功读也成功,但是数据不对,全为FF FF 。。。
部分程序:
for(i=0;i<SDCARD_BUFF_SIZE;i++)
{
cTxBuffer = 0x0f;
}
if(Write_One_Block(0,(U32 *)cTxBuffer))
{
Uart_Printf("\nWrite 0 Block is OK!\n");
}
else
{
Uart_Printf("\nWrite 0 Block is Fail!\n");
}
Delay(500);

while( ((CardStatus=CMD13(SDCard.iCardRCA)) &0x100) !=0x100 )
Uart_Printf("\ncard status is %x\n",CardStatus);

for(i=0;i<SDCARD_BUFF_SIZE;i++)
{
cRxBuffer = 0x00;
}

if(Read_One_Block(0,(U32 *)cRxBuffer))
{
for(i=0;i<512;)
{
   Uart_Printf("%02x ",cRxBuffer);
   Uart_Printf("%02x ",cRxBuffer);
   Uart_Printf("%02x ",cRxBuffer);
   Uart_Printf("%02x ",cRxBuffer);
   i += 4;
   if(i%16==0)
    Uart_Printf("\n");
}
Uart_Printf("\nRead 0 Block is OK!\n");
}
实验结果(部分):
0x1640007d
卡容量为:30400KB,29MB
Card sel desel OK!
Card Status is 0x900
Bus Width is 4bit
卡初始化完毕!
Write 0 Block is OK!
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
....
Read 0 Block is OK!
蹭的CMD13和延时是自己加的,我以为是SD卡没有写到里面,所以读出来还是这样,
但是加了延时还有读状态后,还是读出FF。。没有读出0F。。
实在是不知道什么原因呀。。

connortao 发表于 2012-4-14 00:27:48

无人地铁 发表于 2012-4-10 21:26 static/image/common/back.gif
再次感谢热心的版主回答小菜的问题,但是我在读写SD卡的时候不太行。版主看看是怎么回事~
环境: ...

天嵌的裸机SD卡读写程序是针对标准SD卡的,你的卡是SDHC,不好使的,我原来用的时候就是有问题,甚至连卡都识别不出来。换了程序后,才行。还有,你注意一下,rSDIDAT这个寄存器的地址宏定义是错的(至少我给我的错误的,害我足足找了两天的问题,你比对一下S3C2440的文档和2440addr.h)。你的问题,很可能出在你的卡是SDHC,要么是rSDIDAT的错误。

无人地铁 发表于 2012-4-25 01:02:58

connortao 发表于 2012-4-14 00:27 static/image/common/back.gif
天嵌的裸机SD卡读写程序是针对标准SD卡的,你的卡是SDHC,不好使的,我原来用的时候就是有问题,甚至连卡 ...

童鞋,你的热心是我的动力!感谢热心无私朋友的回复,SD卡我这儿已经没有问题!做完毕业设计后我会把我的经验全部奉献出来!很多的答案在无数大爱的楼主博主的主题上得到解决或是通过一些提示自己解决了!这让我知道了什么叫无私,不仅仅是只是讲课的时候讲出来,还要写出来放在网上!希望仁兄也能和我一道把经验奉献出去,让今后的学子学嵌入式无难题!
   毕业设计主要程序已经设计出来了,准备搞硬件~再次感谢~

connortao 发表于 2012-4-25 08:39:29

无人地铁 发表于 2012-4-25 01:02 static/image/common/back.gif
童鞋,你的热心是我的动力!感谢热心无私朋友的回复,SD卡我这儿已经没有问题!做完毕业设计后我会把我的 ...

不用客气,互相鼓励吧

cyclovesjtu 发表于 2012-5-1 09:39:52

楼主能贡献下你的关于SD卡的程序吗?或者能告诉你是怎么实现的吗?你存到sd卡里面的是什么格式的数据?

无人地铁 发表于 2012-5-3 23:06:48

cyclovesjtu 发表于 2012-5-1 09:39 static/image/common/back.gif
楼主能贡献下你的关于SD卡的程序吗?或者能告诉你是怎么实现的吗?你存到sd卡里面的是什么格式的数据?

就要交毕设了,所以时间比较急,一定会说的~只是问题比较多,所以过后我会总结给大家~:)

cyclovesjtu 发表于 2012-5-5 20:51:00

无人地铁 发表于 2012-5-3 23:06 static/image/common/back.gif
就要交毕设了,所以时间比较急,一定会说的~只是问题比较多,所以过后我会总结给大家~

呵呵,没问题
页: [1] 2
查看完整版本: 是否可以把OV9650读到的数据直接通过DMA存到SD卡中?