اطلاعیه

Collapse
No announcement yet.

مشکل عدم شناسایی eeprom های حجم بالا توسط stm

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

    مشکل عدم شناسایی eeprom های حجم بالا توسط stm

    با سلام
    وقت بخیر
    بنده یک برد پروژه ای که توسط ارم stm32f407vgt6 طراحی شده دارم که از حافظه خارجی eeprom استفاده می کند تابحال تعداد زیادی از این بردتولید شده و با حافظه های at24c08 به پایین عملکرد صحیحی داشته
    مشکلم اینجاست که حافظه های at24c32 به بالا قادر به شناسایی نیست و با جایگزینی حافظه کوچک مذکور مشکل حل می شه می خواستم ببینم این مشکل را می تونم با کمک شما برای همیشه برطرف کنم ایا تنظیم یا تغییری در برنامه باید اعمال کنم؟؟

    #2
    پاسخ : مشکل عدم شناسایی eeprom های حجم بالا توسط stm

    مشکل از میکرو و مدلش نیست .

    مشکل طریقه آدرس دهی ایپیرامهای i2c هست که وقتی آدرسهای بالاتر از FF رو بخواهید آدرس بدین آدرس باید دو بایتی ارسال بشه ( در نمونه های بالای ۵۱۲ کیلوبیت سه بایتی ) .
    با آدرسدهی ۱ بایتی نهایتا تا 24C02 معادل ۲ کیلوبیت قابل آدرس دهی هست .

    توی همین بخش یه نگاهی به آخرین تاپیک ها بندازید چند بار روش آدرس دهی چند بایتی توضیح داده شده

    دیدگاه


      #3
      پاسخ : مشکل عدم شناسایی eeprom های حجم بالا توسط stm

      باید برنامه میکرو رو تغییر بدید
      اگر دسترسی به برنامه میکرو ندارید، نمی تونید کاری بکنید

      دیدگاه


        #4
        پاسخ : مشکل عدم شناسایی eeprom های حجم بالا توسط stm

        نوشته اصلی توسط فرشاد اکرمی نمایش پست ها
        باید برنامه میکرو رو تغییر بدید
        اگر دسترسی به برنامه میکرو ندارید، نمی تونید کاری بکنید
        برنامه در دسترس هست منتهی از برنامه نویسی arm خیلی سردر نمیارم

        دیدگاه


          #5
          پاسخ : مشکل عدم شناسایی eeprom های حجم بالا توسط stm

          سلام مجدد
          مدتیه درگیر مراسم بودم نرسیدم پیگیری کنم.
          الان کدهای برنامه مرتبط با eeprom میزارم اگر مقدور هست ببینید اشکال از کجاست
           

          #include "stm32f4xx.h"
          #include "stm32f4xx_hal.h"
          #include "I2C.h"

          //*********************************************
          void eeprom_write(uint16_t address , uint8_t value)
          {
          I2C_Start();
          I2C_Addr(0xA0);
          I2C_Write(address>>8);
          I2C_Write(address);
          I2C_Write(value);
          I2C_Stop();
          HAL_Delay(5);
          }
          //*********************************************
          void eeprom_page_write(uint16_t page_address , uint8_t* value)
          {
          char count;
          I2C_Start();
          I2C_Addr(0xA0);
          I2C_Write((page_address*64)>>8);
          I2C_Write(page_address*64);
          for(count=0;count<64;count++)
          {
          I2C_Write(*value++);
          }
          I2C_Stop();
          HAL_Delay(5);
          }
          //*********************************************
          uint8_t eeprom_read(uint16_t address)
          {
          I2C_Start();
          I2C_Addr(0xA0);
          I2C_Write(address>>8);
          I2C_Write(address);
          I2C_Stop();
          I2C_Start();
          return I2C_Read(0);
          }



          [B]برنامه میکرو روی دستور eep_data=eeprom_read(0); که میرسه متوقف میشه و ادامه نمیده
          جدیدترین ویرایش توسط jahromy; ۱۴:۰۶ ۱۴۰۲/۰۳/۳۰.

          دیدگاه


            #6
            کسی نبود راهنمایی کنه
            ببینید از کارکرد برنامه ام کاملا مطمین هستم چون تعداد زیادی برد زدم و جواب گرفتم در مواردی دارم به مشکل می خورم که ظاهرا ای سی eeprom اصلا توسط stm شناخته و خوانده نمی شود اینجاست که مشکل دارم قبلا تعدادی at24... مختلف می گرفتم اینقدر تعویض می کردم تا مشکل حل می شد الان گیر کردم

            دیدگاه

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