اطلاعیه

Collapse
No announcement yet.

آموزش اتصال حافظه فلش مموری usb (کول دیسک) به میکرو avr

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

    آموزش اتصال حافظه فلش مموری usb (کول دیسک) به میکرو avr

    سلام
    این آخرین تاپیک من تا چند ماه آینده است. پنج شنبه میرم سربازی و معلوم نیست کی برگردم :cry2:
    حالا
    امروز یهو به سرم زد کول دیسک رو به avr بزنم و یه سری فایل روش بسازم ازش بخونم و خلاصه رفتم دنبالش.

    خلاصه تخصصی تر بگم برای این کار شما نیاز به usb host دارید که خودش مشکلیه و من قدیما آی سی CH376 رو آوردم حتی باهاش نتایجی هم گرفتم ولی به جایی نرسید. یه وقتایی بدون مشکل تا 128کیلوبایت فایل ساختم و یه وقتایی میدیدم که فایل رو ناقص ساخته و 1 بایته و وقتی فایل رو هم باز میکنی اررور میده که معنیش اینه که عملیات ایجاد فایل ناقص بوده. سورس کارهایی که با این آی سی هم انجام دادم اینجاست.




    و اما راه حل اصولی و اقتصادی استفاده از آی سی های at90usb سری 7 هستش مثل at90usb647 - at90usb1287 که دارای usb host هستند.
    تا ظهر این برد رو ساختم که یه تکه از STK525 هستش چون مثالهای اتمل برای این برد نوشته شده. البته من نقشه بردی رو که ساختم رو هم براتون میزارم.


    اینم نقشه چیزی که ساختم
    stk525 simple
    اینم pcb برد تبدیل که استفاده کردم
    convert 64 pin

    بعد از ساخت برد فایل برنامه زیر که همون application note AVR287 هستش و من توی avrstudio 5 کامپایلش کردم توسط flip پروگرام کردم.
    first test application note avr278
    در مورد برنامه بگم که فایل اورجینال رو وقتی باز میکنید یکم گیر داره تا کامپایل بشه. یکی از عیبهای مثالهای اتمل همیشه تو فایل power_drv.h هستش که برای ماکروها پرانتز اضافی گزاشته که باید پاک کنید. اگه این کار رو نکنید اررورهای عجیبی میبینید.
    فایلهای اورجینال رو از لینک زیر دانلود کنید:
    َAVR287 Zip file
    AVR287 pdf doc
    توی این فایل zip چند تا مثال هست که ما با STK525-series7-host_ms_device_ms-2_0_8-doc کار داریم و بقیه به ما ربطی نداره و چند مثال در مورد mouse usb هستش که با این میکرو ساخته من تست کردم فقط کلیک چپ داشت.



    حالا نوبت به توضیحات پروژه ابتدایی میرسه.
    اول باید بدونید ، اینکه کنترلر usb این میکرو در مد master باشه یا slave توسط پین UID کنترل میشه. با توجه به گفته دیتاشیت :


    کد:
    After a hardware reset, the USB controller is disabled. When enabled, the USB controller has to
    run the Device Controller or the Host Controller. This is performed using the USB ID detection.
    
    • If the ID pin is not connected to ground, the USB ID bit is set by hardware (internal pull up on 
    the UID pad) and the USB Device controller is selected.
    • The ID bit is cleared by hardware when a low level has been detected on the ID pin. The 
    Device controller is then disabled and the Host controller enabled.
    
    The software anyway has to select the mode (Host, Device) in order to access to the Device
    controller registers or to the Host controller registers, which are multiplexed. For example, even
    if the USB controller has detected a Device mode (pin ID high), the software shall select the
    device mode (bit HOST cleared), otherwise it will access to the host registers. This is also true
    for the Host mode.


    پس قبل از استفاده از این پروژه باید پایه UID رو توسط جامپر مربوط به مد host یا device که تو نقشه گزاشتم به زمین وصل کنید تا host بشه.
    بعدش فلش رو به پورت مربوطه بزنید.
    بعد از اون پورت سریال میکرو رو به کامپیوتر وصل کنید و با هایپرترمینال رو سرعت 57600 میتونید با دستورات زیر توی فلش فایل بسازید و ...
    توجه کنید که تو این پروژه درایو b درایو فلش تعریف شده.


    کد:
    Using the shell terminal
    Connected to a serial terminal emulator the Usheel command line interpreter allows to:
    Navigate in the file system (both on-board dataflash and a USB mass storage device connected to the USB host interface). The following commands are supported:
    a: , b: ... goto selected drive
    cd dirname
    ls
    touch filename
    append filename
    mark: bookmark current directory
    cp filename: copy filename to bookmark
    rm filename: erase file or empty directory
    format drivename, with drivename: a, b...
    deltree dirname
    cat filename
    cd..
    mount disk(a,b,..)
    mkdir dirname
    disk: get number of drives
    goto: goto bookmark
    df: get free space information
    cat filename
    rm*: rm *
    Get information about the connected device and misc commands
    lsusb
    suspend: suspend USB bus activity
    resume: resume USB bus activity
    reboot: reset the application
    For more information about File System module see File System


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

    #2
    پاسخ : آموزش اتصال کول دیسک به میکرو avr

    درود آقای mostafahk !
    ببخشید میشه pcb برد تبدیلتون رو توی ares با فرمت ورژن های قبلی سیو کنید و پ کنید ؟؟
    با تشکر
    میشه به جای امضا انگشت بزنم ؟؟؟

    دیدگاه


      #3
      پاسخ : آموزش اتصال کول دیسک به میکرو avr

      نوشته اصلی توسط کیان
      درود آقای mostafahk !
      ببخشید میشه pcb برد تبدیلتون رو توی ares با فرمت ورژن های قبلی سیو کنید و پ کنید ؟؟
      با تشکر
      سلام
      ممنون از لطف همتون.
      انجام شد.
      بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
      اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

      دیدگاه


        #4
        پاسخ : آموزش اتصال کول دیسک به میکرو avr

        نوشته اصلی توسط baby_1
        سلام
        در مورد برنامه نویسیش می شه توضیح بدین آخه من bascom نویس هستم اما امیدوارم بتونم با دونستن روش برنامه نویسی این تراشه ها و کنترلر ها با زبان bascom این سخت افزار رو درست کنم
        خوب من خودم از برنامه نویسیش سر در نمیارم چون باید پروتکلهای ارتباطی فلش مموریها که ظاهرا چند نسل تا حالا داشتن رو بدونید و تازه شروع به پیاده سازی کنید. من فقط قصد دارم طرز استفاده از کتابخانه ای رو که اتمل ارائه کرده یاد بگیرم و در این مورد نمیتونم کمکتون کنم.

        نوشته اصلی توسط کیان
        دوست عزیز خیلی ممنون!
        شما این برد رو با روش اتو در آوردید ؟؟
        شما هم گیر دادید به این برده ها. نه با دست همش رو کشیدم و یکم copy - past
        بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
        اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

        دیدگاه


          #5
          پاسخ : آموزش اتصال کول دیسک به میکرو avr

          نوشته اصلی توسط داریوش عباسی
          فکر کنم فایل مدار چاپی شما با پرتل 2010 کشیده شده و کسانی که مثل من با 2004 کار می کنند نمی تونن اون رو باز کنند .
          اگه میشه با فرمت پایینتر ذخیره کنید و دوباره بذاربد .
          بله با dxp 2009 کشیدم و تبدیلش کردم الان به فرمت 99se میتونید دانلود کنید.


          در ادامه تحقیقات متوجه شدم این سیستم مبتنی بر کتابخانه file system اتمل هستش که برای آشنایی با ساختار این کتابخانه که FAT12/16/32 رو ساپورت میکنه باید به application note avr114 مراجعه کنید که کلا در مورد ساختار این کتابخونه خیییییلی پیشرفته توضیح داده. این کتابخونه میتونه همزمان چند device رو ساپورت کنه. مثلا میتونه همزمان فایل رو از sd card بخونه و در mass storage ذخیره کنه (با فرمت fat های متفاومت هم باشن میتونه).



          AVR114: Using the ATMEL File System management for AT32UC3x, AT90USBx and ATmega32U4

          در این پست ساختار این کتابخونه رو که اینترفیس ما با هر نوع مموری چه sd و چه mass storage رو برعهده داره بررسی میکنیم.

          به گفته اتمل این کتابخونه خیلی خفنه ولی برای میکروهای 8 بیتی یکم ازش زدن تا ظرفیت برنامش به کمتر از 15 کیلوبایت و ظرفیت رم مورد نیازش به حدود 800 بایت برسه.
          با این کتابخونه میشه همزمان با چند فایل کار کرد.
          از نامها Unicode فایلها هم پشتیبانی میکنه که معنیش اینه که میتونی فایلها رو فارسی نام گزاری کنید.
          تا 2 ترابایت مموری رو پشتیبانی میکنه و هر فایل میتونه تا 4 گیگابایت حجم داشته باشه.
          و خیلی چیزای دیگه که باید تو فایل بالا بخونید.



          منطق این کتابخونه بر مبنای navigation handle بنا شده که هر navigation یک جریان فایل مستقله که باهاش میشه یک فایل یا فولدر رو باز کرد یا پاک کرد و ... در واقع navigation ها مثل tab های باز شده در task bar ویندوز هستند که شما میتونید تو ویندوز چند فایل یا فولدر رو باز داشته باشید.
          هر navigation handle فقط 40 بایت از ram شما رو اشغال میکنه.



          هر navigation میتونه از یک سخت افزار متفاومت باشه. مثلا یکی از sd card و دیگری از mass storage و دیگری از floppy و ... که اینجا بهش disk number خطاب میشه در واقع disk number همون driver letter تو ویندوز هستش که به جای a,b,c,d میگیم 0,1,2,3,... .

          navigation ها ذاتا برای هر چه شبیه تر شدن سیستم این کتابخونه با محیط ویندوز طراحی شدن. طوری که شما میتونید یا یک navigation پوشه ای رو explore کنید و navigation فایلها و folder های داخل اون رو براتون لیست میکنه که بهش file list خطاب مبشه و شما با دستورات ساده next/prev میتونید داخل این لیست حرکت کنید. فایل لیست حاوی فایلها و پوشه ها به صورت درهم هستش.



          اگه شما فایلی رو باز کنید دیگه امکان حرکت تو file list رو ندارید و file list برای شما lock میشه.



          هر navigation دارای اطلاعاتی درون خودش هست :
          1. disk number
          2. شناسه ای از پوشه ای که باز شده
          3. ایندکس فعلی file list
          4. فلگ مربوط به lock یا unlock بودن
          5. محلی در فایل در صورت باز بودن یک فایل (همان read/write index )

          وقتی یک مموری باز میشه به صورت پیش فرض در root قرار دارید. شما میتونید در لیست حرکت کنید و با دستور nav_cd که به تقلید از دستور cd در dos اسمش انتخاب شده وارد فولدر مورد نظر بشید و یا به پوشه قبلی برگردید به وسیله دستور مشابه دستور dos که cd.. بود. (بعدا توابع رو دقیق میگم)

          تا اینجا همش مقدمه بود :mrgreen:



          ساختار کتابخانه



          در پایین ترین لایه این کتابخانه ماژول FAT قرار دارد که وضیفه مدیریت فایلها و پوشه ها را به صورت کاملا ابتدایی و ضعیف برعهده دارد. شما اجازه دسترسی به هیچ یک از توابع این ماژول را ندارید.

          در سطوح بالاتر ماژولهای Navigation و File قرار دارند.
          ماژول navigation امکانی شبیه به explorer را در ویندوز به وجود میاورد. به این صورت که محتویات پوشه را لیست میکند و اطلاعات مثل حجم و تاریخ ساخت فایل و ... را میدهد و کارهای شبیه به این.

          ماژول فایل امکاناتی جهت خواندن و نوشتن در فایل را به شما ارائه میدهد.

          ماژول memory :
          پیوند این کتابخانه با سخت افزار حافظه ( از هر نوع حافظه، چه sd card و ...) از طریق ماژول ctrl_access انجام میشود که توابعی جهت خواندن و نوشتن در حافظه را دارا است. شما باید سخت افزار حافظه مورد نظرتان را برای استفاده در این کتابخانه به این فایل بشناسانید. این فایل توابع زیر را از سخت افزار شما طلب میکند.


          کد:
          The interfaces with the memory are: 
          • mem_test_unit_ready(), to check the memory state 
          • mem_wr_protect(), to check the memory write protection 
          • memory_2_ram(), to read the memory 
          • ram_2_memory(), to write in the memory 
          All routines are described in ctrl_access.h file.


          کنترل خطاها Error Control در این کتابخانه
          بسیاری از توابع این کتابخانه فقط مقدار TRUE یا FALSE را برمیگردانند و شما برای پیدا کردن علت بروز خطا باید به متغییر fs_g_status مراجعه کنید که از جزئیات خطای بوجود آمده باخبر شوید. همچنین لیستی از خطاهای ممکن در فایل fs_com.h وجود دارد.



          پیکربندی و تنظیم عملکرد کتابخانه
          پیکربندی کتابخانه از طریق فایل conf_explorer.h انجام میشود که شما برای مدیریت سرعت و حجم کتابخانه میتونید امکاناتش رو کم و زیاد کنید.
          مثلا میتونید کتابخونه رو readonlyfile کنید و توابع write و حذف کنید و یا FAT12 که دیگه استفاده نمیشه ور غیرفعال کنید تا حدود 1 کیلوبایت حجمش کم بشه و ... تو خود فایل کامنتهای کاملی داره که باید مطالعه کنید. البته اگه با حجم کتابخونه مشکل ندارید باهاش کار نداشته باشید




          مثالهایی از کار با کتابخانه

          انتخاب یک navigation با دستور nav_select انجام میشه که شماره navigation رو باید بهش بدید. توجه کنید که شما نمیتونید از تعداد ماکزیمم که در بخش پیکربندی تعیین کردید بیشتر navigation داشته باشید. تنظیم FS_NB_NAVIGATOR در فایل conf_explorer.h برای این موضوع هستش.
          فعال و غیرفعال کردن کتابخانه با توابع زیر انجام میشه :


          کد:
          initialize :
          nav_reset();


          قبل از متوقف کردن کتابخانه حتما فایلهای باز را ببندید و با تابع fat_cache_flush() حافظه cash مربوط به حافظه FAT رو تخلیه کنید. در غیر اینصورت امکان بروز مشکل برای حافظه شما وجود داره و ممکنه فایلی که ذخیره کردید از بین بره.

          کد:
            // If you have opened files then close them 
            // Flush data eventually present in FAT cache 
            nav_exit();



          بررسی وضعیت دیسک
          برای اطمینان از عملکرد دیسک استفاده از دو تابع الزامی است.
          ابتدا nav_drive_set() که باید device number رو بهش بدید تا چک کنه که اصلا چنین device ی اصلا وجود خارجی داره یا نه. البته این تابع کار زیاد خاصی انجام نمیده و بیشتر فلگهای کتابخانه رو بررسی و تغییر میده.
          دوم تابع nav_partition_mount() که کار اصلی رو انجام میده و اگه تو مرحله قبل کار با موفقیت انجام شده باشه چک میکنه که آیا دیسک وصله؟ سالمه؟ اصلا سیستم FAT روش هست؟ و ... و ارور رو تو fs_g_status میریزه ( در صورت وجود ) کلا خود اتمل یه تابع داده که عملیات رو دقیق تشریح میکنه


          کد:
           Bool check_disk( U8 lun )
          {
            nav_select(0); // Select navigator ID 0 for this sequence
          
            if( !nav_drive_set(lun) )
            {
             printf("Driver memory no available\n");
             return FALSE;
            }
            // Here the memory is selected
            
            if( !nav_partition_mount() )
            {
             switch( fs_g_status )
             {
               case FS_ERR_HW_NO_PRESENT:
               printf("Disk not present\n");
               break;
               case FS_ERR_HW:
               printf("Disk access error\n");
               break;
               case FS_ERR_NO_FORMAT:
               printf("Disk no formated\n");
               break;
               case FS_ERR_NO_PART:
               printf("No partition available on disk\n");
               break;
               case FS_ERR_NO_SUPPORT_PART:
               printf("Partition no supported\n");
               break;
               default :
               printf("Other system error\n");
               break;
             }
             return FALSE;
            }
            // Here the partition on memory is mounted and the navigator is on root dir
            
            return TRUE;
          }


          [hr]

          استفاده از path
          تابع nav_setcwd() برای تعیین path فعلی navigation است که میتوانید ساختارهای زیر را داشته باشد.


          کد:
          • "name.txt" to search a file or a directory in the current directory 
          • "nam*" to search the first file or directory with matching name in the current 
          directory 
          • '\' and '/' are equivalent and supported 
          • "name\" to search a directory in the current directory and enter in that 
          directory 
          • "name2.txt" to search a file in current directory 
          • "\name2.txt" to search a file in root directory 
          • "./" is supported but it is not mandatory 
          • "../../" is supported 
          • "A:\" is supported, 'A' corresponding to disk 0


          و خود اتمل مثال زیر رو براش داده


          کد:
           Bool search_path( void ) 
          { 
            const _MEM_TYPE_SLOW_ U8 path[]="dir1/file.txt"; 
            
            nav_select(0);             // Choose a free navigator 
            
            // Select a disk and mount it 
            nav_drive_set(1); 
            nav_partition_mount(); 
            // HERE the navigator is in root dir 
           
          #if( (FS_ASCII == ENABLED) && (FS_UNICODE == ENABLED) ) 
            nav_string_ascii(); // Select a ASCII name format 
          #endif 
           
            // search file "dir1/file.txt" in current dir of disk 1 
            if( !nav_setcwd( (FS_STRING)path , TRUE, FALSE ) ) 
             return FALSE; 
           
            return TRUE; 
          }


          بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
          اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

          دیدگاه


            #6
            پاسخ : آموزش اتصال کول دیسک به میکرو avr

            سلام
            و اینک ادامه ماجرا
            من کلی آزمایشات جورواجور انچام دادم و بالاخره توسنستم یه پروژه تست برای خودم بنویسم.
            این پروژه به این صورته که هر بار فلش رو وصل کنید میاد تو دو تا پوشه تو در تو یه فایل میسازه یه جمله رو هی تکراری توش مینویسه و بعدش LED رو روشن میکنه که یعنی کار تمومه. بعد اگه مدار رو خاموش و روشن کنید دوباره این کار رو انجام میده ولی اطاعات به انتهای فایل قبلی اضافه میکنه (Append) .

            my test

            موضوع اینه که چند تا مشکل هست :
            1. قبل از بستن فایل حتما باید file_flush() رو صدا بزنید وگرنه تغییرات یه بار در میون تو فایل save نمیشن :surprised: این موضوع رو avr114 نگفته فقط گفته اگه خواستید سیستم رو تعطیل کنید قبلش فایلها رو ببندید. خلاصه در این مورد من معتقدم یه باگ کوچیکه یا داکیومنتها کامل نیستند.

            2. چیز دیگه ای به ذهنم نرسید

            [hr]

            حالا بریم سراغ بررسی این مثال ببینیم چی نوشتم


            کد:
            void user_task()
            {
            	static char created = 0;
            	int i = 0 , r;
            	char msg[] = "this is mostafa heidary.\r\nEmail:mostafa.hk@gmail.com\r\n";
            	
            	nav_reset();
            	if( check_disk(0) == TRUE )
            	{
            		if(created)
            			return;
            		
            		if(nav_setcwd("test folder/inner folder/" , FALSE , TRUE) != TRUE)
            		{
            			printf("mkdir:%d\n" , fs_g_status);
            			return;
            		}
            		
            		nav_file_create("second mass storage test.txt");
            		
            		if(file_open(FOPEN_MODE_APPEND) != TRUE)
            		//if(file_open(FOPEN_MODE_W) != TRUE)
            		{
            			printf("fileopen:%d\n" , fs_g_status);
            			return;
            		}
            		
            		/*printf("please enter file content : \n");
            		// get message from user
            		for(i = 0 ; i < sizeof(msg) ; i++)
            			msg[i] = uart_getchar();*/
            		printf("Writing...\n");
            		for( ; i < 8000 ; i++)
            		{
            			r = file_write_buf( msg , sizeof(msg) );
            			if(r == 0)
            			{
            				printf("write:%d\n" , fs_g_status);
            				return;
            			}
            		}
            		
            		file_flush();
            		file_close();
            		
            		printf("\rdone\rfile size : %d\n" , nav_file_lgtsector());
            		created = 1;
            		Led0_on();
            	}
            	else
            	{
            		Led0_off();
            		created = 0;
            	}		
            }


            در حال ویرایش
            بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
            اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست

            دیدگاه


              #7
              پاسخ : آموزش اتصال حافظه فلش مموری usb (کول دیسک) به میکرو avr

              سلام
              آقای حیدری ما همچنان منتظر ادامه مطالب شما در خصوص این موضوع هستیم
              ممنون
              مشخصات من در لینک زیر
              http://www.eca.ir/forum2/index.php?topic=1721.msg698645#msg698645

              www.********

              دیدگاه


                #8
                پاسخ : آموزش اتصال حافظه فلش مموری usb (کول دیسک) به میکرو avr

                سلام
                بنظرم از تراشه VNC1L هم میتونید استفاده کنید.

                دیدگاه


                  #9
                  پاسخ : آموزش اتصال حافظه فلش مموری usb (کول دیسک) &

                  از اینجا به بعدش رو تا جایی که بتونم منم کمک میکنم
                  فعلا یه PCB گذاشتم که البته یه سری الماناش اضافه اس
                  در ضمن آی سی به صورت آینه ای شده تا بشه با روشهایی مثل اتو درش آورد.
                  کتابخونش واقعا حرف نداره هم میشه فلدر ساخت هم فایل هم میشه کپی و کات کرد هم میشه فایل ها رو خوند...


                  کد:
                  [left]             "HELP         Provides Help information for Ushell commands." \
                                 " !           Previous command (history)." \
                                 " $           Next command (history)." \
                                 "\r\n---- File Systems Commands:" \
                                 " DISK         Displays the number of drives." \
                                 " DF          Displays free space of all connected drives." \
                                 " FORMAT [/A:]     Formats drive, /A drive letter (a, b, etc.)." \
                                 " MOUNT [/A:]      Mounts drive, /A drive letter (a, b, etc.)." \
                                 " [/A:]         Mounts drive, /A drive letter (a, b, etc.)." \
                                 " SPACE         Displays drive capacity." \
                                 " LS [|MORE]      Displays a list of files and subdirectories in a directory." \
                                 " CD [..][path]     Changes the current directory." \
                                 " CAT [file name]    Displays file contents." \
                                 " MKDIR [dir name]   Creates a directory." \
                                 " TOUCH [file name]   Creates a file" \
                                 " RM[*][file name]   Deletes one or more files or directories." \
                                 " APPEND [file name]  Appends file from terminal input" \
                                 " MARK         Record the current directory in bookmark" \
                                 " GOTO         Go to bookmarked directory" \
                                 " CP [file name][path\\] Copys file to bookmarked directory or to path argument" \
                                 " MV [path] [new name] Renames file from path with new name" \
                                 " SYNC [src_path] [dest_path] Synchronizes a folder content with other folder." \
                                 " PERF [/A:] [/A:]   Perfoms the transfer rate between two devices." \
                                 " REBOOT        Reset the application." \
                                 "\r\n---- USB Host Commands:" \
                                 " LSUSB         Displays USB information." \
                                 " SUSPEND        Suspends USB bus activity" \
                                 " RESUME        Resumes USB bus activity" \
                                 " ENUMERATE       Forces a reset on USB line and restart the enumaration." \
                                 "\r\n---- USB Host DFU Commands:" \
                                 " DFU_ERASE       Erase target" \
                                 " DFU_PROG [path]    Program target with a HEX file." \
                                 " DFU_START       Start target." \
                                 "\r\n---- USB Host HID Generic Commands:" \
                                 " HID_GET        Dispalys information about the target connected at HID." \
                                 " HID_DFU        Enters in DFU mode the target connected at HID." \[/left]


                  به جای ترک های پشتی(آبی) از سیم استفاده کنید.

                  ویرایش: این pcb دو تا مشکل داره یکی اینکه دیپ سوئیچ 3 و 4 به جای پورت f باید به e وصل میشد (که البته خیلی مهم نیست!)

                  تو ورودی هم یه خازن 1000 میکرو گذاشتم که اونم نذارید.

                  /


                  http:/mjs1990s.ir/wp-content/uploads/2014/07/stk525.rar
                  نــــ_ـــمـــ_ــــیــــ_ـــدونـــــ_ــم.....

                  دیدگاه


                    #10
                    پاسخ : آموزش اتصال حافظه فلش مموری usb (کول دیسک) به میکرو avr

                    چیزایی که تا حالا فهمیدم:

                    یه قسمت توی فایل host_ms_task.c هست که بهتر کدهایی که قراره مدام اجرا بشن رو اونجا بنویسید ، مثل خوندن از کلید ها یا کنترل پین ها ( خود مثال اتمل هم همین کار رو کرده)
                    #if (HOST_SYNC_MODE==ENABLE)

                    برای انتخاب درایو مربوط به فلش بدون استفاده از ورودی سریال می تونید از کد زیر استفاده کنید
                    .
                    کد:
                        g_s_arg[0][0]='b';
                    	g_s_arg[0][1]='0';
                    	ushell_cmd_mount();

                    برای اتنتخاب یه فایل مشخص میتونید از کد زیر استفاده کنید
                    کد:
                    if (nav_filelist_goto(2))
                      {
                    	  nav_file_name((FS_STRING)str_char, MAX_FILE_LENGHT, FS_NAME_GET, TRUE);
                    	  printf("name: %s\n\r", str_char);
                      }
                      else
                      {
                    	 printf("no file\n"); 
                      }
                    که البته کار انتخاب رو nav_filelist_goto(2) انجام میده ، که با گذاشتن عدد دو سومین مورد رو انتخاب میکنه

                    حتی فیلتر هم داره تا مثلا فقط فایل با فرمت خاص رو مشخص کنه

                    کد:
                    if (nav_file_checkext("txt,.avi,.mp3"))
                      {
                    	  printf("Is ok\n");
                      } 
                      else
                      {
                    	  printf("\n");
                      }

                    برای حرکت تو دایرکتوری میشه از تابع زیر استفاده کرد:

                    کد:
                    nav_filelist_set( U16 u16_nb , Bool b_direction )
                    
                               FS_FIND_NEXT, move to next file or directory
                               FS_FIND_PREV, move to previous file or directory

                    به جای آرگمان دوم میتونیم یکی از اون دو عبارت رو قرار بدیم تا بین فایل ها جا به جا بشم
                    کلا داخل فایل navigation.c رو که نگاه کنید همه توابع رو توضیح داده ، کامنت های خوبی گذاشته
                    اگر میخواید با پورت سریال کار کنید کار خیلی راحتر میشه میتونید به فایل ushell_task.h و ushell_task.c نگاه کنید همه چیز معلومه و خیلی راحت میشه باهاش کار کرد.
                    نــــ_ـــمـــ_ــــیــــ_ـــدونـــــ_ــم.....

                    دیدگاه


                      #11
                      پاسخ : آموزش اتصال حافظه فلش مموری usb (کول دیسک) به میکرو avr

                      سلام
                      یکی از مشکلات کتابخانه keil تابع fseeek هست .
                      مشکل اینجاست که وقتی شما یک فایل رو باز میکنی نمیتونی یک جای دلخواه رو تغییر
                      بدی !

                      دوستان اگر این مورد را بررسی کنید ممنون میشم .
                      از جمله ی رفتگان این راه دراز
                      باز آمده ای کو که به ما گوید راز
                      هان بر سر این دو راهه از روی نیاز
                      چیزی نگذاری که نمی آیی باز

                      دیدگاه


                        #12
                        پاسخ : آموزش اتصال حافظه فلش مموری usb (کول دیسک) به میکرو avr

                        نوشته اصلی توسط meerkat
                        سلام
                        یکی از مشکلات کتابخانه keil تابع fseeek هست .
                        مشکل اینجاست که وقتی شما یک فایل رو باز میکنی نمیتونی یک جای دلخواه رو تغییر
                        بدی !

                        دوستان اگر این مورد را بررسی کنید ممنون میشم .
                        منظورتون رو درست متوجه نمیشم
                        اگه منظورتون یه جای خاصی از فایل هست که باید خودتون براش تابع بنویسید
                        نــــ_ـــمـــ_ــــیــــ_ـــدونـــــ_ــم.....

                        دیدگاه

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