Loading...
海思软件配置的LVDS同步码和直接查看寄存器中的同步码不一样
qn1563361544  发布于 07/27 12:56
浏览 63
FPGA通过LVDS接口发送数据过来,海思侧需要设置同步码,按照手册设置同步码,如下:
[code]combo_dev_attr_t LVDS_4lane_CHN0_12BIT_NOWDR_ATTR =
{
    .devno                  = 0,                 
    .input_mode             = INPUT_MODE_LVDS,
    .data_rate              = MIPI_DATA_RATE_X2,   // 1 pixel per clock/2 pixel per clock
    .img_rect               = {0, 0, 608, 600},   
    {
        .lvds_attr          =
        {
            .input_data_type        = DATA_TYPE_RAW_8BIT,
            .wdr_mode               = HI_WDR_MODE_NONE,
            .sync_mode              = LVDS_SYNC_MODE_SOF,
            .vsync_attr             = {LVDS_VSYNC_NORMAL, 0, 0},
            .fid_attr               = {LVDS_FID_NONE, HI_TRUE},
            .data_endian            = LVDS_ENDIAN_LITTLE,
            .sync_code_endian       = LVDS_ENDIAN_LITTLE,
            .lane_id                = {0, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},
            .sync_code              =
            {
                 /* each vc has 4 params, sync_code:
                     sync_mode is SYNC_MODE_SOF: SOF, EOF, SOL, EOL
                     sync_mode is SYNC_MODE_SAV: invalid sav, invalid eav, valid sav, valid eav  */
                {   
                    {0xAB, 0xB6, 0x80, 0x9D},
                    {0xAB, 0xB6, 0x80, 0x9D},
                    {0xAB, 0xB6, 0x80, 0x9D},
                    {0xAB, 0xB6, 0x80, 0x9D}
                },

               {   
                    {0xAB, 0xB6, 0x80, 0x9D},
                    {0xAB, 0xB6, 0x80, 0x9D},
                    {0xAB, 0xB6, 0x80, 0x9D},
                    {0xAB, 0xB6, 0x80, 0x9D}
                },

                {   
                    {0xAB, 0xB6, 0x80, 0x9D},
                    {0xAB, 0xB6, 0x80, 0x9D},
                    {0xAB, 0xB6, 0x80, 0x9D},
                    {0xAB, 0xB6, 0x80, 0x9D}
                },
                {   
                    {0xAB, 0xB6, 0x80, 0x9D},
                    {0xAB, 0xB6, 0x80, 0x9D},
                    {0xAB, 0xB6, 0x80, 0x9D},
                    {0xAB, 0xB6, 0x80, 0x9D}
                }
            }
        }
    }
};[/code]
在海思的文档《Hi3559A╱C V100 ultra-HD Mobile Camera SoC 用户指南》查看MIPI Rx的寄存器中有下面的描述
附件:

我用himd.l 工具去查看相应地址的时候打印信息如下:
查看 LVDS 同步码寄存器设置:
~ # himd.l 0x11A40030 1
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/cmdshell.c:168}cmdstr:himd.l
====dump memory 0x11A40030====
0000:  00ab00ab 000ab0ab 00ab00ab 00ab00ab
[END]

发现Lane 0、1、2、3的同步码都有错误,我试着改变软件层次的配置,例如改为:
[code]  .sync_code              =
            {
                 /* each vc has 4 params, sync_code:
                   sync_mode is SYNC_MODE_SOF: SOF, EOF, SOL, EOL
                   sync_mode is SYNC_MODE_SAV: invalid sav, invalid eav, valid sav, valid eav  */
                {
                    {0x02, 0x03, 0x00, 0x01}, //PHY0_lane0
                    {0x22, 0x23, 0x20, 0x21},
                    {0x12, 0x13, 0x10, 0x11},
                    {0x32, 0x33, 0x30, 0x31}
                },

                {
                    {0x02, 0x03, 0x00, 0x01}, //PHY0_lane1
                    {0x22, 0x23, 0x20, 0x21},
                    {0x12, 0x13, 0x10, 0x11},
                    {0x32, 0x33, 0x30, 0x31}
                },

                {
                    {0x02, 0x03, 0x00, 0x01}, //PHY0_lane2
                    {0x22, 0x23, 0x20, 0x21},
                    {0x12, 0x13, 0x10, 0x11},
                    {0x32, 0x33, 0x30, 0x31}
                },

                {
                    {0x02, 0x03, 0x00, 0x01}, //PHY0_lane3
                    {0x22, 0x23, 0x20, 0x21},
                    {0x12, 0x13, 0x10, 0x11},
                    {0x32, 0x33, 0x30, 0x31}
                }

            }[/code]
然后查看lane0、1、2、3的寄存器内容如下:
~ # himd.l 0x11A40030 1
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/cmdshell.c:168}cmdstr:himd.l
====dump memory 0x11A40030====
0000:  00020002 00020002 00020002 00020002
[END]

发现软件配置的同步码并没有设置到对应的寄存器中,似乎只将对应的第一个字节设置进去,不是很清楚为什么会这样?有人遇到过类似的问题吗》请教一下,十分感谢!
收藏0
2个回答
qn1563361544  回答于 07/28 11:15
[quote][url=forum.php?mod=redirect&goto=findpost&pid=161171&ptid=80990]qn1563361544 发表于 2020-7-28 10:57[/url]
软件配置的同步码和在寄存器中查看的是一致的,这个问题已解决,但是检测到帧同步信号之后的数据还是没有, ...[/quote]

海思文档上面介绍LVDS同步码和数据传输有以下两种模式:
附件:
附件:
这两种传输模式是海思硬件可以实现区分,来选择是哪一种模式,还是需要在海思侧软件来进行配置,但我在手册上没有找到相关的介绍,有人能帮忙解答一下吗?
谢谢!
0
qn1563361544  回答于 07/28 10:57
软件配置的同步码和在寄存器中查看的是一致的,这个问题已解决,但是检测到帧同步信号之后的数据还是没有,查看/proc/umap/vi 发现是有中断过来的,但是  IntCnt 和 LostFrame几乎是一样的,请问有人知道这是为什么吗?
0
内容存在敏感词
添加附件:文件小于20M 文件格式必须为doc,docx,xls,xlsx,pdf,ppt,pptx,txt,zip,rar,tar,7z
上传
文件格式必须为doc,docx,xls,xlsx,pdf,ppt,pptx,txt,zip,rar,tar,7z
确定要删除此文章、专栏、评论吗?
确定
取消

关注公众号