PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : راه اندازی sdio و کار با توابع کتابخانه ای fat



kamikazi
04-11-2012, 10:27
سلام به همه دوستان تو این قسمت میخوایم راجبه راه اندازی بخش sdio میکروی stm32 بحث کنیم من یه مثالی برای این قسمت دارم که کاملا تست شدس و خودمم رو بردم تستش کردم و مشکلی نداره
میخواستم از دوستان بپرسم اگه کسی با این توابع fat اشنایی داره بگه چطور میشه با توجه به این پروژه وارد یه هدر مثل picture.h تو sd کارت شد و تک تک این اعداد داخل این هدر رو خوند و تو یه بافر ذخیره کرد و ازش استفاده کرد من این سوال رو برای این پرسیدم که من میخوام عکسو به فایل هگز تبدیل کنم و اونو تو یه هدر رو اس دی ذخیره کنم بعدش بیام با همین سخت افزار sdio اونو رو تو ال سی نمایش بدم فقط مشکل بدست اوردن این تک تک اعداد اگه کسی میتونه راهنمایی کنه


const u32 terawins_logo[]={
0x669acc,
0x669acc,
0x669acc,
0x669acc,
0x669acc,
0x669acc,
0x669acc,
0x669acc,
0x669acc,
0x669acc,
0x669acc
.
.
.
.
.
.
.
.
}

sadmonew
04-11-2012, 12:29
سلام مهندس
اين مثالي كه اينجا گذاشتين با بردي كه واسه stm32f103vet6 زدين، سازگاري داره.
يعني پين هاي SDIO ميكرو به درستي به پين هاي كارت SD متصل شدن.ميتونيد خودتون تست كنيد.
ضمنا اينو بگم كه كار با اين كتابخونه سادس و به راحتي ميتونيد از دستوراتش استفاده كنيد.

kamikazi
04-11-2012, 13:08
بله مهندس تستش کردم جواب داد میره تو اس دی کارت و فایل demo.txt رو ایجاد میکنه و عبارت
Thank you for using HY-MiniSTM32V Development Board £¡^_^ \r\n
رو تو این فایل ایجاد میکنه مهندس میتونید رو همون بردی که خودمون با هم زدیدش تستش کنید نکتشم اینکه باید پایه pd.03 رو به گراند وصل کنید تا از نطر میکرو مشخص باشه که اس دی وصله به برد احتمالا این قسمت برای سوکتهای اس دی هستش که قابلیت دیتکت کردن اس دی و ارسال این پیام رو به میکرو دارن نوشته شده مشکلی نداره اون پینی که گفتم رو به زمین وصل کنید ردیفه مهندس

agape
04-11-2012, 16:44
سلام به همه دوستان
برای این که بخواید یه فایل رو بخونید در واقع بهتر بگم اگر بخواهید داده ها رو به صورت عددی بخونید بهتر که داده ها رو به صورت فایل باینری ذخیره کنید تا نیازی نباشه که بعد از خوندن تکست اعداد رو به اینتیجر تغییر بدید!

kamikazi
04-11-2012, 16:51
سلام مهندس مزارعی خسته نباشید
میشه بیشتر توضیح بدید یعنی من بیام اون هدرو به فایل باینری تبدیل کنم بعدش بیام 24 بیت 24 بیت داده هارو بخونم ؟؟؟؟ میشه بیشتر راهنمایی کنید مثالی که خود اقای زارعی برای این مورد و راه اندازی sdio و نشون داده عکس وجود داره از فایل باینری داخل sd میخونه و عکسو نمایش میده اگه ممکنه مهندس یه توضیحی بدید ممنون میشم
حالا اینا به کنار چظور میشه این هدرو به فایل باینری تبدیل کرد چون این نرم افزاری که عکسو به فایل هگز تبدیل میکنه فقط اعداد هگز 24 بیتی تو خروجیش میده؟؟؟

kamikazi
19-11-2012, 01:20
کسی از دوستان نمیتونه در مورد خوندن یه فایل باینری از sd کمک کنه من تا اینجا جلو رفتم که یه فایلو باز کنم و توش بنویسم ولی در مورد خوندن از sd انگار چیزی تو بافر کپی نمیکنه و وقتی میخوام دیتاهایی که تو بافر ذخیره شده رو بصورت اطلاعات یه پیکسل نشون بدم فقط ضمینه رو سیاه نشون میده که نشون میده روی بافر با توجه به اینکه مقدار دیفالت هر درایه صفره چیزی کپی نشده و فقط 0x000000 دریافت میکنم ممنون میشم اگه کسی راهنماییم کنه


f_mount(0,&fs);
while (FR_OK == f_open( &fsrc , "0:/Pic2Hex.bin" , FA_OPEN_EXISTING | FA_READ))

printf("Pic2Hex.bin successfully readed \r\n");
Display_Str(50,130,COLOR24_BLUE,"Pic2Hex.bin successfully readed ");
GPIO_ResetBits(GPIOD, GPIO_Pin_14);
delay_ms(500);
GPIO_SetBits(GPIOD, GPIO_Pin_14);


