ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.






جهت تبلیغ در وب سایت ECA کلیک کنید.

کاربران برچسب زده شده

صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 12
  1. #1
    2007/08/26
    14
    0

    برد STM32F7 تصویر رو خراب نشون میده

    با سلام
    من این بورد STM32F746 DISCOVERY رو گرفتم . می خوام عکس روی ال سی دی آن نشان بدم ولی عکسو نشون نمی ده و به هم ریزه . داخل برنامه هم هیچ اروری نمیده.
    لطفا میشه راهنمایی کنید؟؟؟
  2. #2
    2012/12/30
    بوشهر
    3,206
    1,107

    پاسخ : stm32f7

    نقل قول نوشته اصلی توسط sara_soniya68

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    با سلام
    من این بورد STM32F746 DISCOVERY رو گرفتم . می خوام عکس روی ال سی دی آن نشان بدم ولی عکسو نشون نمی ده و به هم ریزه . داخل برنامه هم هیچ اروری نمیده.
    لطفا میشه راهنمایی کنید؟؟؟
    نه، اینجوری نمیشه کمک کرد. خییییییلییییی اطلاعات کم دادید. شما باید برنامه تون رو بذارید و بگید که دقیقا چیکار کردید. دوستانی که اطلاع دارند بهتون میگن که مشکل از کجا بوده. همچنین پیشنهاد میکنم یه تاپیک جداگانه بزنید.
  3. #3
    2007/08/26
    14
    0

    پاسخ : stm32f7

    من از مثال های خود بورد که در سایت دیسکاوری گذاشته استفاده می کنم ، می خوام عکسی که خودش گذاشته رو با یه عکس دیگه جایگزین کنم ، ولی وقتی فایل هگز عکس جدید و میزارم ، به هم میریزه و فقط خطهای آبی که دارای اعوجاج زیادی هست نشون میده.

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

    از مثال های خود بورد که در سایت st ; که برای بورد دیسکاوری گذاشته استفاده می کنم ،
  4. #4
    2012/12/30
    بوشهر
    3,206
    1,107

    پاسخ : stm32f7

    نقل قول نوشته اصلی توسط sara_soniya68

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    من از مثال های خود بورد که در سایت دیسکاوری گذاشته استفاده می کنم ، می خوام عکسی که خودش گذاشته رو با یه عکس دیگه جایگزین کنم ، ولی وقتی فایل هگز عکس جدید و میزارم ، به هم میریزه و فقط خطهای آبی که دارای اعوجاج زیادی هست نشون میده.
    نقل قول نوشته اصلی توسط sara_soniya68

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    از مثال های خود بورد که در سایت st ; که برای بورد دیسکاوری گذاشته استفاده می کنم ،


    اگه اینجوریه پس به احتمال زیاد تصویراتون رو خراب تبدیل میکنید؟ مد RGB تصویر شما چیه؟ 888؟ یا 565؟ یا...
    اگه نمی دونید یه تیکه از HEX تصویر اصلی(همونی که مال برد هستش و شما ایجادش نکردید) و یه تیکه هم از تصویری که ایجاد کردید بذارید تا ببینیم.

  5. #5
    2007/08/26
    14
    0

    پاسخ : برد STM32F7 تصویر رو خراب نشون میده

    0x42,0x4d,0xd6,0x23,0x00,0x00,0x00,0x00,0x00,0x00, 0x36,0x00,0x00,0x00,0x28,0x00,

    این یک خط از گز تصویر اصلی


    0x00,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x0F,
    اینم یک خط از هگز تصویری که من تبدیل کردم.
    ممنون
  6. #6
    2012/12/30
    بوشهر
    3,206
    1,107

    پاسخ : برد STM32F7 تصویر رو خراب نشون میده

    من با بررسی هایی که انجام دادم ظاهرا مد کاریش ARGB هستش. اولی واسه آلفا هستش و اون سه تا هم RGB-888 . شما یه تابع واسه پاک کردن نمایشگر ندارید؟ اگه اونو بذارید شاید بشه نظر داد.
  7. #7
    2007/08/26
    14
    0

    پاسخ : برد STM32F7 تصویر رو خراب نشون میده

    void BSP_LCD_Clear(uint32_t Color)
    {
    /* Clear the LCD */
    LL_FillBuffer(ActiveLayer, (uint32_t *)(hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress), BSP_LCD_GetXSize(), BSP_LCD_GetYSize(), 0, Color);
    }
  8. #8
    2012/12/30
    بوشهر
    3,206
    1,107

    پاسخ : برد STM32F7 تصویر رو خراب نشون میده

    نقل قول نوشته اصلی توسط sara_soniya68

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    void BSP_LCD_Clear(uint32_t Color)
    {
    /* Clear the LCD */
    LL_FillBuffer(ActiveLayer, (uint32_t *)(hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress), BSP_LCD_GetXSize(), BSP_LCD_GetYSize(), 0, Color);
    }
    بسیار عالی!
    الان شما از این تابع استفاده کردید؟ چه مقداری بهش دادید؟ اگه بخوایید مثلا نمایشگر کاملا یه رنگ بشه چیکار میکنید؟ مثلا کل نمایشگر سبز یا قرمز یا آبی بشه چیکار میکنید؟
    اگه دقت کنید این تابع از یه تابع دیگه تشکیل شده که رم نمایشگر رو با یه رنگ پر میکنه.شما الان باید تابع LL_FillBuffer رو یه نگاهی بندازی. آرگومان آخریش که بخش Color رو دادی باید ببینی توی تابع کجاهاش و چطوری ازش استفاده شده.
  9. #9
    2007/08/26
    14
    0

    پاسخ : برد STM32F7 تصویر رو خراب نشون میده

    کد PHP:
    static void LL_FillBuffer(uint32_t LayerIndexvoid *pDstuint32_t xSizeuint32_t ySizeuint32_t OffLineuint32_t ColorIndex
    {
      
    /* Register to memory mode with ARGB8888 as color Mode */ 
      
    hDma2dHandler.Init.Mode         DMA2D_R2M;
      if(
    hLtdcHandler.LayerCfg[ActiveLayer].PixelFormat == LTDC_PIXEL_FORMAT_RGB565)
      { 
    /* RGB565 format */ 
        
    hDma2dHandler.Init.ColorMode    DMA2D_RGB565;
      }
      else
      { 
    /* ARGB8888 format */
        
    hDma2dHandler.Init.ColorMode    DMA2D_ARGB8888;
      }
      
    hDma2dHandler.Init.OutputOffset OffLine;      
      
      
    hDma2dHandler.Instance DMA2D;
      
      
    /* DMA2D Initialization */
      
    if(HAL_DMA2D_Init(&hDma2dHandler) == HAL_OK
      {
        if(
    HAL_DMA2D_ConfigLayer(&hDma2dHandlerLayerIndex) == HAL_OK
        {
          if (
    HAL_DMA2D_Start(&hDma2dHandlerColorIndex, (uint32_t)pDstxSizeySize) == HAL_OK)
          {
            
    /* Polling For DMA transfer */  
            
    HAL_DMA2D_PollForTransfer(&hDma2dHandler10);
          }
        }
      } 
    }
    HAL_StatusTypeDef HAL_DMA2D_Init(DMA2D_HandleTypeDef *hdma2d)

      
    /* Check the DMA2D peripheral state */
      
    if(hdma2d == NULL)
      {
         return 
    HAL_ERROR;
      }


      
    /* Check the parameters */
      
    assert_param(IS_DMA2D_ALL_INSTANCE(hdma2d->Instance));
      
    assert_param(IS_DMA2D_MODE(hdma2d->Init.Mode));
      
    assert_param(IS_DMA2D_CMODE(hdma2d->Init.ColorMode));
      
    assert_param(IS_DMA2D_OFFSET(hdma2d->Init.OutputOffset));


      if(
    hdma2d->State == HAL_DMA2D_STATE_RESET)
      {
        
    /* Allocate lock resource and initialize it */
        
    hdma2d->Lock HAL_UNLOCKED;
        
    /* Init the low level hardware */
        
    HAL_DMA2D_MspInit(hdma2d);
      }
    HAL_StatusTypeDef HAL_DMA2D_ConfigLayer(DMA2D_HandleTypeDef *hdma2duint32_t LayerIdx)

      
    DMA2D_LayerCfgTypeDef *pLayerCfg = &hdma2d->LayerCfg[LayerIdx];
      
      
    uint32_t regMask 0regValue 0;


      
    /* Check the parameters */
      
    assert_param(IS_DMA2D_LAYER(LayerIdx));  
      
    assert_param(IS_DMA2D_OFFSET(pLayerCfg->InputOffset));  
      if(
    hdma2d->Init.Mode != DMA2D_R2M)
      {  
        
    assert_param(IS_DMA2D_INPUT_COLOR_MODE(pLayerCfg->InputColorMode));
        if(
    hdma2d->Init.Mode != DMA2D_M2M)
        {
          
    assert_param(IS_DMA2D_ALPHA_MODE(pLayerCfg->AlphaMode));
        }
      }
    HAL_StatusTypeDef HAL_DMA2D_Start(DMA2D_HandleTypeDef *hdma2duint32_t pdatauint32_t DstAddressuint32_t Width,  uint32_t Height)
    {
      
    /* Check the parameters */
      
    assert_param(IS_DMA2D_LINE(Height));
      
    assert_param(IS_DMA2D_PIXEL(Width));
      
      
    /* Process locked */
      
    __HAL_LOCK(hdma2d);


      
    /* Change DMA2D peripheral state */
      
    hdma2d->State HAL_DMA2D_STATE_BUSY;
      
      
    /* Configure the source, destination address and the data size */
      
    DMA2D_SetConfig(hdma2dpdataDstAddressWidthHeight);


      
    /* Enable the Peripheral */
      
    __HAL_DMA2D_ENABLE(hdma2d);


      return 
    HAL_OK;
    }
    HAL_StatusTypeDef HAL_DMA2D_CLUTLoading_Resume(DMA2D_HandleTypeDef *hdma2duint32_t LayerIdx)
    {
      
    /* Check the SUSP and START bits for background or foreground CLUT loading */
      
    if(LayerIdx == 0)
      {  
        
    /* Background CLUT loading suspension check */
        
    if (((hdma2d->Instance->CR DMA2D_CR_SUSP) == DMA2D_CR_SUSP)
          && ((
    hdma2d->Instance->BGPFCCR DMA2D_BGPFCCR_START) == DMA2D_BGPFCCR_START))
        {
          
    /* Ongoing CLUT loading is suspended: change the DMA2D state before resuming */
          
    hdma2d->State HAL_DMA2D_STATE_BUSY;
        }
      }
      else
      {
        
    /* Foreground CLUT loading suspension check */
        
    if (((hdma2d->Instance->CR DMA2D_CR_SUSP) == DMA2D_CR_SUSP)
          && ((
    hdma2d->Instance->FGPFCCR DMA2D_FGPFCCR_START) == DMA2D_FGPFCCR_START))
        {
          
    /* Ongoing CLUT loading is suspended: change the DMA2D state before resuming */
          
    hdma2d->State HAL_DMA2D_STATE_BUSY;
        }  
      }


      
    /* Resume the CLUT loading */
      
    CLEAR_BIT(hdma2d->Instance->CRDMA2D_CR_SUSP);  


      return 
    HAL_OK;
    }




    /**


      * @brief  Polling for transfer complete or CLUT loading.
      * @param  hdma2d: Pointer to a DMA2D_HandleTypeDef structure that contains
      *                 the configuration information for the DMA2D. 
      * @param  Timeout: Timeout duration
      * @retval HAL status
      */
    HAL_StatusTypeDef HAL_DMA2D_PollForTransfer(DMA2D_HandleTypeDef *hdma2duint32_t Timeout)
    {
      
    uint32_t tickstart 0;
      
    __IO uint32_t isrflags 0x0;  


      
    /* Polling for DMA2D transfer */
      
    if((hdma2d->Instance->CR DMA2D_CR_START) != RESET)
      {
       
    /* Get tick */
       
    tickstart HAL_GetTick();


        while(
    __HAL_DMA2D_GET_FLAG(hdma2dDMA2D_FLAG_TC) == RESET)
        {
          
    isrflags READ_REG(hdma2d->Instance->ISR); 
          if ((
    isrflags & (DMA2D_FLAG_CE|DMA2D_FLAG_TE)) != RESET)
          {
            if ((
    isrflags DMA2D_FLAG_CE) != RESET)
            {
              
    hdma2d->ErrorCode |= HAL_DMA2D_ERROR_CE;        
            }
            if ((
    isrflags DMA2D_FLAG_TE) != RESET)        
            {
              
    hdma2d->ErrorCode |= HAL_DMA2D_ERROR_TE;        
            }
            
    /* Clear the transfer and configuration error flags */
            
    __HAL_DMA2D_CLEAR_FLAG(hdma2dDMA2D_FLAG_CE DMA2D_FLAG_TE);


            
    /* Change DMA2D state */
            
    hdma2d->State HAL_DMA2D_STATE_ERROR;


            
    /* Process unlocked */
            
    __HAL_UNLOCK(hdma2d);
            
            return 
    HAL_ERROR;
          }
          
    /* Check for the Timeout */
          
    if(Timeout != HAL_MAX_DELAY)
          {
            if((
    Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout))
            {
              
    /* Update error code */
              
    hdma2d->ErrorCode |= HAL_DMA2D_ERROR_TIMEOUT;


              
    /* Change the DMA2D state */
              
    hdma2d->State HAL_DMA2D_STATE_TIMEOUT;
             
              
    /* Process unlocked */
              
    __HAL_UNLOCK(hdma2d);
               
              return 
    HAL_TIMEOUT;
            }
          }        
        }
      }
      
    /* Polling for CLUT loading (foreground or background) */
      
    if (((hdma2d->Instance->FGPFCCR DMA2D_FGPFCCR_START) != RESET)  || 
          ((
    hdma2d->Instance->BGPFCCR DMA2D_BGPFCCR_START) != RESET))
      {
        
    /* Get tick */
        
    tickstart HAL_GetTick();
       
        while(
    __HAL_DMA2D_GET_FLAG(hdma2dDMA2D_FLAG_CTC) == RESET)
        {
          
    isrflags READ_REG(hdma2d->Instance->ISR);   
          if ((
    isrflags & (DMA2D_FLAG_CAE|DMA2D_FLAG_CE|DMA2D_FLAG_TE)) != RESET)        
          {      
            if ((
    isrflags DMA2D_FLAG_CAE) != RESET)
            {
              
    hdma2d->ErrorCode |= HAL_DMA2D_ERROR_CAE;        
            }   
            if ((
    isrflags DMA2D_FLAG_CE) != RESET)             
            {
              
    hdma2d->ErrorCode |= HAL_DMA2D_ERROR_CE;        
            }
            if ((
    isrflags DMA2D_FLAG_TE) != RESET)        
            {
              
    hdma2d->ErrorCode |= HAL_DMA2D_ERROR_TE;        
            }
            
    /* Clear the CLUT Access Error, Configuration Error and Transfer Error flags */
            
    __HAL_DMA2D_CLEAR_FLAG(hdma2dDMA2D_FLAG_CAE DMA2D_FLAG_CE DMA2D_FLAG_TE);
            
            
    /* Change DMA2D state */
            
    hdma2d->StateHAL_DMA2D_STATE_ERROR;
            
            
    /* Process unlocked */
            
    __HAL_UNLOCK(hdma2d);
              
            return 
    HAL_ERROR;      
          }      
          
    /* Check for the Timeout */
          
    if(Timeout != HAL_MAX_DELAY)
          {
            if((
    Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout))
            {
              
    /* Update error code */
              
    hdma2d->ErrorCode |= HAL_DMA2D_ERROR_TIMEOUT;
        
              
    /* Change the DMA2D state */
              
    hdma2d->StateHAL_DMA2D_STATE_TIMEOUT;
            
              
    /* Process unlocked */
              
    __HAL_UNLOCK(hdma2d);
                        
              return 
    HAL_TIMEOUT;
            }
          }      
        }
      }


      
    /* Clear the transfer complete and CLUT loading flags */
      
    __HAL_DMA2D_CLEAR_FLAG(hdma2dDMA2D_FLAG_TC|DMA2D_FLAG_CTC);
      
      
    /* Change DMA2D state */
      
    hdma2d->State HAL_DMA2D_STATE_READY;
      
      
    /* Process unlocked */
      
    __HAL_UNLOCK(hdma2d);
      
      return 
    HAL_OK
    ویرایش توسط روح الامین : 2016/08/08 در ساعت 07:48
  10. #10
    2012/12/30
    بوشهر
    3,206
    1,107

    پاسخ : برد STM32F7 تصویر رو خراب نشون میده

    دقیقا همون اول تابع یه بررسی کرده. این قسمت منظورم هستش:
    /* Register to memory mode with ARGB8888 as color Mode */
    hDma2dHandler.Init.Mode = DMA2D_R2M;
    if(
    hLtdcHandler.LayerCfg[ActiveLayer].PixelFormat == LTDC_PIXEL_FORMAT_RGB565)
    {
    /* RGB565 format */
    hDma2dHandler.Init.ColorMode = DMA2D_RGB565;
    }
    else
    {
    /* ARGB8888 format */
    hDma2dHandler.Init.ColorMode = DMA2D_ARGB8888;
    }


    خب پس همه چیز روشن شد. البته اولش شما باید بگید فایل HEX تون رو با چی درست کردید. تنظیماتش رو هم بگید. شما دو راه حل دارید.
    1- فکر میکنم تنظیم دیفالت روی ARGB8888 هستش. اگه اینجور باشه شما می تونید به یه برنامه فایل تصویر مورد نظرتون رو به ARGB8888 تبدیل کنید و استفاده کنید. اگه هم دیفالت روی DMA2D_ARGB8888 نبود، فکر میکنم شما می تونید به hLtdcHandler.LayerCfg[ActiveLayer].PixelFormat مقدار DMA2D_ARGB8888 بدید تا مدش بره روی ARGB8888 و بتونید ازش استفاده کنید.
    2- شما می تونید تصویرتون رو با مد RGB565 تولید کنید و به hLtdcHandler.LayerCfg[ActiveLayer].PixelFormat مقدار DMA2D_RGB565 بدید تا مدش بره روی RGB565 و بتونید ازش استفاده کنید.

    خلاص
صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 12

موضوعات مشابه

  1. چرا کیپد رو یکبار می زنم،چندبار عدد نشون میده
    توسط alikiller990 در انجمن میکروکنترلرهای AVR
    پاسخ: 7
    آخرين نوشته: 2015/06/03, 10:44
  2. eeprom خراب که میشه چه عکس العملی نشون میده؟
    توسط arvinfx در انجمن مدار هاي ديجيتال
    پاسخ: 3
    آخرين نوشته: 2013/12/31, 15:20
  3. فاز متر هایی که از روی دیوار برق نشون میده
    توسط mhp_1375 در انجمن مدارهای آنالوگ و مدارهای مجتمع
    پاسخ: 13
    آخرين نوشته: 2013/08/12, 11:58
  4. کمک ال سی دی مربع نشون میده
    توسط starmoml در انجمن میکروکنترلرهای PIC
    پاسخ: 3
    آخرين نوشته: 2013/05/25, 11:33
  5. Adc عدد ثابت نشون میده
    توسط درود در انجمن میکروکنترلرهای AVR
    پاسخ: 10
    آخرين نوشته: 2009/09/05, 08:41

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •