您好!
我在使用具有 DVSDK 1.11和 CodeComposerStudio 3.3.83.3.20的 Spectrum Digital TMS320DM6437 EVM 板接收来自摄像机(或摄像机仿真器)的信号时遇到问题。
程序(还是 VPFE 驱动程序? 还是电路板?) 不响应来自摄像机的 VSYNC、HSYNC 和 PCLK 信号。 您可以将其关闭、程序仍将继续接收数据。 但是、由于对该信号没有响应、像素会丢失或重复、行会移位、帧会损坏。
在 PSP_VPFECcdcRawParams 结构中、HDVDMaster 字段具有一个 PSP_VPFE_syncdir_Input 值、即必须从摄像头接收信号。 但对他们没有反应(正如我之前所说的,他们可以被关闭)。
摄像机上设置了一个图像,由交替的白色和黑色条纹组成。 这就是我从电路板上得到的结果(显示了一部分图像):
FVID_CREATE、FVID_LOADBuffer、FVID_queue 和 FVID_EXCHANGE 函数返回成功的值。
为了使程序响应 HSYNC、VSYNC 和 PCLK 信号、我应该怎么做? 更改配置文件中的内容? 还是更改任何寄存器?
以下是程序源代码(DVSDK 中稍微修改的 rawcapture 示例):
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
外部内部 DDR2;
/
宏定义
/#define
VPSS_DBG PSP_DEBUG
#define NO_NO_TO_BUFFERS (2U)
静态 FVID_Frame * CcdcallocFB[NO_OF _BUFFER]={NULL、NULL};
静态 FVID_Frame * FBAddr = NULL;
GIO_Handle CcdcHandle;
// UXGA - 1600x1200
#define FRAME_WIDTH 1600
#define FRAME_HEIGHT 1200
//原始10位
静态 PSP_VPFCSDC_PFCADCRAME =
{
\f429 = RAW VID PADCCDCASTRAW = RAW = RAW = RAW ADCCVID、PADCCDCCADC //数据流
FVID_FIELD_MODE、 // ffMode
frame_height、 //高度
帧宽, //宽度
(frame_width * 2)、 //间距
0、 // horzStartPix
0、 // vertStartPix
NULL, // appCallback
{
NULL、 // extVD Fxn
NULL、
NULL、
}、
0、 // segId
{
PSP_VPFE_BITS10、 // dataSize
PSP_VPFE_PACK8_16bits_pixel、//封装8
PSP_VPFE_DataPol_Normal、 // dataPol
PSP_VPFE_SyncPol_Positive、 // VDSyncPol
PSP_VPFE_SyncPol_Positive、 // HDSyncPol
PSP_VPFE_syncdir_Input、 // HDVDMaster
50、 // HDSyncWidth
4、 // VDSyncWidth
800、 // numPxlPerLine
1000、 // numLinPerfld
PSP_VPFE_ALLAY_DISABLE、 // ALawEnable
PSP_VPFE_ALLAG_BIers15_6、 // ALaw_Width
}
};
静态 void VPSS_main()
{
PSP_VPFEChannelParams feinitParams;
Gio_Attrs gioAttrs = GIO_ATTRS;
uint32 i = 0;
int 结果;
file* fFile;
VPSS_DBG ("VPSS:原始捕捉环回应用已启动\r\n);
/**
*创建 CCDC 通道
**/
feinitParams.id = PSP_VPFE_CCDC;
feinitParams.params =(PSP_VPFECcdcConfigParams*)&ccdcParams;
CcdcHandle = FVID_CREATE ("/VPFE0"、IOM_INOUT、NULL、&feinitParams、&gioAttrs);
if (NULL == CcdcHandle)
{
VPSS_DBG (“VPSS :CCDC 创建…… 失败\r\n);
VPSS_DBG ("VPSS :End of VPSS Loopback Application\r\n");
返回;
}
其他
{
for (i=0;i "vpss="" :ccdc="" queuing.......failed="" \r\n");="" }="" result="FVID_allocBuffer(CcdcHandle," &fbaddr);="" **="" *="" loopback="" test="" with="" default="" parameters="" while="" (1)="" if="" (result="=" iom_completed)="" ffile="fopen" ("test.bin",="" "wb");="" fwrite(fbaddr-="">frame.frameBufferPtr、1、frame_width*frame_height*2、fFile);
fclose(fFile);
}
}
/**
*可用内存缓冲区
**/
for (i=0;i "vpss:="" raw="" capture="" loopback="" application="" ended="" \r\n");="" void="" start_vpss_test()="" vpss_main();="" }