/* read file to buffer*/
while (FR_OK == f_read(&fsrc, buffer, sizeof(buffer), &br))


printf("Pic2Hex.bin successfully readed \r\n");
Display_Str(50,130,COLOR24_BLUE,"Pic2Hex.bin successfully readed ");

GPIO_ResetBits(GPIOD, GPIO_Pin_14);

/*close file */
f_close(&fsrc);
for(x=0;x<480;x++)
{
for(y=0;y<(3*272);y=y+3)
{
pixel =(uint32_t)( buffer[y]<<16)+(buffer[y+1]<<8)+buffer[y+2];
SSD1963_SetPixel(x,(y/3),(uint32_t) pixel );
}
}

sadmonew
19-11-2012, 18:04
سلام مهندس رحيمي
تابع f_read مشكلي نداره و خيلي عالي كار ميكنه. مشكل از جاي ديگه هستش

kamikazi
19-11-2012, 18:13
پس چرا هیچی کپی نمیشه تو بافره. بافرم 40000 بایت طولشه حداقل باید به این اندازه دیتا توش کپی کنه ولی نمیکنه همش صفر رو نشون میده که اونم رنگ سیاهه
شما مهندس تست کردید؟؟؟

saeyd
21-11-2012, 20:28
با سلام
مهندس تو همون سایت نحوه دیکد کردن jpg و لود کردن bmp را هم توضیح داده هم مثال زده.
فایل پیوست را بگیرید .

kamikazi
22-11-2012, 16:36
ممنون مهندس اینارو من قبلا دیده بودم با نشون دادن عکس از روی اس دی با فرمت jpeg و bmp مشکل ندارم نشون میده مشکلی که هست خروجی این برنامه دیکدر عکس jpeg بصورت 16 بیتی در صورتیکه من اس اس دیو تو مد 24 بیتی راش انداختم چون 8 بیت دیتاهای رنگ قرمز از دست رفته تمام عکسا به ابی رنگ میزنه که این اصلا جالب نیست یجا تو یکی از هدراشم گفته اگر
قرار بدی خروجی رنگو بصورت 24 بیتی در میاره که من امتحان کردم اصلا فرقی نکرد حتی متغییر رنگم رو هم 32 بیتی تغریف کردم بازم نشد دیگه دارم قاط میزنم حتی خوندن فرمت باینری هم بصورت 24 بیتی رو تست کردم فقط یه طیف رنگ زردو قرمزو نوک مدادی و چنتا رنگ دیگرو نشون میده cry:::baad:



/* System Configurations */

#define JD_SZBUF 512 /* Size of stream input buffer (should be multiple of 512) */
#define JD_FORMAT 0 /* Output RGB format 0:RGB888 (3 BYTE/pix), 1:RGB565 (1 WORD/pix) */
#define JD_USE_SCALE 1 /* Use descaling feature for output */

kamikazi
26-11-2012, 15:28
بالاخره با کمک های بی دریغ اقا صادق گل موفق شدم این sdio رو با تمام مخلفات با توابع fat راش بندازم وقتی ادم میبینه که نوشتن یه تابع 15 خطی 3 هفته زمانشو میگیره واقعا به خودشو داشتن دوستان خوبی مثل اقا صادق افتخار میکنه ممنون از زحمات همه دوستان و اقای زارعی گل که خیلی کمک کردن
الان میتونم با یه بافر 3 بایتی هر عکسیو که با فرمت باینری رو اس دی ذخیره شده رو بصورت 24 بیتی نمایش بدم با سرعت خیلی بالا البته همه اینارو باید مدیون پورت sdio بود که به علت استفاده از dma داده هارو با سرعت بالاتری انتقال میده

ali-mo
18-12-2012, 02:24
سلام
من این برنامه FATFS V0.08A-SD Card رو با برد STM32F103RET6 تست میکنم , کار SD رو شناسایی میکنه ولی تابع f_open کار نمیکنه. کسی تا حالا با میکروی STM32F103RET6 از برنامه FATFS جواب گرفته؟

kamikazi
18-12-2012, 19:45
سلام مهندس این برنامه خیلی خوب کار میکنه شاید مشکل از sd باشه نباید بیشتر از 2 گیگ باشه ها در ضمن من با چنتا اس دی رم مختلف تستش کردم فقط با دوتاش جواب گرفتم فکر کنم مربوط به نوع فرمت کردن اس دیت باشه باید fat فرمتش کنید من با یکی از همین اس دی رم های قدیمی 256 مگ راحت جواب گرفتم
در ضمن اس دیت باید از این 9 پایه ها باشه یه مدل از این قدیمیا هست 7 پینه که فقط بصورت اس پی ای راه اندازی میشه

sajjadoo
18-12-2012, 21:37
سلام مهندس
میشه سورس برنامتون بذارید
ممنون میشم
در ضمن اگه لطف کنید سورس کد باز کردن فایل های jpg , bmp بذارید که دیگه محشره
مرسی

