کتابخانه رفع خطای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 در پروژه خودتان مقدار دهی نمایید .
پیروز باشید.
دانلود مستند ST در مورد رفع خطای I2C Busy Flag
برای اطلاع از اخبار جدید و موارد اصلاحی در مورد این کتابخانه خواهشمندم کانال تلگرام وبلاگ: dastsazemanblogfa@ را دنبال نمایید.
مالکیت معنوی : لطفا کپی نکنید لینک بدید .
library , i2c ,busy,flag,stm32،کتابخانه،فلگ،بازی،آی تو سی،