اطلاعیه

Collapse
No announcement yet.

عدم نوشتن در فلش مموری

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

    عدم نوشتن در فلش مموری

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

    من برنامه رو ریختم رو میکرو بدون مشکل کامپایل شد. پایه 4.29 رو هم به زمین وصل می کنم. ولی اصلا رو کارت SD هیچی نمینویسه :cry:. میتونید راهنمایی کنید ؟
    کیل من هم ورژن 4.7 ه.

    اینم پروژه که پلودش کردم .

    http://uplod.ir/mdg516dae63n/Fat_Driver.rar.htm

    فقط اگه میتونید راهنمایی کنید.

    #2
    پاسخ : عدم نوشتن در فلش مموری

    سلام
    خروجی تک تک توابع را که اجرا می کنید نمایش دهید ببینید چه چیزی را برمی گرداند
    شاید sd تان مورد داشته باشد که با sd های دیگه تست کنید ضرر ندارد
    فيلم آموزشي ميکروکنترلر LPC1768
    فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
    فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
    فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

    دیدگاه


      #3
      پاسخ : عدم نوشتن در فلش مموری

      ممنون درست شد. مشکل از تیک Relocate Cache Buffer برش داشتم درست شد. :wow: حالا راحت جواب میده.
      بقیه دوستانی که این تاپیک می بینن حتما تیکش وردارن.

      حالا یه سوالی؟
      چرا با برداشتن تین تیک جواب داد؟ :eek: :eek:

      دیدگاه


        #4
        پاسخ : عدم نوشتن در فلش مموری

        نوشته اصلی توسط fedora
        ممنون درست شد. مشکل از تیک Relocate Cache Buffer برش داشتم درست شد. :wow: حالا راحت جواب میده.
        بقیه دوستانی که این تاپیک می بینن حتما تیکش وردارن.

        حالا یه سوالی؟
        چرا با برداشتن تین تیک جواب داد؟ :eek: :eek:
        اقا این برنامه هارو هرکاری میکنم کار نمیکنه.نمیدونم فکر میکنم برای قست SPI هست.چون برای برد اموزشی میخوام باید پایه های SPI رو روش تغییر بدم.میشه شما SD رم رو روی پایه های دیگه بزارید و ببیند کار میکنه یا نه.شماتیک برد اموزشی تو فروشگاه هست اگه ندارید.میخوام مثل برد اموزشی ببندید.مرسی

        دیدگاه


          #5
          پاسخ : عدم نوشتن در فلش مموری

          OK. شب جوابش بهتون میدم.

          دیدگاه


            #6
            پاسخ : عدم نوشتن در فلش مموری

            تو شماتیک پایه برا اتصال به SD رو 1.20 1.21 1.23 1.24 زده، در حال یکه SSP0 پین هاش 0.17 و 0.18 و SSP1 0.7 و 0.8 است. جواب نمیده. به نظر من با خود هدربورد تست کنین. تو خود برنامه هم که شما به من خیلی کمک کردین. راحت جواب گرفتم. من حتی برنامه های MP3 player و نمایش عکسم راحت جواب گرفتم. با خود هدربورد تست کنین.

            دیدگاه


              #7
              پاسخ : عدم نوشتن در فلش مموری

              SSP0 دو ردیف پایه داره که یکیش همونی که شما عرض کردید و ردیف دوم اونای است که تو برد اموزشی استفاده کرد.به دیتا شیت نگاه کنی در PINSEL3 پایه های P1.23 , P1.24 را به همان SSP0 اختصاص داده.برنامه ای سمپل خود سایت که با ورژن کیل قدیمی هست کار میکنه.

              دیدگاه


                #8
                پاسخ : عدم نوشتن در فلش مموری

                آروین جان حق با شما بود. ولی جابجا کردم پین های SSP رو یعنی با پین های 1.20 1.21 1.23 1.24 ولی جواب نداد.
                با پین های 0.15 0.16 0.17 0.18 جواب میده.

                دیدگاه


                  #9
                  پاسخ : عدم نوشتن در فلش مموری

                  سلام
                  پینها رو که عوض کردید هدر spi رو هم ادیت کردی و جواب نداد؟تابع انیشیال باید به این شکل نوشته بشه.دوستان دیگه ای با برد اموزشی به نتیجه ای رسیدن
                  کد:
                  static BOOL 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 = 250;            /* 100MHz / 250 = 400kBit   */
                                         /* maximum of 18MHz is possible*/  
                   LPC_SSP0->CR0 = 0x0007;          /* 8Bit, CPOL=0, CPHA=0    */
                   LPC_SSP0->CR1 = 0x0002;          /* SSP0 enable, master     */
                  
                   return (__TRUE);
                  }

                  دیدگاه


                    #10
                    پاسخ : عدم نوشتن در فلش مموری

                    باید هدر SPI رو عوض کرد دوست من. دیگه اینقد بی سواد نیستیم :icon_razz:
                    با PINSEL3 فقط جای پین ها رو عوض میکنیم. نمیدونم چرا جواب نمیده. ولی دارم روش کار میکنم نتیجه رو میذارم

                    دیدگاه


                      #11
                      پاسخ : عدم نوشتن در فلش مموری

                      جواب داد. دو تا از تابع ها رو یادم رفته بود اصلاح کنم. :mrgreen: :icon_razz:

                      اینم فایل ویرایش شده spi_lpc17xx.c :
                      کد:
                      /*----------------------------------------------------------------------------
                       *   RL-ARM - FlashFS
                       *----------------------------------------------------------------------------
                       *   Name:  SPI_LPC17xx.c
                       *   Purpose: Serial Peripheral Interface Driver for NXP LPC17xx
                       *   Rev.:  V4.20
                       *----------------------------------------------------------------------------
                       *   This code is part of the RealView Run-Time Library.
                       *   Copyright (c) 2004-2011 KEIL - An ARM Company. All rights reserved.
                       *---------------------------------------------------------------------------*/
                      
                      #include <File_Config.h>
                      #include <LPC17xx.H>         /* LPC17xx Definitions         */
                      
                      /*----------------------------------------------------------------------------
                       SPI Driver instance definition
                        spi0_drv: First SPI driver
                        spi1_drv: Second SPI driver
                       *---------------------------------------------------------------------------*/
                      
                      #define __DRV_ID spi0_drv
                      #define __PCLK  100000000
                      
                      /* SPI Driver Interface functions */
                      static BOOL Init (void);
                      static BOOL UnInit (void);
                      static U8  Send (U8 outb);
                      static BOOL SendBuf (U8 *buf, U32 sz);
                      static BOOL RecBuf (U8 *buf, U32 sz);
                      static BOOL BusSpeed (U32 kbaud);
                      static BOOL SetSS (U32 ss);
                      static U32 CheckMedia (void);    /* Optional function for SD card check */
                      
                      /* SPI Device Driver Control Block */
                      SPI_DRV __DRV_ID = {
                       Init,
                       UnInit,
                       Send,
                       SendBuf,
                       RecBuf,
                       BusSpeed,
                       SetSS,
                       CheckMedia             /* Can be NULL if not existing     */
                      };
                      
                      
                      /* SSPxSR - bit definitions. */
                      #define TFE   0x01
                      #define TNF   0x02
                      #define RNE   0x04
                      #define RFF   0x08
                      #define BSY   0x10
                      
                      /*--------------------------- Init ------------------------------------------*/
                      
                      static BOOL 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 = 250;            /* 100MHz / 250 = 400kBit   */
                                             /* maximum of 18MHz is possible*/  
                       LPC_SSP0->CR0 = 0x0007;          /* 8Bit, CPOL=0, CPHA=0    */
                       LPC_SSP0->CR1 = 0x0002;          /* SSP0 enable, master     */
                      	return (__TRUE);
                      }
                      
                      
                      
                      /*--------------------------- UnInit ----------------------------------------*/
                      
                      static BOOL UnInit (void) {
                       /* Return SSP interface to default state. */
                      
                       LPC_GPIO1->FIODIR  &= ~(1<<21);      /* P0.16 is input       */
                       LPC_PINCON->PINSEL3 &= ~(3<<10);       /* P0.16 SSEL (used as GPIO)  */ 
                      
                       LPC_PINCON->PINSEL3 &= ~(3UL<<8);     /* P0.15 GPIO port 0.15    */
                       LPC_PINCON->PINSEL3 &= ~((3<<14) | (3<<16)); /* P0.17 and P0.18 GPIO    */
                      
                       LPC_SC->PCLKSEL1  &= ~(3<<10);      /* PCLKSP0 = CCLK/4 ( 25MHz)  */
                      
                       LPC_SSP0->CPSR   &= ~0xFF; 
                       
                       LPC_SSP0->CR0    &= ~0xFFFF;  
                       LPC_SSP0->CR1    &= ~0x0F;
                      
                       return (__TRUE);
                      }
                      
                      
                      /*--------------------------- Send ------------------------------------------*/
                      
                      static U8 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    */
                      }
                      
                      
                      /*--------------------------- SendBuf ---------------------------------------*/
                      
                      static BOOL SendBuf (U8 *buf, U32 sz) {
                       /* Send buffer to SPI interface. */
                       U32 i;
                      
                       for (i = 0; i < sz; i++) {
                        LPC_SSP0->DR = buf[i];
                        /* Wait if Tx FIFO is full. */
                        while (!(LPC_SSP0->SR & TNF));
                        LPC_SSP0->DR;
                       }
                       /* Wait until Tx finished, drain Rx FIFO. */
                       while (LPC_SSP0->SR & (BSY | RNE)) {
                        LPC_SSP0->DR;
                       }		  
                       return (__TRUE);
                      }
                      
                      
                      /*--------------------------- RecBuf ----------------------------------------*/
                      
                      static BOOL RecBuf (U8 *buf, U32 sz) {
                       /* Receive SPI data to buffer. */
                       U32 i;
                      
                       for (i = 0; i < sz; i++) {
                        LPC_SSP0->DR = 0xFF; 
                        /* Wait while Rx FIFO is empty. */
                        while (!(LPC_SSP0->SR & RNE));
                        buf[i] = LPC_SSP0->DR;
                       }
                       return (__TRUE);
                      }
                      
                      /*--------------------------- BusSpeed --------------------------------------*/
                      
                      static BOOL BusSpeed (U32 kbaud) {
                       /* Set an SPI clock to required baud rate. */
                       U32 div;
                      
                       div = (__PCLK/1000 + kbaud - 1) / kbaud;
                       if (div == 0)  div = 0x02;
                       if (div & 1)  div++;
                       if (div > 0xFE) div = 0xFE;
                       LPC_SSP0->CPSR = div;
                       return (__TRUE);
                      }
                      
                      
                      /*--------------------------- SetSS -----------------------------------------*/
                      
                      static BOOL SetSS (U32 ss) {
                       /* Enable/Disable SPI Chip Select (drive it high or low). */
                      
                       if (ss) {
                        /* SSEL is GPIO, output set to high. */
                        LPC_GPIO1->FIOSET = 1<<21;
                       } 
                       else {
                        /* SSEL is GPIO, output set to low. */
                        LPC_GPIO1->FIOCLR = 1<<21;
                       }
                       return (__TRUE);
                      }
                      
                      
                      /*--------------------------- CheckMedia ------------------------------------*/
                      
                      static U32 CheckMedia (void) {
                       /* Read CardDetect and WriteProtect SD card socket pins. */
                       U32 stat = 0;
                       stat |= M_INSERTED;
                       return (stat);
                      
                      }
                      
                      /*----------------------------------------------------------------------------
                       * end of file
                       *---------------------------------------------------------------------------*/

                      دیدگاه


                        #12
                        پاسخ : عدم نوشتن در فلش مموری

                        دستت درد نکنه.برای منم درست شد.هدرت با مال من هیچ فرقی نداره چرا مال من کار نمیکرد.بهرحال مرسی

                        دیدگاه


                          #13
                          پاسخ : عدم نوشتن در فلش مموری

                          بازم مرسی.افا از روی کول دیسک هم فایل jpg هم تونستی بخونی؟هرچند من با usb روی هدر برد چون تبدیل نداشتم ازمایش نکردم.با usp روی برد اصلی امتحان کردم.یک لحضه led روشن میشه بعد خاموش میشه

                          دیدگاه


                            #14
                            پاسخ : عدم نوشتن در فلش مموری

                            خواهش میکنم. نه با کول دیسک کار نکردم. ولی میخوام دیکد jpg رو از روی SD کار کنم که نتایجش هم تو همین تاپیک میذارم.

                            دیدگاه


                              #15
                              پاسخ : عدم نوشتن در فلش مموری

                              کار سختی نیست هدر برنامه خودت رو با هدر lcd همون برنامه کول دیسک عوض کن کار میکنه

                              دیدگاه

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