اطلاعیه

Collapse
No announcement yet.

مشکل در سرعت نوشتن روی SD CARD توسط LPC17XX

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

    مشکل در سرعت نوشتن روی SD CARD توسط LPC17XX

    با سلام
    من برد آموزشی LPC1768 سایت ECA رو خریداری کردم،و با مثال که توسط سایت انجام شده شروع به نوشتن برنامه جهت راه اندازی SD CARD کردم و بعد از نوشتن برنامه و پروگرام کردن میکرو متوجه شدم عملیات نوشتن روی SD CARD خیلی زیاد طول طول کشید در صورتی با میکرو کنترلر AVR این زمان خیلی کمتر بود !!!!
    در ضمن فرکانس میکرو روی 100MHZ هستش. :sad:
    اینم برنامه LPC1768:

    [code=c]
    #include <RTL.h> /* RTL kernel functions & defines */
    #include <stdio.h> /* standard I/O .h-file */
    #include <ctype.h> /* character functions */
    #include <string.h> /* string and memory functions */
    #include <LPC17xx.H> /* LPC17xx definitions */
    #include "lpc17xx_gpio.h"

    FILE *f;
    int i;
    int main (void) {
    GPIO_SetDir(2,0xff,1);

    finit(NULL);


    f=fopen("test2.text","w"
    GPIO_SetValue(2,0x01);
    for(i=0;i<76800;i++){
    fputs("#############################\r\n&quot ;,f);
    fputs("########milad ashtari########\r\n",f);
    fputs("######LPC17XX CORTEX M3######\r\n",f);
    fputs("#############################\r\n&quot ;,f);
    fputs("#############################\r\n&quot ;,f);
    }
    fclose(f);

    GPIO_SetValue(2,0xff);

    while(1)
    {
    }
    }
    [/code]











    #2
    پاسخ : مشکل در سرعت نوشتن روی SD CARD توسط LPC17XX

    کلاک spi را بالاتر ببرید ببینید فرق می کنه
    فيلم آموزشي ميکروکنترلر LPC1768
    فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
    فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

    دیدگاه


      #3
      پاسخ : مشکل در سرعت نوشتن روی SD CARD توسط LPC17XX

      با سلام به دوستان
      این کار را انجام دادم ولی تغییری ایجاد نشد اگر میشه یک پروژه برام بزارید
      با تشکر فراوان از تمامی دوستان.

      اضافه شده در تاریخ :
      با سلام
      واقعا خخنده داره!!!!! من همین بر نامه برای avr نوشتم ومتوجه شدم که avr وقت در 0.34 ثانیه این کارو برام انجام داد درصورتی lpc1768 با فرکانس 100 مگاهرتز در مدت زمان 9.13 دقیقه ، بله درست خوندید 9.13 دقیقه انجام داد .فایل spi_17xx.h تغییراتی انجام دادم ولی مشکل حل نشد
      اینم کتابخانه spi_lpc17xx.h که تغییرات روش انجام دادم:
      [code=c]
      /*----------------------------------------------------------------------------
      * RL-ARM - FlashFS
      *----------------------------------------------------------------------------
      * Name: SPI_LPC17xx.C
      * Purpose: Serial Peripheral Interface Driver for LPC17xx
      * Rev.: V4.05
      *----------------------------------------------------------------------------
      * This code is part of the RealView Run-Time Library.
      * Copyright (c) 2004-2009 KEIL - An ARM Company. All rights reserved.
      *---------------------------------------------------------------------------*/

      #include <LPC17xx.H> /* LPC17xx definitions */
      #include <File_Config.h>


      /* SSPxSR - bit definitions. */
      #define TFE 0x01
      #define TNF 0x02
      #define RNE 0x04
      #define RFF 0x08
      #define BSY 0x10

      /*----------------------------------------------------------------------------
      * SPI Driver Functions
      *----------------------------------------------------------------------------
      * Required functions for SPI driver module:
      * - void spi_init ()
      * - void spi_ss (U32 ss)
      * - U8 spi_send (U8 outb)
      * - void spi_hi_speed (BOOL on)
      *---------------------------------------------------------------------------*/

      /*--------------------------- spi_init --------------------------------------*/

      void spi_init (void) {
      /* Initialize and enable the SSP Interface module. */

      LPC_SC->PCONP |= (1 << 21); /* Enable power to SSPI0 block */

      /* SSEL is GPIO, output set to high. */
      LPC_GPIO1->FIODIR |= (1<<21); /* P1.21 is output */
      LPC_GPIO1->FIOPIN |= (1<<21); /* set P1.21 high (SSEL inact.)*/
      LPC_PINCON->PINSEL3 &= ~(0<<10); /* P1.21 SSEL (used as GPIO) */

      /* P3.26 is SD Card Power Supply Enable Pin */
      LPC_GPIO3->FIODIR |= (1<<26); /* P3.26 is output */
      LPC_GPIO3->FIOPIN &= ~(1<<26); /* set P3.26 low(enable power) */

      /* SCK, MISO, MOSI are SSP pins. */
      LPC_PINCON->PINSEL3 &= ~(3UL<<8); /* P1.20 cleared */
      LPC_PINCON->PINSEL3 |= (3UL<<8); /* P1.20 SCK0 */
      LPC_PINCON->PINSEL3 &= ~((3<<14) | (3<<16)); /* P1.23, P1.24 cleared */
      LPC_PINCON->PINSEL3 |= ((3<<14) | (3<<16)); /* P1.23 MISO0, P1.24 MOSI0 */

      LPC_SC->PCLKSEL1 &= ~(3<<10); /* PCLKSP0 = CCLK/4 ( 25MHz) */
      LPC_SC->PCLKSEL1 |= (1<<10); /* PCLKSP0 = CCLK (100MHz) */

      LPC_SSP0->CPSR =10; /* 100MHz / 250 = 400kBit */
      /* maximum of 18MHz is possible*/
      LPC_SSP0->CR0 = 0x0007; /* 8Bit, CPOL=0, CPHA=0 */
      LPC_SSP0->CR1 = 0x0002; /* SSP0 enable, master */
      }


      /*--------------------------- spi_hi_speed ----------------------------------*/

      void spi_hi_speed (BOOL on) {
      /* Set a SPI clock speed to desired value. */

      if (on == __TRUE) {
      /* Max. 12 MBit used for Data Transfer. */
      LPC_SSP0->CPSR = 10; /* 100MHz / 10 = 10MBit */
      }
      else {
      /* Max. 400 kBit used in Card Initialization. */
      LPC_SSP0->CPSR =10; /* 100MHz / 250 = 400kBit */
      }
      }


      /*--------------------------- spi_ss ----------------------------------------*/

      void spi_ss (U32 ss) {
      /* Enable/Disable SPI Chip Select (drive it high or low). */

      if (ss) {
      LPC_GPIO1->FIOPIN |= (1<<21); /* SSEL is GPIO, set to high. */
      }
      else {
      LPC_GPIO1->FIOPIN &= ~(1<<21); /* SSEL is GPIO, set to high. */
      }
      }


      /*--------------------------- spi_send --------------------------------------*/

      U8 spi_send (U8 outb) {
      /* Write and Read a byte on SPI interface. */

      LPC_SSP0->DR = outb;
      while (LPC_SSP0->SR & BSY); /* Wait for transfer to finish */
      return (LPC_SSP0->DR); /* Return received value */
      }


      /*----------------------------------------------------------------------------
      * end of file
      *---------------------------------------------------------------------------*/
      [/code]

      دیدگاه


        #4
        پاسخ : مشکل در سرعت نوشتن روی SD CARD توسط LPC17XX

        دوستان لصفا کمک کنید :sad:

        دیدگاه


          #5
          پاسخ : مشکل در سرعت نوشتن روی SD CARD توسط LPC17XX

          من به همچین مشکلی نخوردم دوست عزیز
          مشکل از 1768 نیس!
          من یه دیتابیس 500خطی دارم و علاوه بر خوندن، باید داخل رشته جسنجو و مقایسه هم انجام بشه و در کمتر از یک ثانیه این کار انجام میشه!

          «پشتکار» «پشتکار» «پشتکار»

          دیدگاه


            #6
            پاسخ : مشکل در سرعت نوشتن روی SD CARD توسط LPC17XX

            الان برد دم دستم نیست این مورد نوشتن تست کنم
            ولی می دونم زمان خوندن اصلا این قدر نیست. زیرا یک عکس را در کمتر از دو ثانیه از SD کارت روی TFT LCD 7 اینچ میشه نشون داد
            شما sd کارتتو عوض کن شاید فرجی شد!
            فيلم آموزشي ميکروکنترلر LPC1768
            فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
            فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
            فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

            دیدگاه


              #7
              پاسخ : مشکل در سرعت نوشتن روی SD CARD توسط LPC17XX

              با سلام
              مشکلم حل شد
              اشکال از کتابخانه راه انداز mmc بود چونکه کتابخانه اش قدیمی بود برنامه درست کار نمی کرد کتابخانه جدید استفاده کردم مشکل حل شد. :wow:

              دیدگاه


                #8
                پاسخ : مشکل در سرعت نوشتن روی SD CARD توسط LPC17XX

                U32 retv;
                MMCFG SDCardCfg;
                spi_hi_speed(__TRUE);
                while ((retv = finit ()) != 0);
                mmc_read_config (&SDCardCfg);

                دیدگاه

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