kamikazi
18-12-2012, 23:14
مهندس همین برنامه FATFS V0.08A-SD Card خیلی خوب کار میکنه من تو اولین بار جواب گرفتم هیچ تغییریم توش ندادم و فقط کامپایلش کردم و پروگرمش کردم مشکلی نداره برای jpg , bmp هم میتونید به سایت اقای CHAN یه سری بزنید برای میکرو STM32 یه مثال کامل داره البته تو فروم AT91SAM7 ها هم یه مثال خیلی خوب هست که دقیقا همین برنامه اقای چان هستش

sajjadoo
19-12-2012, 00:15
ممنون از جوابتون
من هدر برد از سایت گرفتم و با یه ال سی دی 3.2 اینچ راهش انداختم
mmc پشت ال سی دی نصبه برنامه ها رو هم تست میکنم ولی مموریم نمیشناسه
مموریم 512 هست
با sam7x راحت درایوش میکنم ولی اینجا نه
مهندس اگه شماتیک پایه های sd تون تو برنامه بذارید ممنون میشم
شاید اشتباهم از پایه هاست

kamikazi
19-12-2012, 00:21
اینم عکسش چیز خاصی نداره فقط از پایه های sdio استفاده کرده فکر کنم مشکل از هدر برده شاید فقط برای ارتباط spi ساخته شده این پروتکل 2 تا پایه کمتر از ارتباط sdio داره یعنی data2 و data3

در ضمن مهندس SAM7 فقط ارتباط SPI رو پشتیبانی میکنه که راه اندازیش مشکل خاصی نداره ولی میکرو STM32 رابط سخت افزاری SDIO داره که سعرتش خیلی بالاتر از ارتباط SPI هست وقتی راش میندازی تفاوتش رو احساس میکنی چون از DMA بصورت همزمان استفاده میکنه

sajjadoo
19-12-2012, 00:55
مرسی از جواب سریعتون
برای ارتباط spi از کجا میتونم شروع کنم
با کلی مکافات ال سی دی 3.2 راه انداختم و تاچشم تنظیم کردم
اما تو این مورد Sd موندم
بازم ممنون

sajjadoo
19-12-2012, 14:28
مهندس فایل شماتیک برد و ال سی دی ضمیمه کردم
متاسفانه پین D2 توی برد بیرون نکشیده
حالا برا ارتباط Sdio راه حلی برا این برد وجود داره؟
چون تو پروژه میخوام عکس لود کنم اونم بصورت پشت سر هم نیاز به سرعت بالا ارتباط با sd دارم
ممنون میشم راهنماییم کنید

kamikazi
20-12-2012, 16:04
سلام مهندس با این شماتیکی که من دیدم فقط بصورت spi میتونی راش بندازی مگه اینکه بطونی یجوری پینهای d2 رو به ماژول متصل کنی که فکر کنم اینکارو بکنی بهتره چون spi خطاش بیشتر از sdio هستش اینکه این برنامه ای که بالا گفته شده رو برد شما جواب نمیده بخاطر همینه شما باید دقیقا مثل شماتیکی که قرار دادم پایه های سوکت sd رو به میکرو متصل کنید وگرنه باید برید سراغ یه مثال با spi برای راه اندازی fat که خیلی راجبش نمیدونم
در ضمن این نکته هم خیلی مهمه شما سکتوراری 512 بایتی داری که باتوجه به 16 بیتی بودن ماژولت و ابعاد ال سی دیت به مشکلی زیاد برنمیخوری ولی همین که ابعاد ال سی دیت بالا میره ممکنه توابع فت وسط کار هنگ کنه و ادامه عکسو نشون نده دلیلشم اینکه میکرو اس دیتو چندین بلوک 512 بایتی میبینه و هنگامی که میخواد از این سکتور بپره سکتور بعدی تابع f_read کارشو درست انجام نده و ادامه عکسو از دست بدید پس در مورد عکسای 24 بیتی همین مشکل بوجود میاد چون برای نمایش یه پیکسل 24 بیتی باید 3 بایت رو خونده و به عنوان یه پیکسل نمایشش بدید خوب 512 هم که به 3 تقسیم نمیشه پس تو هنگامیکه میخواد برای نمایش یه پیکسل از این سکتور بپره سکتور دیگه مشکل براش پیش میاد راهشم اینکه تو تابع خودت اونجایی که داره از حافظه میخونه رو فورس کنی که حتما FR_OK برگردونه
در مورد عکسای 16 بیتی فکر نکنم مشکلی پیش بیاد چون 512 مضرب درستی از 2 یا همون 2 بایت هستش
امیدوارم منظورم و تجاربمو تونسته باشم منتقل کنم

ali-mo
20-12-2012, 19:13
سلام مهندس این برنامه خیلی خوب کار میکنه شاید مشکل از sd باشه نباید بیشتر از 2 گیگ باشه ها در ضمن من با چنتا اس دی رم مختلف تستش کردم فقط با دوتاش جواب گرفتم فکر کنم مربوط به نوع فرمت کردن اس دیت باشه باید fat فرمتش کنید من با یکی از همین اس دی رم های قدیمی 256 مگ راحت جواب گرفتم
در ضمن اس دیت باید از این 9 پایه ها باشه یه مدل از این قدیمیا هست 7 پینه که فقط بصورت اس پی ای راه اندازی میشه

