نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
آزادی حجاز از دست نااهلان
Avatar

کتابخانه راه اندازی eeprom خارجی با stm32

سلام : از اونجایی که سری های محدودی از ARM های ساخت STM ایپیرام داخلی دارن و اکثر این میکروکنترلر ها ایپیرام داخلی ندارن تصمیم گرفتم که کتابخونه ای برای کار با ایسی های ایپیرام رو بزارم ایسی های سری AT24CXX توسط این کتابخونه پشتیبانی میشن؛ این سری ایپیرام ها هم قیمت ارزونی دارن و رابطشون I2C هستش؛ یک پین هم دارن که تعیین میکنه تا اطلاعای روی ایسی قفل بشه یا نه (در صورت قفل کردن دیتاهای ایسی امکان نوشتن روی ایسی وجود نداره و و فقط میشه دیتا ها رو از رو ایسی خوند )؛ ( کتابخانه راه اندازی eeprom خارجی با stm32 )
کتابخانه راه اندازی eeprom خارجی با stm32

کتابخانه راه اندازی eeprom خارجی با stm32

چندتا نکته راجب این ایسی :
1) عدد بعد از C در شماره ایسی نشان دهنده ضرفیت حافظه ایسی هست مثلا
AT24C02 دارای دو کیلوبایت ایپیرام
AT24C32 دارای 32 کیلو بایت ایپیرام هستش
2) از اونجایی که رابط این ایسی I2C هستش باید برای دوتا پین SDA (دیتای I2C ) و SCL (کلاک I2C) مقاومت پول اپ بزارید و از اونجایی که سطح ولتاژ ما در کار با این ایسی 3.3 ولت هستش مقدار این مقاومت ها باید 1 کیلواهم باشد.
3) لزومی به اتصال پین WP ایسی به میکروکنترلر ضرورری نیستش ( در صورت متصل نشدن به میکرو باید در سخت افزار به عنوان زمین تعریف شود ) (توضیحات صفحه 3 دیتاشیت )
Write Protect (WP): The Write Protect input, when connected to GND, allows normal write operations. When WP is connected directly to VCC, all Write operations to the memory are inhibited. If the pin is left floating, the WP pin will be internally pulled down to GND; however, due to capacitive coupling that may appear during customer applications, Atmel recommends always connecting the WP pins to a known state. When using a pull-up resistor, Atmel recommends using 10kΩ or less
خب میریم سراغ فایل ها کتابخونه :
پس برای استفاده از کتابخانه دو فایل i2c.c و i2c.h رو به محل پروژه مون کپی میکنیم و به پروژه اضافه میکنیم.
خب حالا وارد فایل i2c.h میشیم توابع زیر رو داریم
بترتیب توابع رو توضیح میدیم
از این تابع برای ایشنال کردن ایسی و میکرو استفاده میشه …
برای نوشتن بایت در ادرس خاصی از حافظه استفاده میشه … ارگومان اول مقدار و ارگومان دوم ادرس هستش
برای خوندن مقدار بایت ایپیرام استفاده میشه ورودی یک ارگومان داره که ادرس هست و خروجی هم مقدار خونده شده از اون بایت
این تابع هم برای نوشتن متغیر های 16 بیتی روی ایپیرام استفاده میشه این تابع از دو بایت متوالی برای نوشتن متغیر 16 بیتی استفاده میکنه؛ ارگومان اول مقدار متغیر هست و ارگومان دوم ادرس نوشتن
نکته : برای مثال اگر در ادرس 0 یک متغیر 16 بیتی رو توی ایپیرام بریزیم این تابع از ادرس 0+1 هم برای نوشتن 8 بیت دوم متغیر 16 بیتی استفاده میکنه و در عمل دوبایت از ایپیرام رو اشغال میکنه.
از این تابع هم برای خوندن مقدار متغیر 16 بیتی از ایپیرام استفاده میشه ارگومان اول برای ادرس هست و تابع مقدار 16 بیتی خونده شده از ادرس رو توی خروجی برمیگردونه؛ خب بریم سراغ i2c.c توی این فایل هم دوتا دیفاین مهم داریم
مشخص کننده i2c متصل به ایپیرام هست
حالا کتابخونه ما رو پیشفرض ایپیرام رو به i2c1 متصل هست ( نیازی به تغیر نیست )؛ ولیکن برای اتصال به i2c دوم یک مثال میارم ….
باید توی این تابع دستکاری کنیم اولین ادیت اینه که
این خط اومده کلاک رو برای i2c1 وصل کرده ولی ما باید کلاک رو به i2c2 وصل کنیم؛ پس اینجوری ادیت میکنیم
دومین ادیت ابنه که پینای i2c2 رو دیفاین کنیم
این خط رو اینجوری تغیر میدیم؛ اینجا توی استراکچر i2c هم نیازی به تغیر نیست ولی میتونید سرعت ارتباط رو تعیین کنید
الان سرعت i2c روی 100 کیلوهرتز تنظیم هست (100000هرتز)
حالا کل تابع کانفیگ ما برای i2c2 میشه اینجوری
حالا فقط باید این تابع رو توی main اجرا کنیم تا میکرو و ایپیرام ایشنال بشن تا بتونیم توی بقیه برنامه با توابعی که بالا توضیح دادم کار کنیم و دیتا بنویسم و بخونیم؛ این خط هم توی تابع main مینویسیم
به همین سادگی smile برام دعا کنید … با ارزوی موفقت  heart
گروه پرسش و پاسخ الکترونیکی در سروش
تعداد مطالب : 20 تا
Avatar به شما توصیه میکنم سربازی نرید / با این قیمت دلار نمیشه الکترونیک کار کرد / برای مهاجرت به USA با لاتاری سال 2020 برنامه هایی دارم افرادی که در این ضمینه با من موافق هستن (تحقیقات کامل خودتون رو از اینترنت انجام بدید و سوالت رو از من نپرسید) برای ایجاد کمپین و مهاجرت دسته جمعی مشخصات ارتباطی خودتون برای من ایمیل کنید zamanimahdi@icloud.com در سابجکت ایمیل حتما بنویسید "لاتاری" به امید موفقیت :)
ارسال دیدگاه
4

