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

آموزش راه اندازی eeprom خارجی با lpc1768

به نام خدا : تو این مطلب از سری مطالب پروژه آرم ، میخوام آموزش راه اندازی eeprom خارجی با lpc1768 رو براتون قرار بدم، همون طور که میدونید میکروکنترلر lpc1768 دارای حافظه eeprom داخلی ( حافظه دائمی داخلی ) نیست و لذا مجبوریم از حافظه ایپرام خارجی استفاده کنیم، تو این مطلب من یه کتابخونه نوشتم برای راه اندازی آیسی های سری AT24Cxx که این سری از آیسی ها ۱۱ مدل داره که توضیحات بیشتر رو در لینک زیر ( مطالعه بیشتر ) و فیلم ته مطلب میتونید ببینید.
آموزش راه اندازی eeprom خارجی با lpc1768

آموزش راه اندازی eeprom خارجی با lpc1768


مطالعه بیشتر : برای مطالعه بیشتر، میتونید به ترجمه دیتاشیت و بررسی انواع مدل آیسی eeprom شرکت اتمل که مطلبش رو قبلا نوشتم مراجعه کنید ( خوندن این مطلب الزامیی نیست ) :

 
توجه : من یه کتابخونه از lpc1768 eeprom دانلود کردم و بعد رفتم مشکلاتش رو حل کنم و آخر سر این شد که کل کتابخونه غیر از اسکلتش ( نام توابع ^_^ ) رو تغییر دادم و کلی تابع جدید اضافه کردم ( این کتابخونه هه همش ۴ تا تابع داشت ولی من فک کنم یه ۶-۷ تای دیگه ای بهش اضافه کردم و اون ۴ تا رو هم ویررایش کردم )، که برا این کار مجبور شدم دیتاشیت این آیسی های حافظه ایپرام رو هم بخونم که لینک مطلبش رو در بالا مشاهده میکنید، البته بازم این کتابخونه جای کار داره و تابع نوشتن/خوندم عددد اعشاری یه کوچولو مشکل داره یا میشه توابع دیگه ای نوشت که از حوصله داشتون خارج بود و همین مطلب با مطلب بالا، حدود ۷-۱۰ روز طول کشیده فک کنم!، لذا باس بگم که این کتابخونه رو خودم نوشتم و با کتابخونه توی لینک بالا از زمین تا زیر زمین فرق داره که میتونید مقایسه کنید، بگذریم از این حرفا، زیاد مهم نیست، بریم سر آموزش و اضافه گویی نکنیم ^_^
 

کتابخانه EEPROM خارجی – استفاده از I2C نرم افزاری

کتابخانه eeprom میکروکنترلر lpc1768

کتابخانه eeprom میکروکنترلر lpc1768

این کتابخونه دارای توابع زیر هستش :

 
در زیر توابع رو تک تک توضیح میدم، در ضمن یه چند تا تابع دیگه هم بود که اونا رو از دسترس کاربر خارج کردم چون کاربر نباید ازشون استفاده کنه! :
 

EEPROM_Init : به کمک این تابع، ایپرام خارجی رو فعال میکنیم، این تابع دارای پارامتر های زیر است :
eepromType_u8 : مدل ایپرام، برا این کار یه چند تا ماکرو تعریف کردم که لیستش رو در زیر میبینید، بسته به مدل آیسیتون، ماکرو صحیح رو انتخاب کنید و به این پارامتر بدید :
AT24C01 - AT24C02 - AT24C04 - AT24C08 - AT24C16 - AT24C32 - AT24C64 - AT24C128 - AT24C256 - AT24C512 - AT24C1024
sda_pin : پایه دیتای I2C که نحوه مقدار دهی این پارامتر همانند مطلب قبلی هستش، مثلا P2_0 یا P1_13 و...
scl_pin : پایه کلاک I2C، مقدار دهیش هم مثل sda_pin هستش.
 