مهندس مشکل ما که حل نشد دو نوع sd هم تست کردم جواب نداد با فرمت های مختلف.همین sd ها با میکروی lpc2378 و کتابخانه RL-FlashFS تست میکنم جواب میده. مهندس جان میخواستم بدونم شما که بردت کار میکنه , مثلا 50 مگا بایت اطلاعات چند ثانیه طول میکشه توی یه فایل , روی sd رایت بشه؟
با تشکر از شما

sajjadoo
20-12-2012, 19:59
سلام مهندس با این شماتیکی که من دیدم فقط بصورت spi میتونی راش بندازی مگه اینکه بطونی یجوری پینهای d2 رو به ماژول متصل کنی که فکر کنم اینکارو بکنی بهتره چون spi خطاش بیشتر از sdio هستش اینکه این برنامه ای که بالا گفته شده رو برد شما جواب نمیده بخاطر همینه شما باید دقیقا مثل شماتیکی که قرار دادم پایه های سوکت sd رو به میکرو متصل کنید وگرنه باید برید سراغ یه مثال با spi برای راه اندازی fat که خیلی راجبش نمیدونم
در ضمن این نکته هم خیلی مهمه شما سکتوراری 512 بایتی داری که باتوجه به 16 بیتی بودن ماژولت و ابعاد ال سی دیت به مشکلی زیاد برنمیخوری ولی همین که ابعاد ال سی دیت بالا میره ممکنه توابع فت وسط کار هنگ کنه و ادامه عکسو نشون نده دلیلشم اینکه میکرو اس دیتو چندین بلوک 512 بایتی میبینه و هنگامی که میخواد از این سکتور بپره سکتور بعدی تابع f_read کارشو درست انجام نده و ادامه عکسو از دست بدید پس در مورد عکسای 24 بیتی همین مشکل بوجود میاد چون برای نمایش یه پیکسل 24 بیتی باید 3 بایت رو خونده و به عنوان یه پیکسل نمایشش بدید خوب 512 هم که به 3 تقسیم نمیشه پس تو هنگامیکه میخواد برای نمایش یه پیکسل از این سکتور بپره سکتور دیگه مشکل براش پیش میاد راهشم اینکه تو تابع خودت اونجایی که داره از حافظه میخونه رو فورس کنی که حتما fr_ok برگردونه
در مورد عکسای 16 بیتی فکر نکنم مشکلی پیش بیاد چون 512 مضرب درستی از 2 یا همون 2 بایت هستش
امیدوارم منظورم و تجاربمو تونسته باشم منتقل کنم
ممنون مهندس از توضیحاتتون
تمام تلاشم میکنم ببینم میشه...

kamikazi
21-12-2012, 02:31
مهندس برای نمایش یه عکس 800 در 480 بصورت 24 بیتی حدود 2 ثانیه زمان میبره ولی برای خوندن این اطلاعات این اطلاعات خونده شدرو تو چی میخوای کپی کنی من با stm32f103vet6 فقط به اندازه یه بافره 43000 بایتی تونستم اطلاعات کپی کنم برای بیشترش باید برنامتو یجوری بنویسی که که تا 3 بایتو خوند پیکسلو نشون بده بعدش 3 بایت شیفت بده دوباره 3 بایتو بخونه و ...... برای عکسای 16 بیتیم همینطور

ali-mo
22-12-2012, 00:03
مهندس برای نمایش یه عکس 800 در 480 بصورت 24 بیتی حدود 2 ثانیه زمان میبره ولی برای خوندن این اطلاعات این اطلاعات خونده شدرو تو چی میخوای کپی کنی من با stm32f103vet6 فقط به اندازه یه بافره 43000 بایتی تونستم اطلاعات کپی کنم برای بیشترش باید برنامتو یجوری بنویسی که که تا 3 بایتو خوند پیکسلو نشون بده بعدش 3 بایت شیفت بده دوباره 3 بایتو بخونه و ...... برای عکسای 16 بیتیم همینطور

مهندس نمیخوام تو زحمت بیوفتی ! میخواستم بدونم ماکزیمم سرعتی که میتونی اطلاعات تو فایل ذخیره کنی چقدره؟ مثلا اگر کد زیر رو تو میکروت اجرا کنی زمانی که LED روشن میمونه چقدره؟



FILE *Fptr;
char data[512]="";
LED = 1;
for (i=0;i<100000;i++)
fwrite (&data[0], sizeof (char), 512, Fptr);
LED = 0;
fclose(Fptr);

kamikazi
22-12-2012, 09:40
سلام مهندس حدود 1 ثانیه شایدم کمتر من یه عکس 119 در 134 پیکسلو وقتی از روی اس دی بصورت 24 بیتی میخوام بخونم و روی ال سی دی با ssd1963 نمایشش بدم اصلا متوجه لود شدنش نمیشم خیلی سرعتش بالا هستش مهندس یه ضرب و تقسیم بکن ببین چند بایتو خونده

