DSP

合众达DM642程序注释

2019-07-13 19:09发布

  1. /********************************************************************/  
  2. /*                        灰度图 
  3. 运行结果:在屏幕之中画出一块区域显示灰度图像                                    */  
  4. /********************************************************************/  
  5. /* 关于csl: 
  6. 1,用于配置、控制和管理DSP片上外设  
  7. 2,已为C6000和C5000系列DSP设计了各自的CSL库  
  8. 3,CSL库函数大多数是用C语言编写的,并已对代码的大小和速度进行了优化  
  9. 4,CSL库是可裁剪的:即只有被使用的CSL模块才会包含进应用程序中  
  10. 5,CSL库是可扩展的:每个片上外设的API相互独立,增加新的API,对其他片上外设没有影响  */  
  11. #include                  /* 总库,提供外设接口和基本配置 */  
  12. // 具体的接口定义,头文件中定义了接口的地址等  
  13. #include            /* emifa是一种64位的外部接口,可连接64/32/16/8bit的器件 */  
  14. #include            /* 一种两线式串行总线 */  
  15. #include           /* 也是一种通用的输入输出接口 */  
  16. #include            /* 一些基本中断的定义 */  
  17. #include   
  18. #include   
  19. #include "iic.h"  
  20. #include "vportcap.h"  
  21. #include "vportdis.h"  
  22. #include "sa7121h.h"             /* SAA7121可以将数字信号编程模拟信号和下面的编码芯片一样都采用iic总线 */  
  23. #include "TVP51xx.h"             /* 视频编码芯片,将模拟信号进行数字化,这是其进行配置的头文件 */  
  24. /*SEEDDM642的emifa的设置结构*/  
  25. EMIFA_Config Seeddm642ConfigA ={  
  26.        0x00052078,/*gblctl EMIFA(B)global control register value */  
  27.                   /*将CLK6、4、1使能;将MRMODE置1;使能EK2EN,EK2RATE*/  
  28.        0xffffffd3,/*cectl0 CE0 space control register value*/  
  29.                   /*将CE0空间设为SDRAM*/  
  30.        0x73a28e01,/*cectl1 CE1 space control register value*/  
  31.                   /*Read hold: 1 clock; 
  32.                     MTYPE : 0000,选择8位的异步接口 
  33.                     Read strobe :001110;14个clock宽度 
  34.                     TA:2 clock; Read setup 2 clock; 
  35.                     Write hold :2 clock; Write strobe: 14 clock 
  36.                     Write setup :7 clock 
  37.                     --                   --------------- 
  38.                       /      14c        /1c 
  39.                        /----------------/ */  
  40.        0x22a28a22, /*cectl2 CE2 space control register value*/  
  41.        0x22a28a42, /*cectl3 CE3 space control register value*/  
  42.        0x57115000, /*sdctl SDRAM control register value*/  
  43.        0x0000081b, /*sdtim SDRAM timing register value*/  
  44.        0x001faf4d, /*sdext SDRAM extension register value*/  
  45.        0x00000002, /*cesec0 CE0 space secondary control register value*/  
  46.        0x00000002, /*cesec1 CE1 space secondary control register value*/  
  47.        0x00000002, /*cesec2 CE2 space secondary control register value*/  
  48.        0x00000073 /*cesec3 CE3 space secondary control register value*/   
  49. };  
  50. /*SEEDDM642的IIC的设置结构*/  
  51. I2C_Config SEEDDM642IIC_Config = {  
  52.     0,  /* master mode,  i2coar;采用主模式   */  
  53.     0,  /* no interrupt, i2cimr;只写,不读,采用无中断方式*/  
  54.     (20-5), /* scl low time, i2cclkl;  */  
  55.     (20-5), /* scl high time,i2cclkh;  */  
  56.     1,  /* configure later, i2ccnt;*/  
  57.     0,  /* configure later, i2csar;*/  
  58.     0x4ea0, /* master tx mode,     */  
  59.             /* i2c runs free,      */  
  60.             /* 8-bit data + NACK   */  
  61.             /* no repeat mode      */  
  62.     (75-1), /* 4MHz clock, i2cpsc  */  
  63. };  
  64. CHIP_Config SEEDDM642percfg = {  
  65.     CHIP_VP2+/  
  66.     CHIP_VP1+/  
  67.     CHIP_VP0+/  
  68.     CHIP_I2C  
  69. };  
  70. I2C_Handle hSeeddm642i2c;  
  71. int portNumber;  
  72. extern SA7121H_ConfParams sa7121hPAL[45];  
  73. extern SA7121H_ConfParams sa7121hNTSC[45];  
  74. Uint8 vFromat = 0;  
  75. Uint8 misc_ctrl = 0x6D;  
  76. Uint8 output_format = 0x47;  
  77. // 地址为0 for cvbs port1,选择复合信号做为输入  
  78. Uint8 input_sel = 0x00;  
  79. /*地址为0xf,将Pin27设置成为CAPEN功能*/      
  80. Uint8 pin_cfg = 0x02;  
  81. /*地址为1B*/  
  82. Uint8 chro_ctrl_2 = 0x14;  
  83. /*图像句柄的声明*/  
  84. VP_Handle vpHchannel0;  
  85. VP_Handle vpHchannel1;  
  86. VP_Handle vpHchannel2;  
  87. /*确定图像的参数*/  
  88. int numPixels = 720;//每行720个像素  
  89. int numLines  = 576;//每帧576行(PAL)  
  90.   
  91. /*确定处理的范围*/  
  92. /*A             */  
  93. /*              */  
  94. /*             D*/   
  95. int intAPixels = 190;  
  96. int intALines = 59;  
  97. int intDPixels = 530;  
  98. int intDLines = 229;   
  99. /******************************/  
  100. /*****画矩形边框函数的声明*****/  
  101. void drawRectangle();  
  102. /*消去彩 {MOD}*/  
  103. void removeColor();  
  104. /*采集与显示缓冲区的首址*/  
  105. Uint32 capYbuffer  = 0x80000000;