1) نظرات غیر فارسی به صورت خودکار حذف میشوند ( حداقل 5 حرف فارسی وارد کنید ).

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید ( طبیعتا لینک کدتون رو باید برای من بفرستید! ) : debian

4) پسورد فایل های سایت : www.dmf313.ir

  1. Avatar

    مهمان

    مجتبی

    سلام این کتابخونه که نوشتی توی قسمت. C برای include کردن نوشتی stm32f10x_i2c.h در صورتی که نام فایل i2c هست و موقع کامپایل ارور میده که فایل. Hرو نمیتونه پیدا کنه

  2. Avatar

    مهمان

    حسین

    با سلام و سپاس. این کتابخانه برای stm32f1 است یا برای همه خانواده stm32 می شود استفاده کرد؟ در صورت نیاز به تغییر کتابخانه، به منظور استفاده با میکرو stm32f030f4p6 چه تغییراتی نیاز است؟ ممنون

  3. Avatar

    مهمان

    محمد

    سلام آقای زمانی خسته نباشد در کتابخانه های spl کتابخانه usb نیست نظر شما برای استفادا از usb چیه کتابخانه های hal بهتر نیست ؟❤

    • Avatar

      نویسنده این مطلب

      مهدی زمانی

      سلام
      نمیدونم چرا کتابخونه USB نیست ولی با اندک جستجویی که من کردم میشه جدا بهش اضافه کرد …
      من USB رو به دلیل اینکه 48 مگ از کلاک میکرو رو میگیره نیازم نشده راه بندازم تا حالا ….