119*134*3 = 47834

mahdi8866
08-01-2013, 23:47
سلام یکی لطف میکنه یه سورسی بذاره که با همین sdio که 4بیتی هست بتونم یه عکس رو با همون فرمت bmp از mmc بخونه البته با السیدی n96 ومیکرو stm32f103
ممنون میشم یه سورسی بذارید اون سورس که اول تاپیک بود تابع خوندن عکس و درایو السیدی رو نداره
منتظرم کارم گیره

mahdi8866
09-01-2013, 12:19
سلام اگه سایتی یا جایی رو میدونید که اون موارد بالا رو راه اندازی کرده بگید ممنون میشم

kamikazi
10-01-2013, 10:54
مهندس سایت این اقای چان یه مثال اماده برای لود کردن عکس bmp و jpeg از روی اس دی کارت با میکرو STM32 رو گزاشته چرا کل تاپیکو مطالعه نمیکنید ؟؟ در ضمن من خودم مثالشو تست کردم هیچ مشکلی هم نداره بجز یه مشکل که اینکه وسط نمایش عکس نشون دادن بقیه عکسو بیخیال میشه این مشکلم از توابع فت هستش یعنی چون تو ارتباط sdio میکرو میاد sd رو 512 بایتی فرمت می کنه و زمانیکه داره بایتهارو از رو اس دی میخونه زمانیکه میخواد از این سکتور بره تو سکتور بعدی ممکنه در این بین خطایی در توابع فت ایجاد بشه که میکرو ادامه خوندن از روی اس دی رو از دست میده راهشم اینکه تو جایی از برنامت که داری بایتهارو از روی اس دی میخونی برنامه رو فورس کنی که حتما FR_OK برگردونه وگرنه دوباره همون خط برنامرو اجرا کنه

این میکرو STM32 یکی از معدود میکرو هایی هست که برای تمام قسمتهاش مثال هست فقط یکم حوصله و زحمت تو سرچ کردن میخواد در ضمن مهندس اینم بدون هر برنامه اماده ای که یکی دیگه تست کرده و جواب گرفته ممکنه به 1000 دلیل رو برد شما جواب نده پس اول تلاش بعدش کمک خواستن ؟؟!!
منم تا اونجایی که تجربم و دانشم یاری میکنه در خدمت دوستان هستم

mahdi8866
10-01-2013, 20:39
سلام خیلی ممنون من کل تاپیک خوندم و اقای چان رو نمیشناسم میشه ادرس همون کدی که برای stm32 هست رو بذاری

kamikazi
11-01-2013, 09:04
ARM controllers, SD MMC cards and Filesystem (You can see links before reply_stm32)

nimaltd
20-01-2013, 13:03
SD_CMD_RSP_TIMEOUT چرا همش موقع init اینو میزنه ؟
100 بار مدارو چک کردم . سالمه

sadmonew
20-01-2013, 19:08
sd_cmd_rsp_timeout چرا همش موقع init اینو میزنه ؟
100 بار مدارو چک کردم . سالمه
سلام
مهندس منظورتون اینه که نمیتونید دیتایی از mmc بخونید یا رو mmc بریزید؟

nimaltd
21-01-2013, 10:46
اره . با sd sandisk بیشتر موقع جواب میده ولی با فیلیپس کلا جواب نمیده
موقع init اررور میده و اصلا نمیشنایه کارتو

nimaltd
22-01-2013, 00:40
او کی..................
فهمیدم چرا کار نمیکنه
راه افتاد

احتمالا هرکی که با این کتابخونه کار کنه همین مشکلو داره
چون یه چیزی کم داره تو کدش
اول باید همه پینهای sdio رو خروجی تعریف کرد و به مدت 200 میلی ثانیه 1 کرد و بعد تابع init و اجرا کنید

