نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
أَللّهُمَّ ارْزُقْنی شَفاعَةَ الْحُسَیْنِ یَومَ الْوُرُودِ
مهدی دمیرچیلو

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

354

به نام خدا : تو این مطلب از سری مطالب پروژه آرم ، میخوام آموزش راه اندازی 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

کد پروژه :

فیلم تست پروژه + آموزش

137MB آموزش راه اندازی eeprom خارجی با lpc1768
0%
00:00  /  17:35

فعلا یا علی.






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

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

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

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

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

حدیث تصویری

تعداد مطالب : 367 تا
جنگ ما فتح قدس را به همراه خواهد داشت. [ امام خمینی (ره) ]
بقیه جلسات :
این مطلب هیچ طبقه بندی یی ندارد!
ارسال دیدگاه
15
نظرات این مطلب بسته شده است.
  1. محمد

    مهمان

    محمد

    سلام ارادت داریم خدمت همه بچه های انقلاب
    بزرگوار من یه کتاب خونه مربوط به iap(کتابخانه مربوط به کپی از sram به flash در حین کار فصل ۳۲ منوال ببینید) میکرو lpc1768 دارم ولی نمیتونم باهاش کار کنم یعنی با قسمت آدرس دهی ها مشکل دارم….کسی تونست کمک کنه یه ندا بده
    smile

  2. آرش

    مهمان

    آرش

    سلام مهندس،راستش من مشکل ارتباط حافظه جانبی با دارم،اما با میکرو،و برنامه بسکام،شرمنده که اینجا اینو طرح میکنم،من میتونم مقادیر ورد رو ذخیره کنم اما مقادیر لانگ رو نمیتونم ذخیره کنم،ممنوم میشم کمکم کنید

    مشاهده پاسخ ها (3)
    • مهدی دمیرچیلو

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

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

      سلام
      بسکام کار نمیکنم ولی خب شما اگه به صورت string داده هاتونو ذخیره کنید، هر رقم در یه خونه قرار میگیره – روش ساده ای هستش ولی خب حافظه هم زیاد میگیره
      یا این که به صورت همون عدد ذخیره کنید، داده ها رو 8-بیت 8-بیت ذخیره کنید، حالا عددی که 2 بایت هستش، رو باید در 2 خونه ذخیره کنی، اگه با اعداد باینری آشنا باشید متوجه حرفم میشید
      مثلا عدد 313 یه عدد 2 بایتی هستش :
      313Dec = 139Hex = 00000001 00111001‬ Bin ===> Byte1 = 1Dec, Byte0 = 57Dec

      • آرش

        مهمان

        آرش

        ممنون،اره متوجه شدم،البته منم یه روش یکم پیچیده تر رو کشف کردم😁😁،لانگ رو به رشته تبدیل کردم،بعد همین رشته رو به دوقسمت تبدیل کردم،بعد هر قسمت رو به ورود جداگانه تبدیل کردم،بعدش ذخیره سازی کردم و واسه خوندن هم اومدم این دو تا عدد رو به رشته تبدیل کردم بعد دو تا رشته رو به هم چسبوندم و دوباره به لانگ تبدیل کردم 😂😂😂

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

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

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

          good

  3. farzad

    مهمان

    farzad

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  4. POORIY313

    مهمان

    POORIY313

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

  5. مهدی

    مهمان

    مهدی

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

  6. ناشناس

    مهمان

    ناشناس

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

  7. محمد

    مهمان

    محمد

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  8. امیر

    مهمان

    امیر

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

  9. آرش

    مهمان

    آرش

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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