EEPROM_WriteByte : نوشتن یه تک بایت.
EEPROM_ReadByte : خوندن یه تک بایت.
این دو تابع دارای پارامتر های زیر هستن :
ByteAddress_U32 : آدرس بایتی که میخوایم مقدارشو تغییر بدیم یا بخونیم.
Data : بایتی که میخوایم بنویسیم در خونه ByteAddress_U32.
IcAddress_U8 : آدرس آیسی که بستگی داره پایه های A آیسی رو به کجا وصل کرده باشید، اگه همه رو به GND وصل کنید آدرس اون آیسی میشه ۰٫
 

EEPROM_WriteString : نوشتن یه رشته.
EEPROM_ReadString : خوندن یه رشته.
ByteAddress_U32 : آدرس شروع خوندن / نوشتن
توجه : تابع EEPROM_WriteString بعد از نوشتن تمام بایت ها در حافظه ایپرام، یه کاراکتر '۰\' هم ته دیتا قرار میده، تا هنگام خوندن داده، بدونیم پایان دیتا کجا هستش.
DataWrite : آدرس خونه اول رشته ای که میخوایم در حافظه ایپرام ذخیره بشه.
DataSave: آدرس خونه اول رشته ای که میخوایم اطلاعات خونده شده داخلش ذخیره بشه.
IcAddress_U8 : آدرس آیسی.
 

EEPROM_WriteStringPage و EEPROM_ReadStringPage : این دو تابع همانند دو تابع قبلی هستن ولی با این تفاوت که سرعت نوشتن داده با این سریع تره؛ به اون لینکی که در اول مطلب قرار دادم اگه مراجعه کنید، متوجه داستان میشید.
 

EEPROM_WriteNumber : نوشتن یه عدد صحیح در حافظه ایپرام.
EEPROM_ReadNumber : خوندن یه عدد صحیح از حافظه ایپرام، این تابع عدد خونده شده رو return میکنه.
ByteAddress_U32 : آدرس بایت شروع خوندن/نوشتن
Number_32 : عددی که میخوایم در حافظه ایپرام نوشته بشه.
Base : عدد در چه مبنایی نوشته/خونده بشه ( شما ۱۰ قرار بدید )
IcAddress_U8 : آدرس آیسی
 

EEPROM_WriteFloat : نوشتن یه عدد اعشاری در حافظه ایپرام.
EEPROM_ReadFloat : خوندن یه عدد اعشاری از حافظه ایپرام، این تابع عدد خونده شده رو return میکنه.
ByteAddress_U32 : آدرس شروع خوندن/نوشتن.
Number_F : عدد اعشاری که میخوایم در حافظه ایپرام نوشته بشه.
FloatDigit : تعداد ارقام اعشاری که باید نوشته بشه در حافظه ایپرام.
IcAddress_U8 : آدرس آیسی
 

EEPROM_Erase : پاک کرده کل اطلاعات آیسی، این تابع یه پارامتر داره، اونم آدرس آیسی هستش.

پروژه راه اندازی eeprom خارجی با lpc1768

پروژه راه اندازی eeprom خارجی با lpc1768

عکس پروژه در عمل : اول مطلب پیوست کردم.
شماتیک پروژه :
توجه : تغذیه آیسی و اون مقاومت ها به 3.3 ولت وصل بشه. ( تغذیه میکرو هم 3.3 هستش دیگه )
پروژه راه اندازی eeprom خارجی با lpc1768
 
کد پروژه :

 
فیلم تست پروژه + آموزش
http://www.aparat.com/v/EiVQW

 
فعلا یا علی.
 






 
بروزرسانی در جمعه – ۲۵ فروردین ۱۳۹۶

کتابخانه EEPROM خارجی – استفاده از I2C سخت افزاری

توجه : این پروژه و کتابخونه زیر در عمل تست شده.

توابع نسخه 2 کتابخوانه EEPROM خارجی - استفاده از I2C سخت افزاری
توابع این کتابخونه به صورت زیر هستش که فقط در نامشون یه تغییرات جزئی وارد شده، و این که در این پروژه از I2C حقیقی ( I2C سخت افزاری ) استفاده شده و میتونید از وقفه استفاده کنید یا نکنید که انتخابش برا شماس؛ که برای این کار باید به فایل eeprom.h برید و کد زیر رو پیدا کنید و اگه میخواین از وقفه استفاده کنید که مقدار این ماکرو رو 1 کنید وگرنه 0 اش کنید.