nimaltd
24-02-2013, 15:34
همه توابع fatfs کار میکنه غیر از (f_mkfs(0,0,512
هر وقت که اجرا میکنم مموری 2گیگم میشه 63 مگ
به باید (f_mkfs(0,1,512 اجرا کنم تا بشه با کامپیوتر فرمتش کرد
1 ماه هست گیر کردم
یکی نیست کمک کنه ؟cry::

mostafazaker
26-10-2013, 13:02
سلام
من طبق نقشه شماتیکی که گذاشتید مدار رو بستم و برنامه پست اول رو ریختم روی آیسی .ولی نتونستم جواب بگیرم.
sd هم عوض کردم باز جواب نداد.
لطفا بیشتر راهنمایی کنید.

kamikazi
26-10-2013, 14:35
یه مشکلی که خودمم اون موقع داشتم با این اس دی کارتهای جدید نتونستم برنامرو اجرا کنم با یه اس دی کارت 256 مگ قدیمی برنامم جواب داد دلیلشو هم نمیدونم اگر میتونید با اس دی کارتهای قدیمی تست کنید احتمالا بستگی به نوع فرمت کردن داره

mostafazaker
26-10-2013, 15:22
خب اینجا یه مشکل به وجود میاد اگه با sd های جدید کار نکنه که به درد نمیخوره.چون از کجا باید بریم sd قدیمی گیر بیاریم.
اگه یه برنامه باشه که با sd های جدید کار کنه عالی میشه.

kamikazi
26-10-2013, 16:17
من کامل مطمعن نیست که از قدیمی و یا جدید بودن اس دی کارت باشه شاید از فرمت کردنش باشه شما هیچ فایلی داخل اس دی کارتتون ساخته نمیشه؟

sadmonew
26-10-2013, 17:15
خب اینجا یه مشکل به وجود میاد اگه با sd های جدید کار نکنه که به درد نمیخوره.چون از کجا باید بریم sd قدیمی گیر بیاریم.
اگه یه برنامه باشه که با sd های جدید کار کنه عالی میشه.
سلام
مشكلي با sd جديد نداره! تست كردم مشكلي نداشت.
شايد اتصالات بين ميكرو و sd درست وصل نشدن.

mostafazaker
26-10-2013, 20:15
هیچ فایلی ساخته نمیشه.
در مورد اتصالات هم چک کردم مشکلی نداشت.
همین برنامه رو تست کریدید؟
آخه یک نفر نوشته بود باید 200 میلی ثانیه همه پین های sdio رو 1 کنیم.این کار رو هم کردم نشد.

mostafazaker
27-10-2013, 11:07
راستی این هم بگم که آیسی من stm32f103vet6 هست که 100 پایه داره.

kamikazi
27-10-2013, 12:34
مشکلی نداره من تو یکی از پست ها یه برد برای vet6 گزاشته بودم من با همون برد تست کردم خیلی خوب هم جواب داد فقط خودت یه سرچ بکن پیداش میکنی

mostafazaker
27-10-2013, 14:21
متغییر res رو خوندم.
زمانی که sd متصل هست عدد 1 رو برمیگردونه و زمانی که sd قطع هست عدد 3.
میدونید این اعداد نشانگر چه خطایی هستند.
در ضمن من روی برد بورد sd رو متصل کردم.
با اسکوپ پایه کلاک رو چک کردم کلاک داشت.
دیگه نمیدونم مشکل از چیه...:unh:

kamikazi
27-10-2013, 15:29
مهندس اصلا نگران نباش بیا این برنامرو تست کن که داغ داغ هستش همین الان با بردم تست کردم هر چی داخل اس دی کارت باشه رو تو پورت سریال نشون میده اگر این روی بردتون جواب نده قطعا اتصالاتتون مشکل داره میکروم stm32f103vet6 هستش و اس دی کارت 2 گیگ روی بردم هستش برنامه هیچ پایه کنترلی غیر از پایه های sdio نداره منظورم پایه شناسایی اس دی کارت هستش هیچی نمیخواد

mostafazaker
28-10-2013, 09:25
مهندس اصلا نگران نباش بیا این برنامرو تست کن که داغ داغ هستش همین الان با بردم تست کردم هر چی داخل اس دی کارت باشه رو تو پورت سریال نشون میده اگر این روی بردتون جواب نده قطعا اتصالاتتون مشکل داره میکروم stm32f103vet6 هستش و اس دی کارت 2 گیگ روی بردم هستش برنامه هیچ پایه کنترلی غیر از پایه های sdio نداره منظورم پایه شناسایی اس دی کارت هستش هیچی نمیخواد

سلام
مهندس دستت درد نکنه جواب داد.:o

mahdi8866
28-10-2013, 17:52
سلام
kamikazi (You can see links before reply)
من دفعه قبل یه سئوال کردم که خوب منظورم رو نرسونده بودم الان این پروژه ای که بالا اپ کردید رو که برای راه اندازی sdio هست درسته ؟ منظورم spi نیست
و نیاز من اینکه در پروژه شما کتابخانه ال سی دی مثلا n96 باشه و به عنوان مثال در main یک عکس هم از mmc بخونه ونمایش بده چجوری بگم در کتابخانه السی دی ها تابع خوندن عکس از رم sd یا mmc نیست فقط تابع خواندن عکس از فلش داخلی میکرو هست
حالا من میخوام یه در همین پروژت یه تابعی یا دستوری بذاری که عکس رو از رم بخونه همین
ممنونم از زحمات شما

kamikazi
29-10-2013, 09:41
سلام حالت کلیشو بهتون میگم که باید عکستونو با فرمت bmp به باینری تبدیل کنید که اقا صادق برنامشو تو فروم راندازی ssd1963 اپ کرده بگردی توش تابعی که من برای نشون دادن عکس از اس دی کارتو گزاشتم که حالت کلیش اینه که بعد از تبدیل عکس به فایل باینری هر 16 بیتی که از این فایل باینری بخونید اطلاعات یک پیکسلتون هستش همینجوری به ترتیب که بخونید میتونید عکسو پیکسل به پیکسل نشون بدین البته اینکار یه مشکلاتی هم داره که اولیش همین خوندن 16 بیت 16 بیت هستش با توجه به 512 بایتی بودن سکتورها بعد از پرش از یک سکتور به یه سکتور دیگه ممکنه توابع فت خطا دریافت کنن و میکرو نتونه بقیه عکسو نشون بده این مشکلو خودتون باید حل کنید البته یه برنامه ای هم سایت اقای چان در مورد خوندن عکس jpeg و نمایش مستقیمش داده ولی این برنامرو هم که من اجرا میکردم بعضی عکسارو نصفه نشون میداد که همون از دست دادن ارتباط توابع فق با اس دی کارت رو نشون میده برای حل این مشکل راهی به نظرم نرسید خودتون باید حلش کنید این تابعی که معرفی میکنم برای حالت راهندازی 24 بیتی ssd1963 هستش برای 16 بیتی یکم تغییرات میخواد

void Show_bmp_pic_from_sd(u16 x0, u16 y0, u16 x_Width, u16 y_Height,char *Filename ) {

unsigned int x,y;

f_mount(0,&fs);
if ( f_open( &fsrc , Filename , FA_OPEN_EXISTING | FA_READ) == FR_OK)
{
br=1;
counter =0;
for(x=0;x<x_Width;x++)
{
for(y=0;y<y_Height;y++) {
f_read(&fsrc, buffer, 3 , &br);
pixel =(uint32_t)(( buffer[0]<<16)+(buffer[1]<<8)+buffer[2]);
SSD1963_SetPixel(x+x0,y+y0,(uint32_t) pixel );

counter = counter + 3 ;
f_lseek ( &fsrc , counter ) ;

}
}
}
else Show_bmp565_pic_from_sd(x0, y0, x_Width, y_Height, Filename );
f_close(&fsrc);
}

mostafazaker
04-11-2013, 20:58
سلام
یه سوال من میخوام یه فایل text که میسازم متنی رو که مینویسم به متن قبلی اضافه بشه و دیتای قبلی رو نگه داره دیتای جدید رو توی خط بعد اضافه کنه.
با دستور write که این کار رو میکنم دیتای قبلی پاک میشه.چجوری باید این کا رو بکنم؟
میخوام میکرو اگه ریست شد بره و دیتا رو ادامه بده و پاک نشه.
ممنون

kamikazi
05-11-2013, 09:07
سلام
یه سوال من میخوام یه فایل text که میسازم متنی رو که مینویسم به متن قبلی اضافه بشه و دیتای قبلی رو نگه داره دیتای جدید رو توی خط بعد اضافه کنه.
با دستور write که این کار رو میکنم دیتای قبلی پاک میشه.چجوری باید این کا رو بکنم؟
میخوام میکرو اگه ریست شد بره و دیتا رو ادامه بده و پاک نشه.
ممنون
شما باید بگردید تو توابع فت و این تابع رو گیر بیاری خیلی از توابع فت هستن که ما اصلا استفاده نمیکنیم و کارایی شو نمیدونیم حتما به سایت اقای چان یه سر بزنید تمام توابع رو توش توضیح داده با جزییاتش

mdgr
22-07-2014, 12:52
مهندس اصلا نگران نباش بیا این برنامرو تست کن که داغ داغ هستش همین الان با بردم تست کردم هر چی داخل اس دی کارت باشه رو تو پورت سریال نشون میده اگر این روی بردتون جواب نده قطعا اتصالاتتون مشکل داره میکروم stm32f103vet6 هستش و اس دی کارت 2 گیگ روی بردم هستش برنامه هیچ پایه کنترلی غیر از پایه های sdio نداره منظورم پایه شناسایی اس دی کارت هستش هیچی نمیخواد

سلام مهندس ممنون از زحمات شما .
من از میکرو stm32f103ret6 و microsd هم از kingmax 2GB استفاده می کنم تو اینترنت خیلی سرچ کردم مثال های زیادی برای راه اندازی sd card با ارتباط sdio پیدا کردم و تست کردم و جواب نگرفتم .
مدار رو مطابق شماتیکی که گذاشته بودین بستم sd رو با fat فرمت کردم و این مثال رو هم تست کردم اما پاسخ sd به cmd55 مقدار 0 است یعنی انگار sd اصلا جوابی نمیده پایه های clk و cmd رو با اسکوپ چک کردم هم کلاک داریم هم cmd ارسال میشه اما جوابی نمیاد.
از کامپایلر keil4.7 استفاده می کنم و با flash loader میکرو رو پروگرم میکنم آیا امکانش هست که مشکل از کامپایلر باشه؟ من چه چیزه دیگه ای رو باید تست کنم؟؟؟
ممنون میشم ازتون اگه راهنماییم کنید.

kamikazi
22-07-2014, 13:15
سلام شما مثال منو استفاده کردین روی هایپر ترمینال چی مینویسه؟
راجب سخت افزارتونم یه توضیحی بدین خودتون بستین ؟

mdgr
22-07-2014, 13:34
بله همین مثالی که در پست 45 گذاشتین
از هدر برد eca استفاده می کنم که طبق شماتیک پایه های sdio رو به یک microSD متصل کردم
روی هایپر ترمینال هم فقط file system(Tini-FatFa0.07C) starting! نمایش داده میشه

kamikazi
22-07-2014, 16:06
شاید تو اس دی کارتت چیزی نیست؟ یه فایلی چیزی بنداز ببین چی میشه

mdgr
22-07-2014, 16:18
تو sd دوتا فایل txt هست . مشکلم تو دستور cmd55 برای sdio هست. از sd صفر دریافت می کنم.
شما از دستور 55 جواب چی دریافت کردید؟
تو تابع CmdResp1Error تابع GetCommandResponse() مقدار صفر رو بر می گردونه.

kamikazi
22-07-2014, 17:04
مهندس شما این فایل هگزو میریزی رو بردت چه اتفاقی تو هایپر ترمینالت میافته اینو بگو؟

mdgr
22-07-2014, 17:08
روی هایپر ترمینال فقط file system(Tini-FatFa0.07C) starting! نمایش داده میشه
ممنون از پیگیری تون

mdgr
23-07-2014, 13:24
سلام من طبق document که از سایت sd گرفتم با دستکاری register ها دستورات رو ارسال کردم انگار کلا sd رو نشناخته.
مدار رو طبق شماتیک بستم. از همین sd هم spi جواب گرفتم.
تو پایه کلاک خروجی کلاک رو دارم و تو پایه cmd هم دستورات ارسال میشه.
جایی دیدم که بین vdd و gnd خازن گذاشته ایا ضروریه بودنش؟
دیگه نمیدونم کجاش اشکال داره
میشه راهنماییم کنید؟؟

mdgr
23-07-2014, 14:55
سلام مهندس آیا فرقی بین micro sd ها با حجم 2GB میکنه؟
شما با چه microsd جواب گرفتین؟
ممنون میشم راهنماییم کنید

kamikazi
23-07-2014, 15:39
نه اس دی ها با هم هیچ فرقی نداره شاید مشکل از بستن مدارتون هستش احتمالا چون جدا از برد بستین به مشکل خوردین فاصله اس دی کارت از برد زیاده ؟ نباید بیشتر از 10 سانت بشه

mdgr
23-07-2014, 16:18
نه مهندس فاصلش 4 سانتی متره من یه سوکت دیگه رو دارم امتحان می کنم شاید جواب بگیرم

mdgr
16-08-2014, 18:57
سلام مهندس
داخل برنامه این کد هست. آیا به جایی وصله که ریست شده؟ اگر کاربردشو بگین ممنون میشم. داخل تابع sd_init این کد هست

{
GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_ResetBits(GPIOB, GPIO_Pin_5) ;
}

ممنون

mzelecom
16-11-2014, 12:10
سلام
من با
stm32f103ret6 جواب گرفتم.
الان آیسی که دارم این هست stm32f103r6t6 و آیسی رو به micro sd متصل کردم.حالا هر کاری میکنم جواب نمیده خط
Status = SD_Init(); رو که اجرا میکنه دیگه قفل میکنه.
حتی چک کردم اگه فقط SDIO_Init هم بزارم باز قفل میکنه.
پایه کلاک sdio رو هم چک کردم پالس نداره.توی کیل آیسی رو چک کردم درست انتخاب شده.
به نظرتون مشکل از کجاست.؟
ممنون

sadmonew
16-11-2014, 13:47
سلام
من با
stm32f103ret6 جواب گرفتم.
الان آیسی که دارم این هست stm32f103r6t6 و آیسی رو به micro sd متصل کردم.حالا هر کاری میکنم جواب نمیده خط
Status = SD_Init(); رو که اجرا میکنه دیگه قفل میکنه.
حتی چک کردم اگه فقط SDIO_Init هم بزارم باز قفل میکنه.
پایه کلاک sdio رو هم چک کردم پالس نداره.توی کیل آیسی رو چک کردم درست انتخاب شده.
به نظرتون مشکل از کجاست.؟
ممنون
سلام مهندس
قابليت SDIO فقط در ميكروهاي High Density وجود داره.
You can see links before reply

sajjad_AD
17-02-2015, 20:36
سلام آقا من این مموری پر سرعت (You can see links before reply) رو از جوان گرفتم ولی با مود sdio راه نمیوفته در حالی مموری معمولی که میذارم رو میکرو کار می کنه ممکنه بعضی مموری ها رو نشه با sdio راه انداخت؟

nima72
11-06-2016, 10:17
سلام، ببخشید میدونم این تاپیک قدیمیه ولی من دقیقا به همین مشکل بر خوردم، شما مشکلتون حل شد؟

nima72
11-06-2016, 22:08
نه مهندس فاصلش 4 سانتی متره من یه سوکت دیگه رو دارم امتحان می کنم شاید جواب بگیرمسلام، ببخشید میدونم این تاپیک قدیمیه ولی من دقیقا به همین مشکل بر خوردم، شما مشکلتون حل شد؟