//BD中设置的3帧缓存地址
#define VIDEO_BASEADDR0 0x01000000
#define VIDEO_BASEADDR1 0x02000000
#define VIDEO_BASEADDR2 0x03000000
#define    AXI_LITE_PL        0x43C00000

#define H_ACTIVE    1280   //行宽、水平方向字节数
#define V_ACTIVE    1024   //行数、垂直方向行数
#define H_STRIDE    1280   //跨度(帧延迟),每一行的偏移

#define    START        0x00000001


int main()
{
    Xil_DCacheDisable();

    //把0x108B写到VDMA_BASEADDR + 0x030地址
    /*****************写数据到DDR进行配置设置(S2MM)**********************/
    Xil_Out32((VDMA_BASEADDR + 0x030), 0x108B);                // enable circular mode
    Xil_Out32((VDMA_BASEADDR + 0x0AC), VIDEO_BASEADDR0);    // start address,存入第一帧开始地址
    Xil_Out32((VDMA_BASEADDR + 0x0B0), VIDEO_BASEADDR1);    // start address
    Xil_Out32((VDMA_BASEADDR + 0x0B4), VIDEO_BASEADDR2);    // start address  每次递增四个字节

    Xil_Out32((VDMA_BASEADDR + 0x0A8), (H_STRIDE*1));        // h offset 1280 bytes(*1)表示数据是一个字节,即每个像素的位宽/8
    Xil_Out32((VDMA_BASEADDR + 0x0A4), (H_ACTIVE*1));        // h size 1280 bytes
    Xil_Out32((VDMA_BASEADDR + 0x0A0),  V_ACTIVE);            // v size 1024
    /*****************从DDR中读数据设置(MM2S)**********************/
    Xil_Out32((VDMA_BASEADDR + 0x000), 0x8B);                 // enable circular mode
    Xil_Out32((VDMA_BASEADDR + 0x05c), VIDEO_BASEADDR0);     // start address
    Xil_Out32((VDMA_BASEADDR + 0x060), VIDEO_BASEADDR1);     // start address
    Xil_Out32((VDMA_BASEADDR + 0x064), VIDEO_BASEADDR2);     // start address  同样每次递增四个字节

    Xil_Out32((VDMA_BASEADDR + 0x058), (H_STRIDE*1));         // h offset 1280 bytes,代表stream每发送(H_STRIDE*1)byte数据后,就产生一个tlast;
    Xil_Out32((VDMA_BASEADDR + 0x054), (H_ACTIVE*1));         // h size 1280 bytes,代表只要vdma从内存取够(H_ACTIVE*1)byte,就会开始stream传输;
    Xil_Out32((VDMA_BASEADDR + 0x050), V_ACTIVE);             // v size 1024


    Xil_Out32((AXI_LITE_PL + 0x0000),START);                //使能图像输出模块
    /*在A8、A4、58、54 这四个寄存器配置有效传输宽度,后面的 “*3” 表示一个像素数据有3个字节,也就是RGB888(24bit),如果是RGBA(32bit),则应该设置为 “*4”
    0x30寄存器(VDMA Control Register,简称 VDMACR)进行配置,0x108B转化成二进制:1000010001011,只看低四位就是1011,对应四个配置
    3    GenlockEn             默认0                                 0:关闭Genlock或动态Genlock同步;1:开启Genlock或动态Genlock同步
    2    Reset                         默认0                                 0:正常操作;1:复位MM2S通道
    1    Circular_Park  默认1                                 0:停留模式;1:循环模式
    0    RS                     默认  0                                 0:VDMA停止;1:VDMA运行;开始前必须置1

    0x00寄存器也是同样