اطلاعیه

Collapse
No announcement yet.

مشکل آدرس های ۱۶ بیت در ارتباط i2c میکرو stm32

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

    مشکل آدرس های ۱۶ بیت در ارتباط i2c میکرو stm32

    سلام من با میکرو stm32f103c8t6 سعی دارم روی at24c512 اطلاعات رو ذخیره کنم از دستور
    HAL_I2C_Mem_Write(&hi2c1, 0XA0, 40000,I2C_MEMADD_SIZE_16BIT , &write_data, 1, 100)
    استفاده می کنم می خوام مثلا روی خونه ی 40000 مقدار write_data را قرار دهم ولی آدرس حافظه را با این که ۱۶ بیت مشخص می کنم ولی همواره به صورت ۸ بیت ارسال می شود و at24c انگار فقط بایت اول 40000 را دریافت می کند به همین خاطر فقط تا خونه ی ۲۵۵ قابل استفاده است چی کار باید بکنم؟
    چون از ماژول استفاده کردم از سخت افزاری که هست مطمعنم

    #2
    پاسخ : مشکل آدرس های ۱۶ بیت در ارتباط i2c میکرو stm32

    نوشته اصلی توسط sadegh0930 نمایش پست ها
    سلام من با میکرو stm32f103c8t6 سعی دارم روی at24c512 اطلاعات رو ذخیره کنم از دستور
    HAL_I2C_Mem_Write(&hi2c1, 0XA0, 40000,I2C_MEMADD_SIZE_16BIT , &write_data, 1, 100)
    استفاده می کنم می خوام مثلا روی خونه ی 40000 مقدار write_data را قرار دهم ولی آدرس حافظه را با این که ۱۶ بیت مشخص می کنم ولی همواره به صورت ۸ بیت ارسال می شود و at24c انگار فقط بایت اول 40000 را دریافت می کند به همین خاطر فقط تا خونه ی ۲۵۵ قابل استفاده است چی کار باید بکنم؟
    چون از ماژول استفاده کردم از سخت افزاری که هست مطمعنم
    دوست عزیز هر پروتکلی استانداردهای خاص خودش رو داره ،
    در i2c هر فریم دیتا ۸ بیته ، شما نمیتونی دیتای ۱۶ بیتی رو با یک فریم دیتا ارسال یا دریافت کنی .
    آدرس رجیستر ها به شکل ۲ بایتی باید ارسال بشه

    دیدگاه


      #3
      پاسخ : مشکل آدرس های ۱۶ بیت در ارتباط i2c میکرو stm32

      نوشته اصلی توسط Amie.s.m نمایش پست ها
      دوست عزیز هر پروتکلی استانداردهای خاص خودش رو داره ،
      در i2c هر فریم دیتا ۸ بیته ، شما نمیتونی دیتای ۱۶ بیتی رو با یک فریم دیتا ارسال یا دریافت کنی .
      آدرس رجیستر ها به شکل ۲ بایتی باید ارسال بشه
      منم سعی دارم تا آدرس رجیستر با دو بایت ارسال کنم هر جا رو نگاه کردم برای ۱۶ بیت از همین دستور استفاده می کردن توی ارگمان ۴ ام به جای I2C_MEMADD_SIZE_8BIT از I2C_MEMADD_SIZE_16BIT استفاده می کردن همین طوری که نوشتم ولی این اتفاق نمی افته ممنون می شم اگه کدش فرق می کنه یا یک جور دیگه باید انجامش بدم راهنمایی کنید

      دیدگاه


        #4
        پاسخ : مشکل آدرس های ۱۶ بیت در ارتباط i2c میکرو stm32

        کد:
        [LEFT][COLOR=#58585A][FONT=Arial]HAL_I2C_Mem_Read(sp_hi2c, 0x71<<1, regAddr, 2, data, datalen, timeout);[/FONT][/COLOR][/LEFT]
        در مثال بالا 0x71 آدرس اسلیو هست .
        regAddr آدرس رجیستره ، عدد ۲ بعدش تعیین میکنه این آدرس باید دو بایتی ارسال بشه .
        data پوینتر بافره .
        datalen تعداد دفعات خواندن یا نوشتنه که در حالت پیوسته رجیستر آدرس اتوماتیک افزایش پیدا میکنه

        دیدگاه


          #5
          پاسخ : مشکل آدرس های ۱۶ بیت در ارتباط i2c میکرو stm32

          نوشته اصلی توسط Amie.s.m نمایش پست ها
          کد:
          [LEFT][COLOR=#58585A][FONT=Arial]HAL_I2C_Mem_Read(sp_hi2c, 0x71<<1, regAddr, 2, data, datalen, timeout);[/FONT][/COLOR][/LEFT]
          در مثال بالا 0x71 آدرس اسلیو هست .
          regAddr آدرس رجیستره ، عدد ۲ بعدش تعیین میکنه این آدرس باید دو بایتی ارسال بشه .
          data پوینتر بافره .
          datalen تعداد دفعات خواندن یا نوشتنه که در حالت پیوسته رجیستر آدرس اتوماتیک افزایش پیدا میکنه
          منم همین جوری استفاده کردم کجاش مشکل داره که یک بایت فقط به عنوان آدرس رجیستر ارسال می شه؟ I۲C_MEMADD_SIZE_۱۶BIT که نوشتم همون ۲ هست که بهش گفتن دو بایت آدرس رجیستر دارم.

          دیدگاه


            #6
            پاسخ : مشکل آدرس های ۱۶ بیت در ارتباط i2c میکرو stm32

            آرگومنت ۲ رو باید بگذارید

            دیدگاه

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