توجه :این کتابخانه در تاریخ 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،کتابخانه،فلگ،بازی،آی تو سی،