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

آموزش جامع کار با ic حافظه با کتابخانه i2c

به نام خدا :  آموزش جامع کار با ic حافظه با کتابخانه i2c
n
توضیح : والا من منبع آموزشی درست و درمونی در این مبحث تو نت ندیدم(البته تو سایت های فارسی) ولی تو سایت های خارجی مطلب الی ما شا الله.تنها منبع فارسی که من دیدم کتاب جابر الوندی بود که یه پروژه در مورد این موضوع گزاشته بود…..حالا من میخوام این بحث رو به صورت تقریبا کامل آموزش بدم.حالا من سعی کردم به ساده ترین حالت ممن توضیح بدم تا همه ی دوستان بتونن از این آموزش استفاده کنم.این پروژه رو من در عمل انجام دادم و کار میکنه…..لذا نگران کار کردن یا نکردنش در عمل نباشید>>>فقط من فردا باید برم دانشگاه و نه وقتش رو دارم و نه حال بستن مدارش رو….لذا نمیتونم عملی ببندم و فیلمش رو بزارم…….
تشکر : این مطلب تقدیم به داش رامین اصیلی که باعث شد من این مطلب رو بنویسم.

1) نحوه نام گزاری آی سی های سری AT24Cxxx : این سری از آی سی ها که اول اسم همشون AT24C هستش و در ادامه اندازه حافظشون قرار میگیره…مثلا اگه حافظشون 512 باشه نام این آی سی به صورت AT24C512 خواهد بود و اگه اندازه حافظه 2 باشه>>>>به صورت AT24C02 خواهند بود.
2) انواع آی سی های سری AT24Cxxx : حافظه این آی سی ها از 1 شروع میشه تا 1024 و از 1024 به بعد من نیدم.(شاید قطعاتی از این سری با حافظه بیشتر وجود داشته باشه ولیگشتم نبود>>>نگرد نیست) >>>1-2-4-8-16-32-64-128-256-512-1024 >>> لذا این سری از آی سی ها در 11 مدل حافظه ای مختلف در بازار موجوده.
3)قیمت آی سی های حافظه : حافظه 2 قیمتش تقریبا 300 تومن هستش و 1024 هم 15 هزار تومن….در کل قیمت این آی سی ها زیاده….ولی بسته به نیازتون میزان به صرفه بودن متفاوت هستش>>>> قیمت آسی های حافظه سری AT24C
4) حافظه : نوع حافظه اینا EEPROM هستش >>یعنی اطلاعات که توش قرار میگیرند با قطع برق از بین نمیروند و یه بار که اطلاعات رو توشون ریختی تا زمانی که ریستشون نکنی و یا اطلاعاتشون رو خودت پاک نکنی….اطلاعاتشون پاک نمیشه.
حافظه اینا برحسب بیت هستش……یعنی وقتی میگن آی سی AT24C01 یعنی حافظش 2کیلو بیت هستش>>>>
1Kbit=1024bit=128byte
سوال1)  128 از کجا اومد؟
جواب1)  از اونجای که هر 8 بیت برابر 1 بایت هستش لذا 1024 بیت برابر 128 بایت هستش…..یعنی 1024 رو تقسیم بر 8 کردم و شده 128.

سوال2) منظور از  بیت و بایت چیست …. فرق بین بیت و بایت چیه؟؟؟
جواب2) اصل مطلب : 1دونه صفر یا یک=1بیت>>>>>8 تا صفر یا یک=1بایت
توضیحات بیشتر : مثلا وقتی میگیم مقدار پایه فلان 0 هستش(یا 1 هستش) به این میگن یه بیت.
ولی وقتی میگیم مقدار 8 تا پایه پورت A (یا هر پورت دیگه ای…) >>>این میشه 8 تا بیت که  برابر است با  1 بایت.
مثلا وقتی ما تو پروژه هامون میایم و کد زیر رو مینویسیم و یه پورت میکرو رو ورودی خروجی بودنش رو تعیین میکنیم در واقع داریم یه اطلاعات 8 بیتی (یا 1بایتی) بهش میدیم.

5) نحوه ذخیره سازی اطلاعات درون آی سی : همون طور که در بالا گفتم مبنای این حافظه ها بیت هستش مثلا میگن آی سی با حافظه 512 بیت.
ولی ما کارمون اکثرا (99%) با بایت ها هستش و نه بیت ها…..مثلا ما میخوایم کد های همچون 0X57 و کد های هگز 8 بیتی=1بایتی رو در آی سی حافظه ذخیره کنیم.
حالا اگه دیتاشیت این آسی ها رو ببینید (مثلا برا آی سی با حافظه 1 ) تو صفحه اولش نوشته شده

