اطلاعیه

Collapse
No announcement yet.

رفع یک ابهام در شیفت اعداد و SPI

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

    رفع یک ابهام در شیفت اعداد و SPI

    تابع زیر را داشته باشید

    کد:
    void at45_readPage2(unsigned int page,unsigned int offset,unsigned int len,char * dest)
     {    unsigned char sendspi;
         DF_CS=1;  
         DF_CS=0;   
         
         spi(0xe8);  //0xD2  
         sendspi= page >> 6 ;
         spi(sendspi); 
         sendspi = ((page << 2) | (offset >> 8)) ;
         spi(sendspi);  
         spi(offset & 0xff);
         
         spi(0x00);
         spi(0x00);
         spi(0x00);
         spi(0x00);
         
         for(i = 0 ; i < len ; i++ )
         dest[ i ] = spi( 0xff );
    
        DF_CS=1;
     
     }

    تابع بالا مربوط به کتابخانه AT45DB321 میباشد.
    در توضیح دسترسی به پیچ و بایت های پیچ در دیتا شیت بدین صورت امده که 13 بیت اول از 24 بیت ارسالی مربوط پیچ انتخابی و 10 بعد مربوط به بایت انتخابی می باشد.قسمتی که توضیح داده شده در دیتا شیت به این صورت است

    حال برروی کاغذ 2^13=8192 و 2^10=512 می شود.
    ولی برروی عمل و در داخل میکرو می بایست تبع بصورت زیر محتویات اخرین پیچ رو در بافر بریزه ولی در عمل محتویاته پیچ 4096 رو میریزه
    at45_readPage2(8191,0,264,Buf2);
    ولی با اجرای تابع زیر محتویاته اخرین پیچ ریخته میشه
    at45_readPage2(16383,0,264,Buf2);
    تابع را بصورت زیر تصحیح کردم ولی اصلا نتیجه جالب نبود

    کد:
    spi(0xe8);  //0xD2  
         sendspi= page >> 7 ;
         spi(sendspi); 
         sendspi = ((page << 1) | (offset >> 7)) ;
         spi(sendspi);  
         spi(offset & 0xff);
    هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
    بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
    میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

    تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

    #2
    پاسخ : رفع یک ابهام در شیفت اعداد و SPI

    سلام. راستش من با این تراشه کار نکردم که بتونم کمکت کنم ولی هی چیز رو خواستم یاد آوری کنم شاید ککت کنه:
    در ارتباط SPI ارسال داده از بیت پرارزش شروع میشه (بر عکس ارتباط UART)

    دیدگاه

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