اطلاعیه

Collapse
No announcement yet.

سرعت کم در ssd1963

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    سرعت کم در ssd1963

    درود
    من با stm32f103 با سرعت 73 مگ ال سی دی 4.3 اینج راه اندازی کردم
    مشکل این هست که چرا سرعت انقدر پایینه
    مثلا برای پاک کردم صفحه 1 تا 1.5 ثانیه طول میکشه
    باید چیکار کنم که توی مثلا 50 میلی ثانیه یه عکس نمایش بده ؟؟؟


    کد:
    
    
    کد:
    [LEFT]void LCD_Init(void)
    {
        SSD_RESET;
            //LCD_Configuration();lcd_write_command
        #define  LCD_WriteCom              LCD_WR_REG
        #define  LCD_WriteRAM           LCD_WR_DATA
        #define  SSD1963_WriteCommand   LCD_WriteCom
        #define  SSD1963_WriteData      LCD_WriteRAM
        #define  TimeDelay(x)                Delay_10ms(x/2)
         
        
        /*ssd1963?????*/
        LCD_WriteCom(0x00E2);    
        LCD_WriteRAM(0x0023);
        // Set PLL with OSC = 10MHz (hardware)
        // Multiplier N = 35, VCO (>250MHz)= OSC*(N+1), VCO = 360MHz       
        LCD_WriteRAM(0x0001);
        // Divider M = 2, PLL = 360/(M+1) = 120MHz
        LCD_WriteRAM(0x0004);
        // Validate M and N values
        
            SSD1963_WriteCommand(SSD1963_SET_PLL_MN);
        SSD1963_WriteData(0x1D);    // PLLclk = REFclk * 30 (300MHz)
     
         SSD1963_WriteData(0x02);    // SYSclk = PLLclk / 3  (100MHz)
        SSD1963_WriteData(0x54);  // dummy
        
        TimeDelay(1);
        LCD_WriteCom(0x00E0);  // PLL enable
        LCD_WriteRAM(0x0001);
        TimeDelay(1);
        LCD_WriteCom(0x00E0);
        LCD_WriteRAM(0x0003);
        TimeDelay(1);
        LCD_WriteCom(0x0001);              // software reset
        TimeDelay(1);
        LCD_WriteCom(0x00E6);
        LCD_WriteRAM(0x0004);
        LCD_WriteRAM(0x0093);
        LCD_WriteRAM(0x00e0);
    
    
        LCD_WriteCom(0x00B0);            //LCD SPECIFICATION
        LCD_WriteRAM(0x0000);
        LCD_WriteRAM(0x0000);
        LCD_WriteRAM((HDP>>8)&0X00FF);  //Set HDP
        LCD_WriteRAM(HDP&0X00FF);
        LCD_WriteRAM((VDP>>8)&0X00FF);  //Set VDP
        LCD_WriteRAM(VDP&0X00FF);
        LCD_WriteRAM(0x0000);
        TimeDelay(1);
    
    
        LCD_WriteCom(0x00B4);            //HSYNC
        LCD_WriteRAM((HT>>8)&0X00FF);  //Set HT
        LCD_WriteRAM(HT&0X00FF);
        LCD_WriteRAM((HPS>>8)&0X00FF);  //Set HPS
        LCD_WriteRAM(HPS&0X00FF);
        LCD_WriteRAM(HPW);               //Set HPW
        LCD_WriteRAM((LPS>>8)&0X00FF);  //Set HPS
        LCD_WriteRAM(LPS&0X00FF);
        LCD_WriteRAM(0x0000);
        TimeDelay(1);
    
    
        LCD_WriteCom(0x00B6);            //VSYNC
        LCD_WriteRAM((VT>>8)&0X00FF);   //Set VT
        LCD_WriteRAM(VT&0X00FF);
        LCD_WriteRAM((VPS>>8)&0X00FF);  //Set VPS
        LCD_WriteRAM(VPS&0X00FF);
        LCD_WriteRAM(VPW);               //Set VPW
        LCD_WriteRAM((FPS>>8)&0X00FF);  //Set FPS
        LCD_WriteRAM(FPS&0X00FF);
        TimeDelay(1);
    
    
        LCD_WriteCom(0x00BA);
        LCD_WriteRAM(0x0005);//0x000F);    //GPIO[3:0] out 1
        TimeDelay(1);
    
    
        LCD_WriteCom(0x00B8);
        LCD_WriteRAM(0x0007);    //GPIO3=input, GPIO[2:0]=output
        LCD_WriteRAM(0x0001);    //GPIO0 normal
        TimeDelay(1);
    
    
        LCD_WriteCom(0x0036); //rotation
        LCD_WriteRAM(0x0008);
        TimeDelay(1);
    
    
        LCD_WriteCom(0x00F0); //pixel data interface
        LCD_WriteRAM(0x0003);
        TimeDelay(1);
    
    
    
    
        TimeDelay(1);
        LCD_WriteCom(0x0029); //display on
        TimeDelay(1);
    
    
        LCD_WriteCom(0x00BE); //set PWM for B/L
        LCD_WriteRAM(0x0006);
        LCD_WriteRAM(0x0080);
        TimeDelay(1);
        
        LCD_WriteRAM(0x0001);
        LCD_WriteRAM(0x00f0);
        LCD_WriteRAM(0x0000);
        LCD_WriteRAM(0x0000);
        TimeDelay(1);
    
    
        LCD_WriteCom(0x00d0);//?????????? 
        LCD_WriteRAM(0x000d);
        TimeDelay(1);[/LEFT]
        //LCD_Clear(BLACK);
    }


    #2
    پاسخ : سرعت کم در ssd1963

    سلام.می تونید تنظیمات کامپایلر طوری تنظیم کنید که میکرو سرعتش بیشتر میشه در واقع کامپایلر طوری برنامه رو کامپایل می کنه که سرعت اجرا دستورات بیشتر میشه فیلم آموزشی شو می تونید اینجا دانلود کنید

    http://uupload.ir/view/k91_افزایش_سر...ترولر.mp4
    جدیدترین ویرایش توسط MM320; ۱۲:۱۳ ۱۳۹۶/۰۳/۱۱.

    دیدگاه


      #3
      پاسخ : سرعت کم در ssd1963

      نوشته اصلی توسط sepehr63 نمایش پست ها
      درود
      من با stm32f103 با سرعت 73 مگ ال سی دی 4.3 اینج راه اندازی کردم
      مشکل این هست که چرا سرعت انقدر پایینه
      مثلا برای پاک کردم صفحه 1 تا 1.5 ثانیه طول میکشه
      باید چیکار کنم که توی مثلا 50 میلی ثانیه یه عکس نمایش بده ؟؟؟
      برا کنترل نمایشگر از fsmc استفاده کنین، اینجوری بجای حداقل 4 کلاک ماشین از 1 کلاک ماشین استفاده میشه. اون 3 کلاک رو از یکیش برا جلو بردن پوینتر ، یکیش برا چک رسیدن به انتها بافر عکس و یکی برای کپی از حافظه دیگه به محل رجیستر fsmc استفاده کنین.
      تنظیمات کامپایلر تاثیر چندانی روی سرعت این تسک نداره، بستگی به کد نویسی کار بر داره.
      اگه عکس قراره از میکرو sd خونده بشه بهتره کل عکس روی sdram خارجی یا قسمتیش در sram میکرو ذخیره بشه و برای خوندن هر یه بایت به حافظه خارجی رجوع نشه.

      دیدگاه


        #4
        پاسخ : سرعت کم در ssd1963

        نوشته اصلی توسط MM320 نمایش پست ها
        سلام.می تونید تنظیمات کامپایلر طوری تنظیم کنید که میکرو سرعتش بیشتر میشه در واقع کامپایلر طوری برنامه رو کامپایل می کنه که سرعت اجرا دستورات بیشتر میشه فیلم آموزشی شو می تونید اینجا دانلود کنید

        http://uupload.ir/view/k91_افزایش_سر...ترولر.mp4
        ممنون . این کارو کردم یکم تغییر داشت ولی یه مشکلی داره
        وقتی این گزینه هارو فعال میکنیم با هر بار کامپایل نرم افزار کل پروژه کامپایل میکنه . 2 دقیقه طول میکشه تا کامپایل کنه ؟؟؟

        دلیل: ادغام دو پست برای جلوگیری از اسپم

        نوشته اصلی توسط محمد پورخلیلی نمایش پست ها
        برا کنترل نمایشگر از fsmc استفاده کنین، اینجوری بجای حداقل 4 کلاک ماشین از 1 کلاک ماشین استفاده میشه. اون 3 کلاک رو از یکیش برا جلو بردن پوینتر ، یکیش برا چک رسیدن به انتها بافر عکس و یکی برای کپی از حافظه دیگه به محل رجیستر fsmc استفاده کنین.
        تنظیمات کامپایلر تاثیر چندانی روی سرعت این تسک نداره، بستگی به کد نویسی کار بر داره.
        اگه عکس قراره از میکرو sd خونده بشه بهتره کل عکس روی sdram خارجی یا قسمتیش در sram میکرو ذخیره بشه و برای خوندن هر یه بایت به حافظه خارجی رجوع نشه.
        ممنون که جواب دادی . من برای اینکه 50 تا آیکن دارم که نمیشه به صورت عکس کد کرد و داخل حافظه میکرو ریخت مجبور شدم آیکن هامو به صورت 32*32 تک رنگ در بیارم و توی خود میکرو آیکن بزرگ کنم که حجم کمتری بگیره . علت اصلی هم همینه که سرعت میکرو گرفته ؟؟؟
        اندازه آیکن هم میشه بزرگ و کوچیک کرد .


        const unsigned char ICON_DAFTAR[128]=
        {
        0x00,0x00,0x00,0x00, // 0004 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
        0x00,0x00,0x00,0x00, // 0008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
        0x00,0x00,0x00,0x00, // 000C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
        0x0F,0xFF,0xFF,0x00, // 0010 . . . . # # # # # # # # # # # # # # # # # # # # . . . . . . . .
        0x08,0x00,0x02,0x80, // 0014 . . . . # . . . . . . . . . . . . . . . . . # . # . . . . . . .
        0x08,0x00,0x02,0x40, // 0018 . . . . # . . . . . . . . . . . . . . . . . # . . # . . . . . .
        0x08,0x00,0x02,0x20, // 001C . . . . # . . . . . . . . . . . . . . . . . # . . . # . . . . .
        0x08,0x00,0x02,0x10, // 0020 . . . . # . . . . . . . . . . . . . . . . . # . . . . # . . . .
        0x08,0x00,0x03,0xF0, // 0024 . . . . # . . . . . . . . . . . . . . . . . # # # # # # . . . .
        0x08,0x7F,0xFE,0x10, // 0028 . . . . # . . . . # # # # # # # # # # # # # # . . . . # . . . .
        0x08,0x00,0x00,0x10, // 002C . . . . # . . . . . . . . . . . . . . . . . . . . . . # . . . .
        0x08,0x00,0x00,0x10, // 0030 . . . . # . . . . . . . . . . . . . . . . . . . . . . # . . . .
        0x08,0x7F,0xFE,0x10, // 0034 . . . . # . . . . # # # # # # # # # # # # # # . . . . # . . . .
        0x08,0x00,0x00,0x10, // 0038 . . . . # . . . . . . . . . . . . . . . . . . . . . . # . . . .
        0x08,0x00,0x00,0x10, // 003C . . . . # . . . . . . . . . . . . . . . . . . . . . . # . . . .
        0x08,0x7F,0xFE,0x10, // 0040 . . . . # . . . . # # # # # # # # # # # # # # . . . . # . . . .
        0x08,0x00,0x00,0x10, // 0044 . . . . # . . . . . . . . . . . . . . . . . . . . . . # . . . .
        0x08,0x00,0x00,0x10, // 0048 . . . . # . . . . . . . . . . . . . . . . . . . . . . # . . . .
        0x08,0x7F,0xFE,0x10, // 004C . . . . # . . . . # # # # # # # # # # # # # # . . . . # . . . .
        0x08,0x00,0x00,0x10, // 0050 . . . . # . . . . . . . . . . . . . . . . . . . . . . # . . . .
        0x08,0x00,0x00,0x10, // 0054 . . . . # . . . . . . . . . . . . . . . . . . . . . . # . . . .
        0x08,0x7F,0xFE,0x10, // 0058 . . . . # . . . . # # # # # # # # # # # # # # . . . . # . . . .
        0x08,0x00,0x00,0x10, // 005C . . . . # . . . . . . . . . . . . . . . . . . . . . . # . . . .
        0x08,0x00,0x00,0x10, // 0060 . . . . # . . . . . . . . . . . . . . . . . . . . . . # . . . .
        0x08,0x7F,0xFE,0x10, // 0064 . . . . # . . . . # # # # # # # # # # # # # # . . . . # . . . .
        0x08,0x00,0x00,0x10, // 0068 . . . . # . . . . . . . . . . . . . . . . . . . . . . # . . . .
        0x08,0x00,0x00,0x10, // 006C . . . . # . . . . . . . . . . . . . . . . . . . . . . # . . . .
        0x08,0x7F,0xFE,0x10, // 0070 . . . . # . . . . # # # # # # # # # # # # # # . . . . # . . . .
        0x08,0x00,0x00,0x10, // 0074 . . . . # . . . . . . . . . . . . . . . . . . . . . . # . . . .
        0x08,0x00,0x00,0x10, // 0078 . . . . # . . . . . . . . . . . . . . . . . . . . . . # . . . .
        0x0F,0xFF,0xFF,0xF0, // 007C . . . . # # # # # # # # # # # # # # # # # # # # # # # # . . . .
        0x00,0x00,0x00,0x00 // 0080 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
        };






        void LCD_WRITE_ICONE32(int Xi , int Yi , int COLOR,int BACKLIGHT,char SIZE ,const char *pic){


        int i,T=0;
        int i2;
        long x,y;
        char data;
        int s,c;


        y=Yi;
        for(i2=0 ; i2<128 ; i2+=4){
        data=pic[i2+3];
        x=Xi;
        for(i=0 ; i<32 ; i++){


        if(i==8)data=pic[i2+2];
        else if(i==16)data=pic[i2+1];
        else if(i==24)data=pic[i2];
        //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        if((data & 1)==0 ){
        for(c=0 ; c<SIZE; c++)
        {
        for(s=0 ; s<SIZE ; s++)lcd_write_pixel(x+s+i,y+c,BACKLIGHT);
        }
        }
        //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        else {
        for(c=0 ; c<SIZE; c++){
        for(s=0 ; s<SIZE ; s++)lcd_write_pixel(x+s+i,y+c,COLOR);
        }

        }
        data>>=1;
        x=(x+SIZE)-2;


        }
        y=y+(SIZE)-1;
        }

        }




        //++++++++++++++++++++++++++++++++++++++++++++++++++
        جدیدترین ویرایش توسط sepehr63; ۱۶:۱۸ ۱۳۹۶/۰۳/۱۵.

        دیدگاه


          #5
          پاسخ : سرعت کم در ssd1963

          دوست عزیز اگه از fsmc استفاده نمیکنی ،واسه سرعت بیشتر اولا برای نمایش عکس از تابع استفاده نکن مثل همین تابع lcd_write_icon که نوشتی. یعنی برای انتقال تصویر به ssd1963 توی خود برنامه اصلی دستورات رو بنویس، چون که فراخوانی تابع و برگشتن اون به خط بعد از تابع، چند سیکل طول میکشه که این خودش سرعت برنامه رو کاهش میده . از for های تو در تو(یعنی دو تا for داخل هم) هم مثل این تابعlcd_write_icon استفاده نکن که این خودش سرعت رو کاهش میده بجاش از یه while استفاده کن .
          جدیدترین ویرایش توسط metalelec; ۱۶:۵۲ ۱۳۹۶/۰۳/۱۵.

          دیدگاه

          لطفا صبر کنید...
          X