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





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









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









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





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

صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 11
  1. #1
    2010/04/07
    تهران
    855
    88

    سرعت پایین خواندن sd card و پخش تصاویر

    سلام
    چند وقتی است که با میکروی stm32f407gt6 دارم کار می کنم و با کمک واحد FSMC آی سی SSD1963 را راه اندازی کردم و از SD CARD توسط SDIO در مود 4 بیت عکس ها را می خوانم و پخش می کنم
    اما با توجه به اطلاعات و کار های مشابه فهمیدم که سرعت خواندن کمی پایین است البته فکر می کنم به خاطر ملاحظات زیادی که در کتابخانه ff.c شده
    من تجربه زیادی ندارم و کل پروژه و تنظیمات اولیه رو با STMCUBE راه اندازی کردم
    در پروژه مشابهی از سایت خود st با میکروی 72 مگاهرتزی تونسته تصاویر با رزولوشن 320 در 240 پیکسل را با سرعت تقریبی 20 فریم بر ثانیه رفرش کنه
    من هم الان دارم تصاویری با همین ابعاد را پخش می کنم ولی سرعت رفرش من تقریبا 17 هرتز هست در صورتی که میکروی من 168 مگاهرتز کلاک داره به فایل

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

    عضویت


    نمی دونم نکته کجاست آیا واقعا توابع تو در توی کتابخانه CHAN باعث کم شدن سرعت شده یا چیز دیگه ای

    این تصویری است که در سایت elm-chan وجود داره با میکرویی که sdio نداره به سرعت بالایی رسیده من برای خودم رو با اسکوپ محاسبه کردم در حدود 5334 کیلو بایت بود
  2. #2
    2015/08/27
    1,741
    993

    پاسخ : سرعت پایین خواندن sd card و پخش تصاویر

    لطفا یه کلیپ از پروژتون قرار بدید تا بررسی شه
    ضمنا کدی که نوشتید رو قرار بدید
  3. #3
    2010/04/07
    تهران
    855
    88

    پاسخ : سرعت پایین خواندن sd card و پخش تصاویر

    کد:
    [LEFT][INDENT]/* Includes ------------------------------------------------------------------*/
    #include "main.h"
    #include "stm32f4xx_hal.h"
    #include "fatfs.h"
    #include "lcd.c"
    /* USER CODE BEGIN Includes */
    unsigned long int i;
    /* USER CODE END Includes */
    
    /* Private variables ---------------------------------------------------------*/
    SD_HandleTypeDef hsd;
    
    SRAM_HandleTypeDef hsram1;
    
    /* USER CODE BEGIN PV */
    /* Private variables ---------------------------------------------------------*/
    FRESULT res;
    FATFS SDFatFs;
    FIL myfile;
    char buffwr[30]= "this is test programing\n\r";
    unsigned char buffrd[40960];
    char sdpath[4];
    uint32_t byteswritten,bytesread;
    unsigned int z,q;
    unsigned char *s=buffrd;
    char str[10]="0.bmp";
    /* USER CODE END PV */
    
    /* Private function prototypes -----------------------------------------------*/
    void SystemClock_Config(void);
    static void MX_GPIO_Init(void);
    static void MX_FSMC_Init(void);
    static void MX_SDIO_SD_Init(void);
    
    /* USER CODE BEGIN PFP */
    /* Private function prototypes -----------------------------------------------*/
    void error1(void);
    
    enum _bool{
        false = 0,
        true = 1
        };
    typedef enum _bool boolean;
        
    int main(void)
    {
    
      /* MCU Configuration----------------------------------------------------------*/
    
      /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
      HAL_Init();
    
    SystemClock_Config();
      MX_GPIO_Init();
      MX_FSMC_Init();
      MX_SDIO_SD_Init();
      MX_FATFS_Init();
        LCD_Init();
    
        BSP_SD_Init();
    res = f_mount(&SDFatFs, "",1);
        if (res != FR_OK)
        {
            error1();
        }
        
    q=1;
        sprintf(str,"%d.bmp",q);
        LCD_Clear(White);
        
      while (1)
      {
            res = f_open(&myfile,str,FA_OPEN_ALWAYS|FA_WRITE|FA_READ);
            if (res != FR_OK)
            {
                LCD_Clear(RED);
                error1();
            }
            //LCD_Clear(Green);
            res= f_read(&myfile,buffrd,70,&bytesread);
            if (res != FR_OK)
            {
                LCD_Clear(RED);
                error1();
            }
    /*320*240*//*************************************************/
        //LCD_WindowMax(160,120,480,360);
        f_read(&myfile,buffrd,15360,&bytesread);
        LCD_DrawPicture(160,120,479,144,s);
        f_read(&myfile,buffrd,15360,&bytesread);
        LCD_DrawPicture(160,144,479,168,s);
        f_read(&myfile,buffrd,15360,&bytesread);
        LCD_DrawPicture(160,168,479,192,s);
        f_read(&myfile,buffrd,15360,&bytesread);
        LCD_DrawPicture(160,192,479,216,s);
        f_read(&myfile,buffrd,15360,&bytesread);
        LCD_DrawPicture(160,216,479,240,s);
        
        f_read(&myfile,buffrd,15360,&bytesread);
        LCD_DrawPicture(160,240,479,264,s);
        f_read(&myfile,buffrd,15360,&bytesread);
        LCD_DrawPicture(160,264,479,288,s);
        f_read(&myfile,buffrd,15360,&bytesread);
        LCD_DrawPicture(160,288,479,312,s);
        f_read(&myfile,buffrd,15360,&bytesread);
        LCD_DrawPicture(160,312,479,336,s);
        f_read(&myfile,buffrd,15360,&bytesread);
        LCD_DrawPicture(160,336,479,360,s);
        
        f_close(&myfile);
        
        q++;
        if(q>1485) q=1;
        sprintf(str,"%d.bmp",q);
    
      }
    
    
    }
    
    /** System Clock Configuration
    */
    void SystemClock_Config(void)
    {
    
      RCC_OscInitTypeDef RCC_OscInitStruct;
      RCC_ClkInitTypeDef RCC_ClkInitStruct;
    
        /**Configure the main internal regulator output voltage 
        */
      __HAL_RCC_PWR_CLK_ENABLE();
    
      __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
    
        /**Initializes the CPU, AHB and APB busses clocks 
        */
      RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
      RCC_OscInitStruct.HSEState = RCC_HSE_ON;
      RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
      RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
      RCC_OscInitStruct.PLL.PLLM = 12;
      RCC_OscInitStruct.PLL.PLLN = 336;
      RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
      RCC_OscInitStruct.PLL.PLLQ = 7;
      if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
      {
        _Error_Handler(__FILE__, __LINE__);
      }
    
        /**Initializes the CPU, AHB and APB busses clocks 
        */
      RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                                  |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
      RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
      RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
      RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
      RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
    
      if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
      {
        _Error_Handler(__FILE__, __LINE__);
      }
    
        /**Configure the Systick interrupt time 
        */
      HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
    
        /**Configure the Systick 
        */
      HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
    
      /* SysTick_IRQn interrupt configuration */
      HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
    }
    
    /* SDIO init function */
    static void MX_SDIO_SD_Init(void)
    {
    
      hsd.Instance = SDIO;
      hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;
      hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;
      hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;
      hsd.Init.BusWide = SDIO_BUS_WIDE_1B;
      hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;
      hsd.Init.ClockDiv = 0;
    
    }
    
    /** Configure pins as 
            * Analog 
            * Input 
            * Output
            * EVENT_OUT
            * EXTI
    */
    static void MX_GPIO_Init(void)
    {
    
      GPIO_InitTypeDef GPIO_InitStruct;
    
      /* GPIO Ports Clock Enable */
      __HAL_RCC_GPIOH_CLK_ENABLE();
      __HAL_RCC_GPIOA_CLK_ENABLE();
      __HAL_RCC_GPIOE_CLK_ENABLE();
      __HAL_RCC_GPIOD_CLK_ENABLE();
      __HAL_RCC_GPIOC_CLK_ENABLE();
    
      /*Configure GPIO pin Output Level */
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
    
      /*Configure GPIO pin : PA4 */
      GPIO_InitStruct.Pin = GPIO_PIN_4;
      GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
      GPIO_InitStruct.Pull = GPIO_PULLUP;
      GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
      HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    
    }
    
    /* FSMC initialization function */
    static void MX_FSMC_Init(void)
    {
      FSMC_NORSRAM_TimingTypeDef Timing;
    
      /** Perform the SRAM1 memory initialization sequence
      */
      hsram1.Instance = FSMC_NORSRAM_DEVICE;
      hsram1.Extended = FSMC_NORSRAM_EXTENDED_DEVICE;
      /* hsram1.Init */
      hsram1.Init.NSBank = FSMC_NORSRAM_BANK1;
      hsram1.Init.DataAddressMux = FSMC_DATA_ADDRESS_MUX_DISABLE;
      hsram1.Init.MemoryType = FSMC_MEMORY_TYPE_SRAM;
      hsram1.Init.MemoryDataWidth = FSMC_NORSRAM_MEM_BUS_WIDTH_16;
      hsram1.Init.BurstAccessMode = FSMC_BURST_ACCESS_MODE_DISABLE;
      hsram1.Init.WaitSignalPolarity = FSMC_WAIT_SIGNAL_POLARITY_LOW;
      hsram1.Init.WrapMode = FSMC_WRAP_MODE_DISABLE;
      hsram1.Init.WaitSignalActive = FSMC_WAIT_TIMING_BEFORE_WS;
      hsram1.Init.WriteOperation = FSMC_WRITE_OPERATION_ENABLE;
      hsram1.Init.WaitSignal = FSMC_WAIT_SIGNAL_DISABLE;
      hsram1.Init.ExtendedMode = FSMC_EXTENDED_MODE_DISABLE;
      hsram1.Init.AsynchronousWait = FSMC_ASYNCHRONOUS_WAIT_DISABLE;
      hsram1.Init.WriteBurst = FSMC_WRITE_BURST_DISABLE;
      hsram1.Init.PageSize = FSMC_PAGE_SIZE_NONE;
      /* Timing */
      Timing.AddressSetupTime = 0x4;
      Timing.AddressHoldTime = 0;
      Timing.DataSetupTime = 0x04;
      Timing.BusTurnAroundDuration = 0xf;
      Timing.CLKDivision = 15;
      Timing.DataLatency = 17;
      Timing.AccessMode = FSMC_ACCESS_MODE_A;
      /* ExtTiming */
    
      if (HAL_SRAM_Init(&hsram1, &Timing, NULL) != HAL_OK)
      {
        _Error_Handler(__FILE__, __LINE__);
      }
    
    }
    
    /* USER CODE BEGIN 4 */
    void error1()
    {
        while(1);
    }
    /* USER CODE END 4 */
    
    /**
      * @brief  This function is executed in case of error occurrence.
      * @[URL="http://www.eca.ir/forums/member.php?u=17545"]para[/URL]m  None
      * @retval None
      */
    void _Error_Handler(char * file, int line)
    {
      /* USER CODE BEGIN Error_Handler_Debug */
      /* User can add his own implementation to report the HAL error return state */
      while(1) 
      {
      }
      /* USER CODE END Error_Handler_Debug */ 
    }
    
    #ifdef USE_FULL_ASSERT
    
    /**
       * @brief Reports the name of the source file and the source line number
       * where the assert_param error has occurred.
       * @[URL="http://www.eca.ir/forums/member.php?u=17545"]para[/URL]m file: pointer to the source file name
       * @[URL="http://www.eca.ir/forums/member.php?u=17545"]para[/URL]m line: assert_param error line source number
       * @retval None
       */
    void assert_failed(uint8_t* file, uint32_t line)
    {
      /* USER CODE BEGIN 6 */
      /* User can add his own implementation to report the file name and line number,
        ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
      /* USER CODE END 6 */
    
    }
    
    #endif
    
    /**
      * @}
      */ 
    
    /**
      * @}
    */ 
    
    /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
    [/INDENT]
    [/LEFT]
    
    
    ویرایش توسط اشکان غفارزاده : 2017/07/25 در ساعت 14:39
  4. #4
    2011/07/16
    شیراز
    140
    37

    پاسخ : سرعت پایین خواندن sd card و پخش تصاویر

    سلام، سرعت پایین ارتباط با sd معمولا به توابع سطح پایین که برای دسترسی به مموری نوشته شده برمیگرده. مورد دیگه هم که در کد شما دیدم اینه که تعداد بایت هایی که هربار میخونید 15360 تاست، اگر تعداد بایت هایی که میخونید توانی از 2 باشه سرعت بالاتر میره، چرا به اندازه طول بافری که در نظر گرفتید (40 کیلوبایت) نمیخونید؟
  5. #5
    2010/04/07
    تهران
    855
    88

    پاسخ : سرعت پایین خواندن sd card و پخش تصاویر

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

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

    عضویت

    سلام، سرعت پایین ارتباط با sd معمولا به توابع سطح پایین که برای دسترسی به مموری نوشته شده برمیگرده. مورد دیگه هم که در کد شما دیدم اینه که تعداد بایت هایی که هربار میخونید 15360 تاست، اگر تعداد بایت هایی که میخونید توانی از 2 باشه سرعت بالاتر میره، چرا به اندازه طول بافری که در نظر گرفتید (40 کیلوبایت) نمیخونید؟
    از توان 2 برای اینکه نسبتی پیدا نکردم که بتونم راحت نمایششون بدم 15360 بایت میشه 15 کیلو که چون تصاویر 16 بیتی است برابر با 320 در 24 پیکسل از نمایشگر میشه
    خب با این توابع سطح پایین که اشاره کردید باید چی کار کرد
    دیگه فکر می کنم elm-chan هر چه قدر می تونسته ساده کرده
    اگر توجه داشته باشید در عکسی که بالا گذاشتم
    با میکرویی که spi دارد به سرعت بیش تری رسیدن یعنی توابع مورد استفاده یکی است ولی نکته در کجاست معلوم نیست آیا توابع مربوط به sdio خیلی پیچیده است نمی دانم اگر قرار باشد sdio از spi
    ضعیف تر عمل کند با یک کتابخانه و تازه سرعت پردازنده بالاتر هم باشد دیگه نمی دانم باید چی بگم
  6. #6
    2011/07/16
    شیراز
    140
    37

    پاسخ : سرعت پایین خواندن sd card و پخش تصاویر

    توابع سطح پایین (Low Level) جزو کتابخانه fat نیست، اینا رو باید خودتون پیاده سازی کنید. که در مورد شما فک کنم نرم افزار cube mx براتون پیاده سازی میکنه، و احتمالا بهینه نیست. یه فایل توی پروژتون باید باشه احتمالا به اسم diskio.c اون رو باید بررسی کنید. و درنهایت سرعت sdio باید خیلی بیشتر از spi باشه.
  7. #7
    2010/04/07
    تهران
    855
    88

    پاسخ : سرعت پایین خواندن sd card و پخش تصاویر

    /*-----------------------------------------------------------------------*/
    /* Low level disk I/O module skeleton for FatFs (C)ChaN, 2014 */
    /* */
    /* Portions COPYRIGHT 2017 STMicroelectronics */
    /* Portions Copyright (C) 2014, ChaN, all right reserved */
    /*-----------------------------------------------------------------------*/
    /* If a working storage control module is available, it should be */
    /* attached to the FatFs via a glue function rather than modifying it. */
    /* This is an example of glue functions to attach various exsisting */
    /* storage control modules to the FatFs module with a defined API. */
    /*-----------------------------------------------------------------------*/

    /**
    ************************************************** ****************************
    * @file diskio.c
    * @

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

    عضویت

    r MCD Application Team
    * @version V1.4.1
    * @date 14-February-2017
    * @brief FatFs low level disk I/O module.
    ************************************************** ****************************
    * @attention
    *
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted, provided that the following conditions are met:
    *
    * 1. Redistribution of source code must retain the above copyright notice,
    * this list of conditions and the following disclaimer.
    * 2. Redistributions in binary form must reproduce the above copyright notice,
    * this list of conditions and the following disclaimer in the documentation
    * and/or other materials provided with the distribution.
    * 3. Neither the name of STMicroelectronics nor the names of other
    * contributors to this software may be used to endorse or promote products
    * derived from this software without specific written permission.
    * 4. This software, including modifications and/or derivative works of this
    * software, must execute solely and exclusively on microcontroller or
    * microprocessor devices manufactured by or for STMicroelectronics.
    * 5. Redistribution and use of this software other than as permitted under
    * this license is void and will automatically terminate your rights under
    * this license.
    *
    * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
    * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
    * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
    * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
    * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
    * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
    * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
    * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
    * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
    * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    ************************************************** ****************************
    */

    /* Includes ------------------------------------------------------------------*/
    #include "diskio.h"
    #include "ff_gen_drv.h"

    /* Private typedef -----------------------------------------------------------*/
    /* Private define ------------------------------------------------------------*/
    /* Private variables ---------------------------------------------------------*/
    extern Disk_drvTypeDef disk;

    /* Private function prototypes -----------------------------------------------*/
    /* Private functions ---------------------------------------------------------*/

    /**
    * @brief Gets Disk Status
    * @

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

    عضویت

    m pdrv: Physical drive number (0..)
    * @retval DSTATUS: Operation status
    */
    DSTATUS disk_status (
    BYTE pdrv /* Physical drive nmuber to identify the drive */
    )
    {
    DSTATUS stat;

    stat = disk.drv[pdrv]->disk_status(disk.lun[pdrv]);
    return stat;
    }

    /**
    * @brief Initializes a Drive
    * @

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

    عضویت

    m pdrv: Physical drive number (0..)
    * @retval DSTATUS: Operation status
    */
    DSTATUS disk_initialize (
    BYTE pdrv /* Physical drive nmuber to identify the drive */
    )
    {
    DSTATUS stat = RES_OK;

    if(disk.is_initialized[pdrv] == 0)
    {
    disk.is_initialized[pdrv] = 1;
    stat = disk.drv[pdrv]->disk_initialize(disk.lun[pdrv]);
    }
    return stat;
    }

    /**
    * @brief Reads Sector(s)
    * @

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

    عضویت

    m pdrv: Physical drive number (0..)
    * @

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

    عضویت

    m *buff: Data buffer to store read data
    * @

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

    عضویت

    m sector: Sector address (LBA)
    * @

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

    عضویت

    m count: Number of sectors to read (1..128)
    * @retval DRESULT: Operation result
    */
    DRESULT disk_read (
    BYTE pdrv, /* Physical drive nmuber to identify the drive */
    BYTE *buff, /* Data buffer to store read data */
    DWORD sector, /* Sector address in LBA */
    UINT count /* Number of sectors to read */
    )
    {
    DRESULT res;

    res = disk.drv[pdrv]->disk_read(disk.lun[pdrv], buff, sector, count);
    return res;
    }

    /**
    * @brief Writes Sector(s)
    * @

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

    عضویت

    m pdrv: Physical drive number (0..)
    * @

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

    عضویت

    m *buff: Data to be written
    * @

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

    عضویت

    m sector: Sector address (LBA)
    * @

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

    عضویت

    m count: Number of sectors to write (1..128)
    * @retval DRESULT: Operation result
    */
    #if _USE_WRITE == 1
    DRESULT disk_write (
    BYTE pdrv, /* Physical drive nmuber to identify the drive */
    const BYTE *buff, /* Data to be written */
    DWORD sector, /* Sector address in LBA */
    UINT count /* Number of sectors to write */
    )
    {
    DRESULT res;

    res = disk.drv[pdrv]->disk_write(disk.lun[pdrv], buff, sector, count);
    return res;
    }
    #endif /* _USE_WRITE == 1 */

    /**
    * @brief I/O control operation
    * @

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

    عضویت

    m pdrv: Physical drive number (0..)
    * @

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

    عضویت

    m cmd: Control code
    * @

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

    عضویت

    m *buff: Buffer to send/receive control data
    * @retval DRESULT: Operation result
    */
    #if _USE_IOCTL == 1
    DRESULT disk_ioctl (
    BYTE pdrv, /* Physical drive nmuber (0..) */
    BYTE cmd, /* Control code */
    void *buff /* Buffer to send/receive control data */
    )
    {
    DRESULT res;

    res = disk.drv[pdrv]->disk_ioctl(disk.lun[pdrv], cmd, buff);
    return res;
    }
    #endif /* _USE_IOCTL == 1 */

    /**
    * @brief Gets Time from RTC
    * @

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

    عضویت

    m None
    * @retval Time in DWORD
    */
    __weak DWORD get_fattime (void)
    {
    return 0;
    }

    /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
    این هم کتابخانه مورد نظر
    من که چیزی متوجه نشدم
  8. #8
    2014/01/25
    شهرکرد
    247
    266

    پاسخ : سرعت پایین خواندن sd card و پخش تصاویر

    من با میکرو F407 تست کردم اخرین سرعتی که با SDCARD معمولی رسیدم 6 مگ برای خوندن و 1 برای نوشتن روی دیسک بود.
    حجم بافر 64 کیلو بایت بود، تو مد SPI خیلی از پارامترها کنترلی رو چک نمیکنه برای همین سرعت بیشتره اما رابط SDIO مطمعن تره.
  9. #9
    2010/04/07
    تهران
    855
    88

    پاسخ : سرعت پایین خواندن sd card و پخش تصاویر

    نقل قول نوشته اصلی توسط محمد پورخلیلی

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

    عضویت

    من با میکرو F407 تست کردم اخرین سرعتی که با SDCARD معمولی رسیدم 6 مگ برای خوندن و 1 برای نوشتن روی دیسک بود.
    حجم بافر 64 کیلو بایت بود، تو مد SPI خیلی از پارامترها کنترلی رو چک نمیکنه برای همین سرعت بیشتره اما رابط SDIO مطمعن تره.
    شما با spi چک کردید ؟؟ !!!!
    اگر با spi به این سرعت رسیدید یعنی خیلی سرعتتون بیش تر از sdio هست
    کتابخانه ff رو از stmcube تنظیم کردید یا دستی وارد برنامه کردید ؟؟؟
  10. #10
    2010/04/07
    تهران
    855
    88

    پاسخ : سرعت پایین خواندن sd card و پخش تصاویر

    مشکل اصلی سرعت پخش رو پیدا کردم دستور sprintf که در برنامه استفاده کردم نزدیک به 16 میلی ثانیه طول می کشه برای اینکه عکس های بعدی رو فراخوانی کنم نامشون رو با دستور sprintf(str,"%d.bmp",q); به رشته تبدیل می کنم این دستور رو که برداشتم و در حلقه while تنها یک عکس پخش شد روی اسیلوسکوپ چک کردم نزدیک به 16 میلی ثانیه روند خواندن و پخش تصاویر بیش تر میشه امتحان کردم هر چه قدر شماره عکس مورد نظر بالاتر میره این دستور کند تر اجرا میشه و برای تبدیل به رشته زمان بیش تر طول می کشه که خب طبیعی است ولی به نظر میاد این زمان خیلی زمان زیادی باشه من الان 1400 عکس دارم پخش می کنم
    ویرایش توسط seyed saeed : 2017/08/26 در ساعت 13:38
صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 11

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

  1. خواندن تصاویر MRI در متلب
    توسط hooman در انجمن پردازش تصوير
    پاسخ: 6
    آخرين نوشته: 2019/03/06, 09:43
  2. همه ی اقداماتی که برای خواندن یک سکتور از sd card لازم داریم - چی هست ؟!
    توسط antipa در انجمن سایر مطالب مرتبط با ميکرو ها و پروسسورها
    پاسخ: 6
    آخرين نوشته: 2016/09/24, 20:12
  3. پایین بودن سرعت در میکرو
    توسط vahidabedi در انجمن میکروکنترلرهای AVR
    پاسخ: 9
    آخرين نوشته: 2015/09/17, 08:44
  4. پاسخ: 7
    آخرين نوشته: 2014/11/03, 17:51
  5. خواندن اطلاعات یک sd card
    توسط pilot zibaei در انجمن میکروکنترلرهای PIC
    پاسخ: 1
    آخرين نوشته: 2013/12/31, 17:27

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

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

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

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

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