نکته ای که هستش اینه که اگه بخواین از وقفه استفاده کنید خب کارتون دقیق تر و سریع تر انجام میشه ولی از اون سه تا تابع آخری که در زیر میبینید و ته اسمشون _WithOutInterupt هستش نمیتونید استفاده کنید.

 
حدیث تصویری

گروه پرسش و پاسخ الکترونیکی در سروش
مهدی دمیرچیلو گوگل میفرماید : إِنَّ اللّه مَعَ السارِچین ( خداوند با سرچ کنندگان است )
ارسال دیدگاه
10

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

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

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

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

  1. Avatar

    مهمان

    farzad

    سلام.خسته نباشید
    من از این هدر شما استفاده کردم و با یه مشکلی روبه رو شدم.تویه خونه های مختلف که عدد میریزم وقتی میخوام بخونم عددهای اشتباه میده.فقط تا 2خونه جواب میده بیشتر که میشه عدد اشتباه میده

    • مهدی دمرچیلو

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

      مهدی دمرچیلو

      سلام-کتابخونه و مدارو بررسی کن – نباید اینطور باشه–آیسی اضافه اگه داری عوض کن.
      تست کن ببین چی میشه
      من فک کنم کتابخونه رو خودم تست کردم نباید اینطور بشه
      کلاک میکرو رو برسسی کن
      باید رو 100 میگ باشه.
      سخت افزارش هم فک کنم I2C یه جفت مقاومت پول دان میخواست تا جایی که یادمه.
      کتابخونش هم اگه از همین کتابخونه ای که گزاشتم استفاده کردی نباید مشکلی باشه مگه در کلاک میکرو و سخت افزار

  2. Avatar

    مهمان

    POORIY313

    سلام وقت بخیر من یک ایمیل بهتون زدم درمورد sx1278 ولی جواب ندادید

  3. Avatar

    مهمان

    مهدی

    با سلام و خسته نباشید! یک سوال داشتم!
    میخوام با استفاده از کیپد یا هرچیزی وقتی یک عدد بالای ۵ رقم یا یک جمله رو وارد میکنم این در حافظه میکرو سیو بشه و هر وقت فلان دکمه زده شده این جمله رو ال سی دی بیاد!من همین سیو شدن روی حافظه رو طرز نوشتن کدشو بلد نیستم! sorry
    خواهش میکنم راهنمایی کنید!

  4. Avatar

    مهمان

    ناشناس

    سلام
    خدا خیرت بده

  5. Avatar

    مهمان

    محمد

    با سلام خیلی ممنون از این اطلاعات مفید.دو تا سوال دارم:
    من به یه eeprom از نوع at25f2048 نیاز دارم که پروتوکل اش spi هست.شما برای این ic نمونه کد دارید؟
    دوم اینکه شما با میکرو arm شرکت cypress کار کردید؟برای اون هم سوال داشتم؟

    • مهدی دمرچیلو

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

      مهدی دمرچیلو

      سلام – این مدلو از کجا خریدی laugh نه والا من ندیدمش اینو تا حالا تو فروشگاهی که بخوام بخرم و باهاش کار کنم.
      با میکروهای این شرکت هم کار نکردم ولی مشکلی برای کار ندارم در صورت وجود توجیح!

  6. Avatar

    مهمان

    امیر

    Controller Area Network = CAN
    خیلی معروفه! یه پروتکل ارتباطی با امکانات خوب
    مثلا در قسمت ECU ماشین ها استفاده میشه
    یه بنده خدا اومده بود یه ECU ماشین کنده بود بعدش با همین پروتکل باهاش ارتباط برقرار کرده بود!!!

  7. Avatar

    مهمان

    آرش

    خسته نباشید مهندس پروژه خیلی کاربردی هستش…خدا قوت
    ولی جای یه پروژه راه اندازی ارتباط CANتوی سایت خالیه… smile یه پروژه CANرو ارزش داره توی سایت بزترید
    مرسی

    • مهدی دمرچیلو

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

      مهدی دمرچیلو

      کاربردش کجاها هستش؟ از لحاظ کاراییش توجیهم کنی میرم سراغش