-
 

کتابخانه رفع خطایbusy  فلگ I2C در میکروهای stm32f1xx

توجه :این کتابخانه در تاریخ 1401/08/26 به روز شده است ( نسخه 1.0.1 )

با درود.

یک بورد Bluepill دارم که پیشنویس کتابخانه ها را روی اون امتحان میکنم .

و قبلا یک کتابخانه برای آی سی های Eeprom at24cxx نوشتم و روی همین بورد امتحانش کردم که به خوبی کارمیکرد ( یعنی واحد I2C به درستی کارش را انجام میداد) . اخیرا که بعد از مدت طولانی دوباره اومدم روی همین بورد کتابخانه at24cxx راه بندازم که متوجه شدم درست کار نمیکنه . بعد از بررسی ها متوجه شدم مشکل از واحد i2c هست .

در واقع بعد از اینشیال ، فلگ busy کاملا بی دلیل فعال هست !!!! و اجازه نمیده واحد i2c هیچ تبادل اطلاعاتی با خارج داشته باشه .

خلاصه بعد از کلی امتحان روی یه بورد دیگه و کلی جستجو متوجه شدم من فقط درگیر با این موضوع نیستم و خود شرکت st یک سری راه حل نرم افزاری برای حل این مشکل ارایه داده .

این راه حل ها رو طبق مستندات st به صورت یک کتابخانه برای stm32f1xx تبدیل کردم تا استفاد ه از اون راحت باشه همانطور که در ویدیو میبینید مقدار رجیستر SR2 برابر 0 هست که نشان دهنده 0 بودن فلگ busy هست

و اما کتابخانه :

وقتی فایل رو دانلود کنید و از حالت فشرده خارج کنید پوشه های زیر رو میبینید.

پوشه print_to_serial :

یک کتابخانه ساده برای ارسال متن به ترمینال سریال هست که برای دیباگ استفاده میشه .

پوشه i2c_busy_stm32f1xx :

این پوشه شامل فایلهای کتابخانه است که در تصویر زیر دیده میشه .

برای اطلاع نوع محتویات فایلها ( بر اساس نام انها) لطفا ____اینجا___ را ببینید.

راهنمای استفاده :

1 – ابتدا فایل i2c_busy.h را در فایل i2c.c اینکلود کنید.

2 - در تابع HAL_I2C_MspInit(در فایل i2c.c )عبارت __HAL_RCC_I2C1_CLK_ENABLE(); را به ابتدای کد موجود منتقل کنید .

3- در همان تابع HAL_I2C_MspInit همانند کدهای زیر را به انتهای تابع اضافه نمایید .

i2c.instance= &hi2c1;

i2c.sdaPort = GPIOB;

i2c.sdaPin = GPIO_PIN_9;

i2c.sclPort = GPIOB;

i2c.sclPin = GPIO_PIN_8;

I2C_ClearBusyFlagErratum(&i2c );

توجه : در کدهای بالا باید i2c.sdaPort و i2c.sdaPin و i2c.sclPort و i2c.sclPin و i2c.instance را مطابق با پورت و پینهای واحد i2c در پروژه خودتان مقدار دهی نمایید .

پیروز باشید.

دانلود کتابخانه i2c_busy

دانلود مستند ST در مورد رفع خطای I2C Busy Flag

برای اطلاع از اخبار جدید و موارد اصلاحی در مورد این کتابخانه خواهشمندم کانال تلگرام وبلاگ: dastsazemanblogfa@ را دنبال نمایید.

مالکیت معنوی : لطفا کپی نکنید لینک بدید .

library , i2c ,busy,flag,stm32،کتابخانه،فلگ،بازی،آی تو سی،

کتابخانه eeprom_emulation برای نوشتن آرایه 8بیت برایstm32f1xx

 

 بادرود.

برای یک کاری نیاز بود که از حافظه فلش میکروکنترلر stm32f103  به عنوان حافظه eeprom  استفاده بشه .

البته خود شرکت st  همچین کتابخانه ای را ساخته منتها برای انتقال آرایه مناسب نیست و دسترسی اون به حافظه هم 16 بیتی (2 بایت) هست .

یعنی اگر بخواهید یک رشته متنی رو توی حافظه بنویسید و طول اون رشته 10 بایت باشه از حافظه فلش 20 بایت مصرف خواهد کرد یعنی 10 بایت پرت حافظه داره که اصلا جالب نیست .

حالا من بر اساس هموان کتابخانه st یک کتابخانه نوشتم که میشه ارایه ها رو با دسترسی 8 بیت توی آرایه نوشت.

که اگر سایز آرایه فرد باشه 1  بایت پرت حافظه داره و اگر زوج باشه پرت حافظه نذاره .

فیلم عملکرد کتابخانه رو برای میکرو stm32f103 در زیر میبینید.

 

 

دانلود فایل کتابخانه

 

پستهای مرتبط:

کتابخانه حرفه ای منو 4 کلید برای stm32

کتابخانه تاچ ( touch library )مقاومتی با کنترلر xpt2046 برای stm32

کتابخانه درایور برای ili9341

 

برای اطلاع از اخبار جدید و موارد اصلاحی در مورد این کتابخانه خواهشمندم در کانال تلگرام وبلاگ: dastsazemanblogfa@

مالکیت معنوی : لطفا کپی نکنید لینک بدید .

کلمات کلیدی :

menu  4 pin  button  stm32 library  eeprom  emulation    کتابخانه  stm32  حافظه فلش  ایپرام   پرام

 

 

 

 
  BLOGFA.COM