که منظورش اینه که حافظش 1کیلو بیتی=1024 بیتی هستش و 128 خانه برا ذخیره سازی بایت ها داره>>>>یعنی 128 تا دونه کد هگز 1 بایتی(به صورت 0Xxx) میتونه در خودش ذخیره کنه.(امید وارم گیجتون نکرده باشم.)
لپ کلوم : ذخیره سازی اطلاعات درون این آی سی ها بر اساس بایت هستش و نه بیت>>>یعنی  هر خانه ی این آی سی یه کد 8 بیتی=1بایتی درخودش ذخیره میکنه.

 

توجه : برا دانلود دیتاشیت های آیسی های سری AT24C به لینک مقابل برید : آموزش کار با آیسی های حافظه سری at24cxx

توضیح پایه های آی سی های حافظه

پایه های این آیسی ها بسته به حافظش یه کمی تفاوت داره.که میتونید ترتیب پایه ها رو تو دیتاشیت(تو صفحه 1 یا 2 باشد باشه) ببینید.
VCC :  منبع تغزیه 5 ولت
GND : زمین
NC : به جایی وصل نمیشود >>> No Connect
A0-A1-A2 و… : تعیین آدرس سخت افزاری قطعه هستش>>>Address Inputs >>> اون طوری که یکی از سایت های خارجی گفته بود این پایه ها برا وقطیه که چند تا آی سی حافظه به میکرو وصل باشه …. حالا نحوه کارش دقیقا چیه رو من هنوز نفهمیدم(لذا اگه کسی فهمید به ما هم بگه)….لذا فعلا این پایه ها رو به GND وصل کنید تا بعدا یکارش کنم.
SCL : ارسال کلاک >>>> Serial Clock Input
SDA : انتقال اطلاعات >>>> SDA Serial Data
توجه : اگه کار دو پایه بالا رو متوجه نشدید>> زیاد مهم نیست>>>>لازم هم نیست بدونید فعلا.
TEST : زیاد مهم نیست…به جایی وصلش نکنید…… (Test Input (GND or VCC
WP : محافظت از دیتا های درون آی سی—اگه به VCC وصل بشه نمیشه اطلاعاتش رو تغییر داد و فقط میشه اطلاعاتش رو خوند….ولی اگه به GND وصل بشه ، هم میشه اطلاعاتش رو خوند و هم توش اطلاعات ریخت.
توضیح پایه های آی سی های حافظه

پروژه IC حافظه AT24C512

پروژه در این زمینه من چند تایی انجام دادم….که انشاالله به مرور زمان میزارمشون تو سایت.فعلا پروژه زیر و توضیحاتی که میدم رو قشنگ ببینید و بخونید تا بعد…
نحوه عملکرد پروژه : پروژه به این صورت کار میکنه که ابتدا کاراکتر های A تا Z در آی سی ذخیره میشن و بعد خونده میشن و در LCD نمایش داده میشن.

این از مدار پروژه
در مورد مدارش باید اینو بگم که پایه های SLC و SDA که به میکرو وصل میشوند باید توسط دو مقاومت 10 کیلو ، پول آپ بشن>>>> مطابق شکل زیر.
مورد بعد این که آی سی حافظه زیر از نوع 512 کیلو بیتی هستش >>> و نکته بعد که در بالا هم بهش اشاره کردم اینه که این آیسی ها پایهاشون باهم فرق داره….
مثلا آیسی 2 کیلوبتی با 1024 کیلوبیتی ترتیب پایه هاش مثل هم نیستند.>>>>لذا به این موضوع حتما دقت کنید.
میکرو استفاده شده هم مگا 32 هستش….lcd هم نوع کاراکتری و 16*2 هستش(^_^)

پروژه IC حافظه AT24C512

اینم از کد های پروژه
(بر روی دکمه بالای کد ها کلیک کنید تا در یه صفحه جدید و بزرگتر نگاش کنید.)

 

دانلود پروژه IC حافظه AT24C

سخن پایانی : والا دیگه فک نکنم چیزی مونده باشه که نگفته باشم ولی اگه چیزی جا انداختم بهم بید.
در ضمن اگه سوالی چیزی هم هست در خدمتیم.

گروه پرسش و پاسخ الکترونیکی در سروش
مهدی دمیرچیلو
ارسال دیدگاه
117

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

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

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

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

  1. Avatar

    مهمان

    آرزو

    سلام دوست عزیز. دنبال یه EEPROM یه مگابیتی توی بازار داخل میگردم. هرچی تو سایت های داخلی میگردم بیشتر از 512 پیدا نمیکنم. شما میتونی منو راهنمایی کنی؟ ممنون میشم ازت

  2. Avatar

    مهمان

    حمید

    سلام… مردی به مولا، دمت گرم، یه دونه باشی، واس نمونه باشی… ازت یک دنیا ممنونیم… khoda behet ghodrat bede

  3. Avatar

    مهمان

    محرم

    یاشا قارداش

  4. Avatar

    مهمان

    محرم

    سلام دوستان
    میشه به جای 24c01 از 24c02 استفاده کرد

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

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

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

      سلام – دیتاشیت هر دو رو بررسی کن – پایه هاشون فرق نداشتن استفاده کن.

  5. Avatar

    مهمان

    امین

    یک سری از ای سی هایی هست که فلش هستند مثل AT45DB161 شما تا حالا با این ای سی ها کار کردید؟ اگر بله من از کجا برم در مورد نحوه کارباهاش بخونم فارسی یا انگلیسی معرفی کنید. بعد تفاوتی که این ای سی های با EEPROM ها دارند دقیقا چیه؟ من میدونم ضرفیتشون بیشتره ولی من برا یه کاری می خوام که قرار هست یک دادخ ای مکررا روی حافظه رایت بشه و چون EEPROM ها اکثرا صدهزار بار بیشتر ظرفیت رایت ندارند من رفتم سراغ اینا شما پیشنهاد بهتری ندارد؟

  6. Avatar

    مهمان

    ناشناس

    دمت گرم مرد کارت 20 ع

  7. Avatar

    مهمان

    عظیمی

    سلام و خسته نباشید من میخوام تصویر رو با استفاده از حافظه ۲۴c۶۴ذخیره کنم و در ال سی دی گرافیکی نشون بدم میشه یه توضیح کوچیک در مورد این موضوع بزارید ممنون

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

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

      مهدی دمرچیلو

      سلام
      عکس؟ 24c64? نمیدونم دقیقا پروژتون چیه ولی از رم هم میتونید استفاده کنید.
      توضیح چی بدم – عکسو کد میکنی – در حافظه ذخیره میکنی و بعد میخونه و نمایش میدی-شما عکسو به کم تبدیل کن و داخل خود میکرو بزارش – نمایشش بده – اکی شد – برو بریزش تو حافظه و از اونجا بخون.

  8. Avatar

    مهمان

    ناشناس

    سلام من دارم برای استخدامی نفت میخونم یه تست دیدم گفته ic حافظه به شماره 2816 کدام است؟ الف) EPROM
    ب) EEPROM
    ج) RAM دینامیک
    د) RAM استاتیک
    کلا میخام بدونم چطور میشه ic ها رو حساب میکنن یا ثابت هستن باید حفظ کنم و اینکه چطور پیدا کنم

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

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

      مهدی دمرچیلو

      سلام
      shock
      اینا دیگه چه موجوداتی هستن laugh نفت؟ آیسی؟ چه ربطی داره – ربط هم داشته باشه، حفظ کردن اینا آخه دیگه چیه آخه جان داش – نمیدونم کدومشه – باید تو گوگل بسرچی اسم آیسیرو – طرف ( حالا هر کسی میخواد باشه ) مخ هم باشه – با تموم آیسی های موجود کار نکرده!!!

  9. Avatar

    مهمان

    هادی

    سلام و ممنون بابت اطلاعات خوبی که میذارید میخواستم ببینم حالا چجوری میشه AT24C512 رو پاک کرد

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

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

      مهدی دمرچیلو

      سلام
      در کل پاک کردن زیاد شاید منطقی به نظر نیاید – ولی میتونی از توابع نوشتن استفاده کنی و دیتا رو کاراکتر ۰ بدی ( و نه عدد ۰ )

      • Avatar

        مهمان

        pourya

        سلام آقا مهدی ممنون بابت تمام زحماتی که میکشی امیدوارم همیشه همین طور با علاقه بنویسی. ok
        یه سوال :
        میتونی یه چند خط کد برای پاک کردن کل حافظه at24c512 قرار بدی من از دیتاشیت چیزی نفهمیدم crazy از اون روش ذخیره کردن با توابع نوشتن نمیتونم استفاده کنم چون حدود ۱۱ دقیقه طول میکشه…! shock تا حافظه به صورت صحیح با کارکتر های صفر پر بشه من دنبال راهی هستم تا حد اکثر ۱ دقیقه.
        لطف میکنی اگر کد روشی که تو دیتاشیت گفته رو قرار بدی.

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

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

          مهدی دمرچیلو

          سلام
          به مطلب همین آییسی با ۱۷۶۸ مراجعه کنید – اونجا توابع کامل تر هستن.

  10. Avatar

    مهمان

    محمد

    سلام
    نمونه کدش برای آردوینو رو نداری توی سایت قرار بدی؟؟
    اومدم یه پروژه با آردوینو ببندم بابام دراومده تیکه به تیکه به یه مشکلی میخورم

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

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

      مهدی دمرچیلو

      سلام-نه-چی مالی هم تو نت پیدا نکردم – احتمالا خودم باید کتابخونشو بنویسم – ولی فعلا سرگرم کارای دیگم ولی مینویسم تو لیست و هفته آینده احتمالا انجام بدمش.

    • Avatar

      مهمان

      محمد

      کاری میتونم بکنم که به جای هفته دیگه همین دو سه روزه اوکی بکنیش؟ help
      برای پروژه دانشگاه میخوام واقعا لازمش دارم
      اصل مشکلم با این حافظه ایپرام خود آردوینو هست یه بار ازت پرسیدم گفتی ۱۰۰ درصد دائمی نیست ولی از هر کی دیگه میپرسم میگه دائمیه حتی توی آموزش ها خودت گفته بودی توی هر مکان از اپرام آی سی یه مقداری هست که از توی دیتاشیت میشه فهمید و اطلاعاتیه که کارخونه گذاشته توش از همین میشه فهمید که حافظه خودش هم کاملا دائمیه
      من میخوام اطلاعات یه متغیر string رو روی ایپرام بریزم ولی بعد چند دقیقه که برد رو کاملا خاموش میکنم اطلاعات از روی اون مکانی که نوشته بودم پاک میشه
      حدسی که میزنم از سر ریز شدن داده ها از اون آدرسه که اطلاعات رو توش ریختم
      یه کمکی برسون شر این پروژه رو بکنم cry

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

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

        مهدی دمرچیلو

        من هیچ قولی نمیدم – اول باید کارای دیگم تموم بشه – قول بدم بد نتونم اون وقت…
        حافظه ایپرام avr دائمی هستش ولی ممکنه تحت شرایطی ریست بشه که برا اینم باید تو نت بگردی راه حلشو پیدا کنی.

    • Avatar

      مهمان

      محمد

      سفارشی بخوام میتونی انجام بدی برام؟
      هزینش رو هم پرداخت میکنم چون واقعا لازمش دارم

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

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

        مهدی دمرچیلو

        نه جان داش – پروژه دانشجویی انجام نمیدم.

    • Avatar

      مهمان

      محمد

      فقط قبلش دو تا تابعی که این داده رو یه نگاهی بهشون بکن ببین چه جوریه
      http://turbodigital.ir/خواندن-و-نوشتن-رشته-string-در-eeprom-با-آردوینو-arduino/

  11. Avatar

    مهمان

    مجتبی

    مثل همیشه عااالی

  12. Avatar

    مهمان

    جلیل

    حله.لاقل یه آیسی بگو که حافظه rx buffer رو بتونم افزایش بدم!!

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

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

      مهدی دمرچیلو

      خب بگو دقیقا میخوای چیکار کنی
      والا اولین باره میشنوم حافظه rx-buffer اگه منظورت همون بافر دریافت سریال هستش که نرم افزاری تعریف میکنن تا جایی که من دیدم – مگه این که حجم اطلاعاتت زیاد باشه اون وقت باس بسته به نوع کارت حافظه مناسب رو انتخاب کرد

      • Avatar

        مهمان

        جلیل

        همون حافظه بافر منظورمه.rx interrupt.حجم اطلاعاتم ۹۰۰۰ کاراکتر هس ولی موقع کامپایل ارور میده مینویسه حافظه کمه.میخوام بدونم چه آیسی بزارم مهندس

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

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

          مهدی دمرچیلو

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

          • Avatar

            مهمان

            جلیل

            مشکل اینجاس که کل اطلاعات یجا فرستاده میشه.نرخ تبادل اطلاعات ۹۶۰۰ هس

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

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

            مهدی دمرچیلو

            خب باشه – شما هم که وای نمیسیتی تا کل دیتا دریافت بشه – همین که داره دیتا دریافت میشه، شما هم اون بلای مد نظر رو سر دیتا ها میاری کم کم.

1 2