Zdf
Zdf
驱动牛犊
驱动牛犊
  • 注册日期2002-04-27
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1933回复:8

在BT878使用中如何准确知道BT878已完成一帧的捕获?

楼主#
更多 发布于:2002-04-27 10:43
我的RISC是从头走到未尾,然后JUMP。
166F3000 : 80008004
166F3004 : 00000000
166F3008 : 80008006
166F300C : 00000000
166F3010 : 80008004
166F3014 : 00000000
166F3018 : 80008006
166F301C : 00000000
166F3020 : 1C000300
166F3024 : 1672A600
:
:
166F3918 : 1C000300
166F391C : 166F4900
166F3920 : 70000000
166F3924 : 166F3010
Sunbeam
驱动小牛
驱动小牛
  • 注册日期2001-10-29
  • 最后登录2010-01-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-08 15:33
你察看过你中断状态寄存器吗?我写过RISC代码老是报错:OCERR,RISC_EN置不起来。

你想准确知道的一帧已捕获的话,可以设置相应的中断位,通过中断来处理。否则只能大致估计。 :(
堂堂正正做人,明明白白做事
Zdf
Zdf
驱动牛犊
驱动牛犊
  • 注册日期2002-04-27
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-09 15:50
我的RISC_EN可以置起来
中断状态寄存器也正常,只是偶尔出现FBUS错误!
你的OCERR是不是RISC少了同步指令。
如果使用中断的话,要如何做呢?
Sunbeam
驱动小牛
驱动小牛
  • 注册日期2001-10-29
  • 最后登录2010-01-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-14 10:04
打开中断屏蔽位,同时驱动程序里设置相应的中断例程
堂堂正正做人,明明白白做事
Snake
驱动牛犊
驱动牛犊
  • 注册日期2001-10-16
  • 最后登录2008-09-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-22 11:48
    可以通过设置指令的STATUS,及IRQ位,产生中断判断一下DMA
指令运行的大概位置。
    不知你们的RISC是如何写的。
    我用的是该站提供的例程中封装好的类完成的。
mCmd.Create(pDevExt->pRISCProgram,SYNC,NULL,NULL,0,0,0,0);  
mCmd.SetSync(pDevExt->pRISCProgram,SC_FM1,1);  
mCmd.ResetStatus(pDevExt->pRISCProgram,0x0F);
for(J=0;J<36;J++)
   {
     for(I=0;I<8;I++)
     {
      adwAdd[0]=pPhVideoBuff[I].LowPart;
      awByteCnt[0]=PixelNumberofLine*4;
    mCmd.Create(pDevExt->pRISCProgram+J*8*2+(I+1)*2,
                 WRIT,awByteCnt,adwAdd,0,1,1,1);
      }
    }
  mCmd.Create(pDevExt->pRISCProgram+578,
               SYNC,NULL,NULL,0,0,0,0);  
  mCmd.SetSync(pDevExt->pRISCProgram+578,SC_VRE,1);  
  mCmd.SetStatus(pDevExt->pRISCProgram+578,0xA);
  
  //jump
  adwAdd[0]=pPhRiscAdd.LowPart;
  mCmd.Create(pDevExt->pRISCProgram+580,
              JUMP,NULL,adwAdd,0,0,0,1);


基本流程是: SYNC FM1
             WRIT
              .
              .
              .
             WRIT
             SYNC VRE
             JUMP

这样,在中断处理里读 0x100就可以断。
      1。判断11位,为1是DMA指令产生的中断。
      2。看31:28的值,为0是WRIT产生的,为A是SYNC产生的。

   这端程序可以运行但是经常产生FBUS中断。两位有解决的烦
告诉我一声。
Snake
驱动牛犊
驱动牛犊
  • 注册日期2001-10-16
  • 最后登录2008-09-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-24 09:38
   但FBUS对图像采集好像没有什么影响。
Sunbeam
驱动小牛
驱动小牛
  • 注册日期2001-10-29
  • 最后登录2010-01-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-08-07 13:54
FBUS报错说不清楚(可能是你传的数据太长,或者是你是按BYTE使能一来传的)。我是自己写的RISC程序,FBUS没有报错。现在音、视频也都通了。还有一个小问题:将PCM的采样16位转8位时,音频播放速度正常,但音质好次。。。。
堂堂正正做人,明明白白做事
sipu
驱动牛犊
驱动牛犊
  • 注册日期2002-05-13
  • 最后登录2005-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-08-13 08:37
To Sunbean:

你好,请问你如何设置bt878的音频采样率?在进行音频采样时,能够与视频同步吗?

谢谢。


Sunbeam
驱动小牛
驱动小牛
  • 注册日期2001-10-29
  • 最后登录2010-01-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-08-15 17:05
1、这和你硬件设计有关系。我是通过CS5331a来做音频信号采集的。此芯片的采样频率是一定的:44KHz,18BIT。所以我必须用软件来进行音频格式转换。出现的音频问题也搞定,16BIT有符号位,8BIT没有。
2、一般来说同步的问题与硬件和底层驱动无关,最可能与上层压缩有关
堂堂正正做人,明明白白做事
游客

返回顶部