NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3427 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 13 از 13

موضوع: کمک در خصوص خواندن CID حافظه SD-Card

  1. #1
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض کمک در خصوص خواندن CID حافظه SD-Card

    با سلام.
    داخل هر SD-CARD یه سری بیت، اطلاعات در خصوص سریال نامبر و کارخانه سازنده وجود داره که مموری ها رو از هم متفاوت میکنه که CID نامیده میشه.
    اینجا رو ببینید

    حالا تو کتابخانه FatFs

    که داریم با LPC1768 کار میکنیم، چگونه میتونیم به این اطلاعات دسترسی پیدا کنیم؟

    و سوال دومم اینه که برای نوشتن و خواندم اطلاعات به صورت سکتوری چطوری میشه با استفاده از همین کتابخانه کار کنیم.
    البته اینجا و اینجا رو هم ببینید.

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    اگه به پروژه زیر یه نگاه بندازین، یه فایل داره به اسم sd.c.
    تو این فایل همچین خطی اومده:
    #define SEND_CID 10

    من دقیقا نمیدونم چجوری میشه با اون کار کنم.
    اگر محبت کنید و یه بررسی روش انجام بدید خیلی لطف کردید.
    فايل هاي پيوست شده فايل هاي پيوست شده

  4. #3
    عضو جدید
    تاریخ عضویت
    Oct 2009
    نوشته ها
    11
    تشکر
    1
    تشکر شده 10 بار در 8 پست

    پیش فرض

    به کمک تابع زیر که تو فایل SD.c هست میتونید با ارسال دستور CID اطلاعات رو در قالب یک بافر که از نوع آرایه ای هست دریافت کنید.
    uint8_t SD_SendCommand (uint8_t cmd, uint32_t arg, uint8_t *buf, uint32_t len)

    cmd همون دستور مورد نظرتون هست که همونطور که گفتین برابر با 10 هست
    arg رو به 0 بذار
    یه بافر 128 بایتی تعریف کن
    در آخر به صورت زیر تنظیم کن.

    SD_SendCommand(10,0,buf,128)

    اطلاعات دریافتی ذخیره شده در آرایه buf رو طبق جدول زیر جدا کن.



    Name Field Width CID-bits
    ----------------------------------------------------------
    [Manufacturer ID MID 8 [127:120
    [OEM/Application ID OID 16 [119:104
    [Product Name PNM 40 [103:64
    [Product Revision PRV 8 [63:56
    [Product Serial Number PSN 32 [55:24
    [reserved -- 4 [23:20
    [Manufacturing Date MDT 12 [19:8
    [CRC7 Checksum CRC 7 [7:1
    [not used, always 1 -- 1 [0:0

    ویرایش توسط start : 30-12-2014 در ساعت 22:48

  5. کاربران : 2 تشکر کرده اند از شما start برای ارسال این پست سودمند:


  6. #4
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    Start عزیز.
    تشکر بابت پاسخ شما.
    در اولین فرصت بررسی میکنم و نتیجه رو اطلاع رسانی میکنم.

    فقط یه سوال دیگه هم تو پست اول پرسیده بودم، اگه محبت کنید اون رو هم یه بررسی بکنید.

    و سوال دومم اینه که برای نوشتن و خواندم اطلاعات به صورت سکتوری چطوری میشه با استفاده از همین کتابخانه کار کنیم.
    البته اینجا و اینجا رو هم ببینید.

    در واقع توی مموری قصد دارم یه سری اطلاعات تو Sector های خاص بنویسم که تحت استاندارد Fat نباشه، یعنی مموری که به PC وصل میشه چیزی توش نیست، ولی محتوا داره.

    لطفا راهنمایی بفرمایید.

  7. #5
    کاربر فعال
    تاریخ عضویت
    Jul 2013
    نوشته ها
    153
    تشکر
    42
    تشکر شده 47 بار در 38 پست

    پیش فرض

    درد سر این کار زیاده تنها هدف شما هم احتمالا اینه که دیتاتون دست کس دیگه ای نیفته.
    راه های بهتری برای این کار هست: encryption

  8. تشکرها از این نوشته :


  9. #6
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    حق با شماست.
    ولی این کار را من قبل ها، جوان تر بودیم به سادگی با AVR انجام میدادیم.
    اون موقع با SD-Card ها به صورت Fat کار نمیکردیم، بلکه سکتوری باهاش کار می کردیم. خیلی عالی بود، من تو یه پروژه هوش مصنوعی با استفاده از همین مموری ها 53 کیلو حافظه Ram نیاز داشتم که به سادگی خواسته بنده رو فراهم کرد. یادش بخیر.

    ولی الان کتابخانه FatFs رو بررسی کنیدو دو لینک اینجا
    و
    اینجا
    رو هم ببینید، توش هست، فقط یکمی پیچیده شده.
    اگه دوستان یه بررسی بکنن، با توجه به اینکه اصل پروژه رو هم گذاشتم، لطف میکنن.
    ممنون

  10. #7
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    این را ببینید:
    کد:
    DRESULT disk_read (
        BYTE drv,            /* Physical drive number (0) */
        BYTE *buff,            /* Pointer to the data buffer to store read data */
        DWORD sector,        /* Start sector number (LBA) */
        BYTE count            /* Sector count (1..255) */
    )

    کد:
    
    DRESULT disk_write (
        BYTE drv,            /* Physical drive number (0) */
        const BYTE *buff,    /* Pointer to the data to be written */
        DWORD sector,        /* Start sector number (LBA) */
        BYTE count            /* Sector count (1..255) */
    )

    فقط مقادیر متغیر ها رو دقیقا تشخیص نمیدم.
    Start عزیز این مقادیر رو چه جوری باید مقدار دهی کنیم.
    ویرایش توسط ensane2008 : 31-12-2014 در ساعت 18:57

  11. #8
    عضو جدید
    تاریخ عضویت
    Oct 2009
    نوشته ها
    11
    تشکر
    1
    تشکر شده 10 بار در 8 پست

    پیش فرض

    سلام.
    تو فایل SD.c یه تابع به صورت زیر هست که به راحتی می تونی به صورت سکتوری دسترسی داشته باشی.
    (SD_BOOL SD_ReadSector (uint32_t sect, uint8_t *buf, uint32_t cnt
    sect شماره سکتور مورد نظر
    buf یه بافره جهت ذخیره اطلاعات که به اندازه cnt سکتور که هر سکتور 512 بایت [در داخل برنامه تعریف شده] رو از SD میخونه و توش ذخیره میکنه.پس اگه خواستی فقط یه سکتور بخونی باید آرایت حداقل 512 بایتی تعریف کنی.

    برای نوشت هم از تابع زیر استفاده کن که ورودیاش مثل قبلیه فقط باید اطلاعاتت قبلا تو متغیر بافر مورد نظرت ذخیره شده باشه.
    (SD_BOOL SD_WriteSector (uint32_t sect, const uint8_t *buf, uint32_t cnt

  12. تشکرها از این نوشته :


  13. #9
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    سلام.
    خیلی ممنون.
    تا شب بررسی میکنم و نتیجه رو همینجا اعلام میکنم.

  14. #10
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    سلام.
    Start بزرگوار، بنده در خط 57 برنامه که در پیوست هم آوردم یک خط اضافه کردم، به منظور خوندن اطاعات از یک سکتور.
    کد:
    		 res=SD_BOOL SD_ReadSector(10,bufi,1);
    2 تا ارور میده که، متاسفانه موفق به رفع آنها نشدم.
    در صورت امکان یه بررسی بفرمایید.

    این لیست پیغام خطا ها است.

    کد:
    Rebuild target 'kavirelectronic'assembling startup_LPC17xx.s...
    compiling main_sd_mmc.c...
    Source\main_sd_mmc.c(33): warning:  #9-D: nested comment is not allowed
            /*UART0_SendString(BX); 
    Source\main_sd_mmc.c(57): error:  #254: type name is not allowed
                     res=SD_BOOL SD_ReadSector(10,bufi,1);
    Source\main_sd_mmc.c(57): error:  #65: expected a ";"
                     res=SD_BOOL SD_ReadSector(10,bufi,1);
    Source\main_sd_mmc.c(60): warning:  #9-D: nested comment is not allowed
      /*  UART0_Init();                /* UART Initialization           */
    Source\main_sd_mmc.c(73): warning:  #167-D: argument of type "int *" is incompatible with parameter of type "UINT *"
            res = f_write (&fsrc, string1, sizeof(string1), &bw);
    Source\main_sd_mmc.c(105): warning:  #167-D: argument of type "int *" is incompatible with parameter of type "UINT *"
            res = f_write (&fsrc, string2, sizeof(string2), &bw);
    Source\main_sd_mmc.c(118): warning:  #167-D: argument of type "int *" is incompatible with parameter of type "UINT *"
            res = f_write (&fsrc, snum, sizeof(snum), &bw);
    Source\main_sd_mmc.c(127): warning:  #9-D: nested comment is not allowed
        f_mount(0, NULL);  /* Unregister work area prior to discard it */
    Source\main_sd_mmc.c(46): warning:  #177-D: variable "bufi" was declared but never referenced
            uint8_t bufi[512];
    Source\main_sd_mmc.c(52): warning:  #550-D: variable "res" was set but never used
            int res;
    Source\main_sd_mmc.c: 8 warnings, 2 errors
    compiling uart.c...
    compiling system_LPC17xx.c...
    compiling lpc17xx_spi.c...
    compiling sd.c...
    Source\SPI_SD\sd.c(619): warning:  #177-D: variable "i" was declared but never referenced
          uint32_t i;
    Source\SPI_SD\sd.c(657): warning:  #177-D: variable "i" was declared but never referenced
          uint32_t i;
    Source\SPI_SD\sd.c: 2 warnings, 0 errors
    compiling ff.c...
    ".\OBJ\SD_MMC_kavirelectronic.axf" - 2 Error(s), 10 Warning(s).
    Target not created
    فايل هاي پيوست شده فايل هاي پيوست شده
    ویرایش توسط ensane2008 : 02-01-2015 در ساعت 12:47

  15. #11
    عضو جدید
    تاریخ عضویت
    Oct 2009
    نوشته ها
    11
    تشکر
    1
    تشکر شده 10 بار در 8 پست

    پیش فرض

    دوست عزیز من فرمت کلی دستور رو نوشتم شما باید به صورت زیر استفاده می کردین
    SD_ReadSector(10,bufi,1);

  16. تشکرها از این نوشته :


  17. #12
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    Red face بالاخره راه افتاد

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

    برنامه پیوست شده، برنامه کاملی است که هم به صورت سکتوری و هم بر روی فرمت Fat بر روی مموری اطاعات نوشته میشه.
    این مثال منطبق با برد LandTiger Ver2.0 می باشد.
    همواره موفق باشید.
    فايل هاي پيوست شده فايل هاي پيوست شده

  18. #13
    عضو جدید
    تاریخ عضویت
    Oct 2009
    نوشته ها
    11
    تشکر
    1
    تشکر شده 10 بار در 8 پست

    پیش فرض

    خواهش میکنم.ممنون از اینکه برنامه تون رو به طور کامل گذاشتید.
    موفق باشد.

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

  1. [سوال] برنامه میکروی armبرای mmc card & sd card
    توسط yahyamoradi در انجمن برنامه نویسی کامپیوتر/کنترل با کامپیوتر
    پاسخ: 1
    آخرين نوشته: 10-12-2013, 13:44
  2. **||مشکل اساسی با sd-card ||**
    توسط lionheart در انجمن AVR
    پاسخ: 6
    آخرين نوشته: 16-06-2013, 23:28
  3. ارتباط میکرو با SD Card
    توسط zahrashariati در انجمن AVR
    پاسخ: 2
    آخرين نوشته: 26-12-2012, 13:35
  4. ولتمتر مخصوص منابع تغذيه
    توسط mmojtabaa در انجمن الکترونیک
    پاسخ: 8
    آخرين نوشته: 02-03-2012, 01:51
  5. كشف جديد دانشمندان در خصوص حركت انگشتان
    توسط hakimzadeh در انجمن گفت و گوي آزاد
    پاسخ: 2
    آخرين نوشته: 24-01-2012, 13:11

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

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