اطلاعیه

Collapse
No announcement yet.

چطوری توی حافظه ی SD بنویسم و بخونم ؟

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

    چطوری توی حافظه ی SD بنویسم و بخونم ؟

    با سلام
    من میخوام توی یه حافظه ی SD هشت گیگ دارم (هشت پینه)میخوام داخلش از طریق ارتباط SPI دیتا بریزم و بخونم . کسی اطلاعایی در این مورد داره ؟

    #2
    پاسخ : چطوری توی حافظه ی SD بنویسم و بخونم ؟

    این دیتا شیت SD کارته
    www.sandisk.com/Assets/File/OEM/Manuals/SD_SDIO_specsv1.pdf
    یه سری کامند برای ارتباط با حافظه داده(CMD) حالا من نمیدونم آیا باید برای ارتباط با این حافظه دقیقا همین دستورات CMD0 تا CMDn رو بفرستم ؟در ضمن آیا این کامندها بین SD کارت ها و MCC کارت ها مشترکه ؟ این دیتا شیت خیلی کلیه و مثال هم نداره کسی بهتر و قابل فهم ترشو نداره ؟

    دیدگاه


      #3
      پاسخ : چطوری توی حافظه ی SD بنویسم و بخونم ؟

      با سلام
      لطفا fat fs و ff.h را انجمن جستجو کنید.
      ( کتابخانه فایل سیستم برای کارت SD )
      با سپاس
      گشتی در لاله زار
      http://www.eca.ir/forum2/index.php?topic=76138.0

      http://www.eca.ir/forum2/index.php?topic=76141

      دیدگاه


        #4
        پاسخ : چطوری توی حافظه ی SD بنویسم و بخونم ؟

        نوشته اصلی توسط Solsal
        با سلام
        لطفا fat fs و ff.h را انجمن جستجو کنید.
        ( کتابخانه فایل سیستم برای کارت SD )
        با سپاس
        ممنون از لینکی که گذاشتید ولی مثل اینکه من نتونستم سئولم رو خوب بیان کنم ! ببینید من نمیخوام از توابع آماده توی کامپایلر ها استفاده کنم من میخوام مستقیما توی SD بنویسم و ازش بخونم . بر اساس دیتا شیت SD ها ساختار دستورها از 48 بیت (6 بایت ) تشکیل شده .
        بیت 47 که بیت شروع است و همیشه صفر باید باشه. بیت 46 ام بیتی است که مشخص میکنه ارسال دستور از طرف میکرو است یا از طرف SD به این صورت که در هنگام ارسال دستور باید این بیت رو یک کنیم . بیت های 45:40 بیت کامند هستند و بر اساس دیتا شیت تا 63 دستور مختلف میتوان به SD ارسال کرد ب.یت های 39:8 مربوط به آرگومان دستور هستند و یک آدرس 32 بیتی در اینجا باید قرار بدیم وبیت 7:1 بیت های CRC است که من نمیدونم دقیقا چی باید بعنوان CRC برای SD بفرستم ؟ :read: و مشکلم همینه دوست عزیز اگه میدونی لطفا راهنمایی کن در نهایت بیت 0 هم بیت پایان هستش و همیشه یک هستش . من در اولین مرحله میخوام یه عدد رو توی SD ذخیره کنم و همون رو از SD بخونم ولی متاسفانه در مورد CRC نمیدونم وقتی دارم از دستور رایت بلوک CMD24 استفاده می کنم چی باید به عنوان CRC بفرستم فقط میدونم از CRC برای جلوگیری از ارسال و دریافت نادرست استفاده میشه .

        دیدگاه


          #5
          پاسخ : چطوری توی حافظه ی SD بنویسم و بخونم ؟

          سلام من این کد ها رو نوشتم ولی متاسفانه کار نمیکنه کسی نظری نداره ؟ من میخوام عدد 110 رو توی SD ذخیره کنم و دوباره از SD بخونمش و روی LCD نمایش بدم
          کد:
          char *text = "mikroElektronika";
          
          unsigned short take, buffer;
           char txt[6];
          
          
          
          void main() {
           trisd.f1=0;
           portd.f1=1;
           TRISB = 0;        // PORTB is output
           Lcd_Init(&PORTB);     // Initialize LCD connected to PORTB
           Lcd_Cmd(Lcd_CLEAR);    // Clear display
           Lcd_Cmd(Lcd_CURSOR_OFF); // Turn cursor off
           Lcd_Out(1, 1, text);   // Print text to LCD, 2nd row, 1st column
           Spi_Init_Advanced(MASTER_OSC_DIV4,DATA_SAMPLE_End,CLK_IDLE_HIGH , HIGH_2_LOW) ;
          
          
          while(1)
          {
            portd.f1=0;        // chip select low
            spi_write(88);     //start bit ,host, write command
          
            spi_write(0);     // Argument
            spi_write(0);     // Argument
            spi_write(0);     // Argument
            spi_write(0);     // Argument
          
            spi_write(128);     // CRC
            spi_write(110);     // Data
          
            portd.f1=1;       // chip select high
            delay_ms(3);
            portd.f1=0;       // chip select low
            spi_write(88);     //start bit ,host, Read command
          
            spi_write(0);     // Argument
            spi_write(0);     // Argument
            spi_write(0);     // Argument
            spi_write(0);     // Argument
          
           take = Spi_Read(buffer);
          
            WordToStr(take, txt);
            Lcd_Out(2, 1, txt);
          
            delay_ms(300);
            Lcd_Cmd(Lcd_CLEAR);
            Lcd_Out(1, 1, text);
               portd.f1=1;
          
          }
          }

          دیدگاه


            #6
            پاسخ : چطوری توی حافظه ی SD بنویسم و بخونم ؟

            من مثال خود nicroc pro رو کامپایل کردم و تو پروتئوس امتحانش کردم ، کار میکرد ( رجیسترها رو می خوند )
            اما نمیتونست توش بنویسه ، اجتمالا باید تو واقعیت (رو برد) تست بشه !

            دیدگاه


              #7
              پاسخ : چطوری توی حافظه ی SD بنویسم و بخونم ؟

              نوشته اصلی توسط aryanaar
              من مثال خود nicroc pro رو کامپایل کردم و تو پروتئوس امتحانش کردم ، کار میکرد ( رجیسترها رو می خوند )
              اما نمیتونست توش بنویسه ، اجتمالا باید تو واقعیت (رو برد) تست بشه !
              گفتم که نمیخوام از توابع آماده ی کامپایلر ها استفاده کنم وگرنه که کامپایلر میکرو سی کاملش رو داره . در ضمن کسی PDF کتاب کد ویزن (code vision )
              AVR رو داره ؟ چون شنیدم یه مثال برای ارتباط با حافظه ی ُSD بدون استفاده از توابع کامپایلر ها داره . اگه دارین بیزحمت بذارین کارم بد جوری گیر کرده.

              دیدگاه


                #8
                پاسخ : چطوری توی حافظه ی SD بنویسم و بخونم ؟

                البته کل کتابش هم لازم نیست توی فصل 19 کتاب بخش 7 اگه کد های اون مثال رو هم بذارید کافیه

                دیدگاه


                  #9
                  پاسخ : چطوری توی حافظه ی SD بنویسم و بخونم ؟

                  نوشته اصلی توسط mahdi-firoozi
                  این دیتا شیت SD کارته
                  www.sandisk.com/Assets/File/OEM/Manuals/SD_SDIO_specsv1.pdf
                  یه سری کامند برای ارتباط با حافظه داده(CMD) حالا من نمیدونم آیا باید برای ارتباط با این حافظه دقیقا همین دستورات CMD0 تا CMDn رو بفرستم ؟در ضمن آیا این کامندها بین SD کارت ها و MCC کارت ها مشترکه ؟ این دیتا شیت خیلی کلیه و مثال هم نداره کسی بهتر و قابل فهم ترشو نداره ؟
                  با توجه به اطلاعاتی که من دارم، کارت های اس دی به چند صورت مختلف استفاده می شوند، که یکی از اونا IO هست و برای ارتباط مستقیم با هاست استفاده می شه؛ کاربرد اون هم برای افزارایی مثل وبکم هست، در واقع این به این معنی هست که لینک بالا اصلا ربطی به حافظه اس دی نداره.
                  روشی که برای حافظه استفاده میشه (در حالت spi) به این صورته که اول باید cs رو روی حالت low قرار بدی و بعد دستور 0 (CMD0) رو به کارت بفرستی تا کارت فعال شه.
                  تا اونجایی که من اطلاع دارم، CRC ها در حالت reset برای spi غیر فعالند و باید با یکی از دستورات فعال شوند.
                  ***
                  من ول کردم، می خوام ببینم که شما هم ول می کنین یا نه!

                  دیدگاه


                    #10
                    پاسخ : چطوری توی حافظه ی SD بنویسم و بخونم ؟

                    نوشته اصلی توسط x.m.k
                    با توجه به اطلاعاتی که من دارم، کارت های اس دی به چند صورت مختلف استفاده می شوند، که یکی از اونا IO هست و برای ارتباط مستقیم با هاست استفاده می شه؛ کاربرد اون هم برای افزارایی مثل وبکم هست، در واقع این به این معنی هست که لینک بالا اصلا ربطی به حافظه اس دی نداره.
                    روشی که برای حافظه استفاده میشه (در حالت spi) به این صورته که اول باید cs رو روی حالت low قرار بدی و بعد دستور 0 (CMD0) رو به کارت بفرستی تا کارت فعال شه.
                    تا اونجایی که من اطلاع دارم، CRC ها در حالت reset برای spi غیر فعالند و باید با یکی از دستورات فعال شوند.
                    من موفق شدم یه سکتور در حافظه ی SD بنویسم و بخونم حالا در ادامه ی پروجم میواخم یه فایل تکست ایجاد کنم . توی دیتا شیت چیزی در این باره نگفته !!!! شما نظری پیشنهادی PDF چیزی نداری که چهار چوب کلی یه فایل تکست رو داشته باشه ؟ تا من بدونم برای ایجاد یه فایل تکست چی باید توی SD کارت بنویسم .

                    دیدگاه


                      #11
                      پاسخ : چطوری توی حافظه ی SD بنویسم و بخونم ؟

                      نوشته اصلی توسط mahdi-firoozi
                      من موفق شدم یه سکتور در حافظه ی SD بنویسم و بخونم حالا در ادامه ی پروجم میواخم یه فایل تکست ایجاد کنم . توی دیتا شیت چیزی در این باره نگفته !!!! شما نظری پیشنهادی PDF چیزی نداری که چهار چوب کلی یه فایل تکست رو داشته باشه ؟ تا من بدونم برای ایجاد یه فایل تکست چی باید توی SD کارت بنویسم .
                      اگر فایل تکست می خوای ایجاد کنی، اول حافظه رو باید فرمت کنی تا کامپیوتر بتونه شناسایی کنه.
                      برای فرمت هم میتونی از کامپیوتر استفاده کنی و هم از آی سی. اگر از کارت زیر 4 گیگا بایتی استفاده می کنی بهتره که ازfat, fat32 استفاده کنی و در غیر این صورت از exfat استفاده کنی.
                      در حالت فرمت هم چند بایت اول حافظه به کد های مربوط به فرمت اختصاص داده می شه و بقیه حافظه به دیتا تعلق داره.
                      من در حال حاضر با mpeg دارم کار می کنم، ولی برای تکست در مورد txt heder format اگه سرچ کنی،حتما به نتیجه می رسی
                      ***
                      من ول کردم، می خوام ببینم که شما هم ول می کنین یا نه!

                      دیدگاه

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