مقالات متفرقه

آموزش کار با آیسی های حافظه سری at24cxx

آموزش کار با آیسی های حافظه سری at24cxx

آموزش کار با آیسی های حافظه سری at24cxx

آیسی های EEPROM شرکت ATMEL

این شرکت 3 نوع حافظه EEPROM تولید کرده است که می توانید در زیر مشاهده کنید:

  1. Serial EEPROM
  2. Parallel EEPROM
  3. OTP EPROM

ما از سری EEPROM سریال استفاده می کنیم ، همان مدل دارای مدل های مختلف است ، همانطور که در زیر نشان داده شده است:

  1. ( ۲Wire ( I2C
  2. SPI
  3. ۱Wire
  4. ۳Wire
  5. ( Automotive Serial EEPROMs ( I2C + SPI

همانطور که در زیر می بینید ، ما از مدل I2C آن استفاده می کنیم که همچنین یک سری متفاوت است:

ما از سری AT24C استفاده می کنیم ، اندازه موجود این سری 1 kbps تا 1024 kbps است و نام های آن به شرح زیر است:

AT24C01
AT24C02
AT24C04
AT24C08

AT24C16
AT24C32
AT24C64
AT24C128

AT24C256
AT24C512
AT24C1024

هر کدوم از آیسی های فوق هم در نسخه های مختلفی ساخته شده، که خود اتمل پیشنهاد کرده از جدید ترین نسخه آیسی ها استفاده کنیم ( تو اکثر دیتاشیت های این سری از آیسی های ایپرام ) برا طراحی های جدید، این آیسی ها با پسوند های زیر موجود هستند، حالا مثلا مدل ۵۱۲ فقط حالت “بدون پسوند / B / C” رو داره ولی ممکنه که آی سی های دیگه مدل های دیگه ای یا بیشتری داشته باشن، مثلا یه آیسی مدل D رو داره و یکی نداره، بگذریم، لیست پسوند ها به صورت زیر هستش:
که ما با آیسی بدون پسوند کار میکنیم، البته دیتاشیت اینا رو ببنید ( بدون پسوند/A/B/C/D/E ) تفاوت آنچنانی با هم ندارن و اگه کتابخونه ای برا پسوند X1 نوشته شده باشد برا پسوند X2 هم قابل استفاده هستش؛ من فقط مدل AT24C512 رو دارم و تموم پروژه هایی که تا حالا بستم هم از همین استفاده کردم ^_^، مطلب زیر هم بر مبنای دیتاشیت آیسی های “بدون پسوند” هستش ولی بازم میگم، دیتاشیت تمام اینا رو بررسی کنید، فقط در سری موارد جزئی با هم فرق دارن، لذا اگه بگم مطلب زیر ترجمه دیتاشیت تمام “پسوند ها” هستش اشتباه نگفتم؛ بگذریم زیاد حاشیه نریم ( البته غیر از مدل “بدون پسوند” بقیه مدل ها فک نکنم تو ایران باشه، باید بگردید، شاید باشه ولی من ندیدم )

دانلود دیتاشیت آیسی های ایپرام سری Serial EEPROM – I2C

دانلود دیتاشیت آیسی های ایپرام سری Serial EEPROM – I2C

توضیحات آیسی AT24C512

توضیحات آیسی AT24C512

این آیسی ها بهینه سازی شدن برا کارهای تجاری و صنعنی با وجود مد های low power و low voltage.
مقایسه امکانات بین تمام آیسی های سری AT24Cxx
مقایسه آیسی های حافظه eeprom

ترتیب پایه های آیسی های سری AT24Cxx
ترتیب پایه های آیسی های سری AT24Cxx

توضیح پایه های آیسی AT24C512

توضیح پایه های آیسی AT24C512

پایه های GND و VCC : به GND و ۵+ میکرو وصل شود.
پایه کلاک ( SCL ) و پایه دیتا ( SDA ) :  این دو تا پایه مربوطن به مبحث I2C و ربطی به این مطلب ندارن آنچنان، دیتا به کمک این دو پایه منتقل میشه. ( البته زمین دو مدار ( که اینجا میکروکنترلر و حافظه ایپرام خارجی هستش ) باید مشتک باشه، یعنی باید به هم وصل باشه )
پایه های آدرس آی سی ایپرام (A0, A1, A2) : این پایه ها برا تعیین آدرس آی سی حافظه بکار میرن، و تو کد نویسی و راه اندازی آیسی و I2C مورد استفاده قرار میگیرن، برا اطلاعات بیشتر درباره نحوه کار I2C تحقیق کنید، این پایه ها بسته به نوع آیسی تعدادشون متفاوت هستش ولی حداکثر ۳ تا A داریم و حداقل ۰ تا.
پایه محافظت از آی سی ایپرام دربرابر نوشتن و تغییرات (WP) : این پایه همون طور که از اسمش معلومه، با وصل کردنش به VCC دیگه نمیشه اطلاعاتش رو تغییر داد، در غیر این صورت باید به GND وصلش کنیم.
توجه : بهتره پایه های A و WP رو معلق رها نکنیم و با یه خازن کوپلینگ به GND وصل کنیم؛ هر چند که این پایه ها از درون پول آپشون فعال میشه اگه رها بشن ولی باز بهتره کاری که گفته شد رو انجام بدید.

عملیات آیسی AT24C512

عملیات آیسی AT24C512

وضعیت های Start و Stop  و ACKNOWLEDGE که بیشتر مربوط به i2c که میتونید تو نت دربارش مطالعه کنید.
مد STANDBY : به محض فعال شدن برق این آیسی و دریافت وضعیت Stop، به مد استندبای میره این آی سی ( یه مد کاهش مصرف هستش ).
توجه : بعد از هر عملیات خوندن یا نوشتن، وضعیت Stop ارسال میشه.

MEMORY RESET : After an interruption in protocol, power loss or system reset, any two-wire part can be reset by following these steps :
(a) Clock up to 9 cycles, (b) look for SDA high in each cycle while SCL is high and then
(c) create a start condition as SDA is high.

انتخاب آیسی EEPROM و شروع تبادل داده

در این قسمت میبینیم که چطور آیسی مد نظرمون رو انتخاب میکنیم و شروع به تبادل داده باهاش میکنیم و …

آدرس دهی آی سی AT24Cxx

آدرس دهی آی سی AT24Cxx

آدرس دهی آیسی AT24C512
بعد از ارسال وضعیت Start، این بسته ارسال میشه و ۲-۳ تا دیتای مهم رو در خودش داره :

  1. بیت ۰ ( LSB یا کم ارزش ترین بیت ) : تعیین نوشتن ( ۰ ) یا خوندن ( ۱ )
  2. در عکس بالا بعضا P0 یا P0-P1 یا P0-P1-P2 میبینید که اینا بیت کمکی هستن برا بحث آدرس بایتی که میخوایم مقدارشو تغیییر بدیم. ( حالا میدونم متوجه نشدید ولی اینو داشته باشید، در عنوان بعدی قشنگ توضیح میدم )
  3. یه سری بیت A که در بعضی فقط A0 در بعضی A0-A1 در بعضی A0-A1-A2 و در بعضی اصلا A وجود ندارد؛ خب حالا این A ها کارشون چیه؟ اینا برا بحث تعیین آدرس آیسی هستن، همون طور که میدونید تو پروتکول I2C هر آیسی یه آدرسی داره، تو اینجا هم همینطوره، مثلا :
    اگه فقط یه A داشتیم، یعنی همزمان حداکثر ۲ تا از این آیسی ها رو میتونیم به اون باس I2C وصل کنیم.
    اگه فقط دو تا A داشتیم، یعنی همزمان حداکثر ۴ تا …
    اگه سه تا A داشتیم، یعنی همزمان حداکثر ۸ تا …
    اگه هم A یی نداشتیم، یعنی همزمان حداثر ۱ تا …

توجه : این A هایی که میبینید، پایه های آیسی ما هستن؛ که میتونیم همشون رو به GND وصلشون کنیم یا همشون رو به VCC وصل کنیم یا هر ترکیب دیگه ای، این کار ما، آدرس اون آیسی رو تغییر میده، لذا تو برنامه نویسی هم باید مقدار صحیح رو قرار بدیم و استفاده کنیم، مثلا اگه دو تا A داشتیم به نام های A0 و A1، مثلا A0 رو به GND و A1 رو به VCC وصل کردیم، حالا آدرس آیسی فوق میشه ۲، که باید در فرمت دیتایی که در بالا مشاهده میکنید، ازش استفاده کنیم.

اگه آدرس رو صحیح فرستاده باشیم، آیسی مقدار ۰ برمیگردونه و در غیر این صورت میره به مد standby

محافظت از دیتا : تمام آیسی های فوق، دارای پایه محافطت از دیتا هستن، به نام WP، که با ۱ کردن این پایه ( وصل کردن به VCC ) امکان هر گدونه نوشتن در این آیسی ممنوع میشه ولی میتونیم ازش دیتا بخونیم، اگه بخوایم دیتا بنویسیم در این آیسی، باید پایه WP رو به GND وصل کنیم ( ۰ اش کنیم ).

عملیات نوشتن آی سی AT24Cxx

تغییر مقدار یک بایت در آی سی AT24Cxx

تغییر مقدار یک بایت در آی سی AT24Cxx

رو عکس زیر کلیک کنید و در کیفیت بالاتری ببینید :
عملیات نوشتن آی سی AT24Cxx
همون طور که در شکل بالا میبنید، فرمت دیتای ارسالی رو به صورت کامل و خوشگل! نشون داده، یکمکی در زیر توضیح میدم :

  1. وضعیت Start ارسال میشه.
  2. آدرس IC ( همون مقدار پایه های A0-A1 و… که بسته به نوع آیسی تعداد این پایه های A متفاوت هستش ) + بیت تعیین خودن/نوشتن + چند تا بیت دیگه که از قبل مقدار ثابتی داشتن ( در کل تمام این ۳ مورد میشه ۸ بیت یا ۱ بایت ) ارسال میشه، بعد آیسی حافظه یه بیت با مقدار ۰ به نام ACK یا همون تصدیق نامه برامون ارسال میکنه ( یعنی داداش من اون بایتی که فرستادی رو گرفتم، کلا گیرنده برا هر بایتی که میگیره یه ACK میفرسته )
  3. شماره بایتی که میخوایم مقدارشو تغییر بدیم رو ارسال میکنیم ( حالا سر این قسمت ما داستان داریم و در ادامه کامل توضیحش میدم ) و بعد آیسی یه ACK ارسال میکنه برامون. ( به این دیتا میگن، Word Address )
  4. بعد دیتا رو ارسال میکنیم و یه ACK میگیرم.
  5. وضعیت Stop ارسال میشه.

حالا این بحث آدرس بایتی که میخوایم بخونیم رو در زیر یکم توضیح بدم، این مورد تنها فرق بین تمام آیسی های سری AT24Cxx هستش ( تو فرمت دیتای ارسالی ) که اگه شکل بالا رو قشنگ نگاه کنید میبینید که فرقشون فقط در همین قسمته، در زیر به ترتیب نام آیسی از نظر مقدار حافظه توضیح میدم :
توجه : وقتی در زیر میگم این آیسی x تا بایت داره، حواستون باشه که شمارش از ۰ شروع میشه – لذا شماره گزاری بایت ها از ۰ تا x-1 هستش.
AT24C01 : این آیسی ۱۲۸ بایت داره، لذا برا بحث تعیین شماره بایت مد نظر ( Word Address ) نیاز به ۷ بیت داریم، لذا بیت ۸ ام بدون استفاده خواهد بود ( که این مورد در شکل موجود در عنوان “آدرس دهی آی سی AT24Cxx” قابل مشاهده هستش )؛ لذا برای این آیسی یک بایت Word Address ارسال میشود.
AT24C02 : این آیسی ۲۵۶ تا بایت داره، که برا Word Address این آیسی نیاز به ۱ بایت کامل داریم.
توجه : از این جا به بعد، چون ۱ بایت Word Address تکمیل شده، لذا مجبوریم از بیت های Device Address استفاده کنیم.
AT24C04 : این آیسی ۵۱۲ تا بایت داره، که برا Word Address این آیسی نیاز به “۱ بایت + ۱ بیت” داریم؛ که اون ۱ بایت در Word Address قرار میگیره و این ۱ بیت در موقعیت دوم Device Address قرار میگیرد ( به شکل موجود در عنوان “آدرس دهی آی سی AT24Cxx” مراجعه کنید )
AT24C08 : این آیسی ۱۰۲۴ تا بایت داره، که برا Word Address این آیسی نیاز به “۱ بایت + ۲ بیت” داریم؛ که اون ۱ بایت در Word Address قرار میگیره و این ۲ بیت در موقعیت دوم و سوم Device Address قرار میگیرد.
AT24C16 : این آیسی ۲۰۴۸ تا بایت داره، که برا Word Address این آیسی نیاز به “۱ بایت + ۳ بیت” داریم؛ که اون ۱ بایت در Word Address قرار میگیره و این ۳ بیت در موقعیت دوم و سوم و چهارم Device Address قرار میگیرد.
توجه : تا اینجا برا جلوگیری از ارسال بایت اضافه برا بحث Word Address میومدیم و بیت هایی که اضافه میومد رو به Device Address اضافه میکردیم ولی از این جا به بعد ( برا آیسی هایی که در زیر میاد ) این کار دیگه امکان پذیر نیست و باید ۱ بایت جدید Word Address ایجاد کنیم لذا تعداد Word Address ها میشه ۲ بایت.
AT24C32 : این آیسی ۴۰۹۶ تا بایت داره، که برا Word Address این آیسی نیاز به “۱۲ بیت” داریم؛ لذا بلاجبار دو بایت Word Address ارسال میکنیم که در این حالت مقدار ۴ تا بیت آخر بسته اول ( بایت اول ) Word Address مهم نیست.
AT24C64 : این آیسی ۸۱۹۲ تا بایت داره، که برا Word Address این آیسی نیاز به “۱۳ بیت” داریم؛ لذا بلاجبار دو بایت Word Address ارسال میکنیم که در این حالت مقدار ۳ تا بیت آخر بسته اول ( بایت اول ) Word Addresss مهم نیست.
AT24C128 : این آیسی ۱۶۳۸۴ تا بایت داره، که برا Word Address این آیسی نیاز به “۱۴ بیت” داریم؛ لذا بلاجبار دو بایت Word Address ارسال میکنیم که در این حالت مقدار ۲ تا بیت آخر بسته اول ( بایت اول ) Word Addresss مهم نیست.
AT24C256 : این آیسی ۳۲۷۶۸ تا بایت داره، که برا Word Address این آیسی نیاز به “۱۵ بیت” داریم؛ لذا بلاجبار دو بایت Word Address ارسال میکنیم که در این حالت مقدار ۱ بیت آخر بسته اول ( بایت اول ) Word Addresss مهم نیست.
AT24C512 : این آیسی ۶۵۵۳۶ تا بایت داره، که برا Word Address این آیسی نیاز به “۱۶ بیت” داریم؛ لذا دو بایت Word Address ارسال میکنیم. ( از تمامی بیت های Word Address استفاده شده و از بیت های Device Address هیچ استفاده ای نشده است )
توجه : از این جا به بعد، چون ۲ بایت Word Address تکمیل شده، لذا مجبوریم از بیت های Device Address استفاده کنیم.
AT24C512 : این آیسی ۱۳۱۰۷۲ تا بایت داره، که برا Word Address این آیسی نیاز به “۱۷ بیت” داریم؛ که اون ۲ بایت در ۲ بسته Word Address قرار میگیره و اون ۱ بیت هم در موقعیت دوم Device Address قرار میگیرد.

توجه : تمامی این مواردی که گفتم با مشاهده عکس های موجود در عنوان “آدرس دهی آی سی AT24Cxx” و “عملیات نوشتن آی سی AT24Cxx” قابل مشاهده است.

تغییر مقدار یک صفحه در آی سی AT24Cxx

تغییر مقدار یک صفحه در آی سی AT24Cxx

تغییر مقدار یک صفحه در آی سی AT24Cxx
خب نحوه نوشتن به صورت صفحه ای همانند نوشتن یه تک بایت دیتا هستش، فقط یه فرق کوچیک داره که در زیر صحبت میکینم دربارش :
توجه : اندازه صفحه در این ۱۱ تا آیسی با هم فرق داره و در همه یکسان نیست، لذا حاکثر تعداد بیتی که در یکبار میشه مقدارش رو تغییر داد در آیسی های مختلف، متفاومت هستش؛ حالا از تعداد صفحات بگذریم، اندازه هر صفحه هم در این آیسی ها با هم فرق داره، مثلا یه صفحه ممکنه در یه آیسی ۱۰ بایت باشه و در آیسی دیگه ۳۰ بایت ( مثلا )؛ برا دیدن جزئیات دقیق، به عکس مقایسه این آیسی ها که در اول مطلب قرار دادم، مراجعه کنید. ( این نکات رو باید در هنگام نوشتن کتابخونه برای این ۱۰-۱۱ تا آی سی در نظر بگیرید حتما )
خب بعد از ارسال وضعیت Start و بعد Device Address و بعد Word Address، دیتا هامون رو ۱-بایت ۱-بایت ارسال میکنیم و هر موقع خواستیم وضعیت Stop رو ارسال میکنیم؛ در همین حین که داریم دیتا ها رو ارسال میکنیم، لازم نیست، هر بار Word Address ارسال کنیم، همون Word Address یی که اول ارسال میکنیم کافیه، بعد از اون، آیسی این آدرس رو به صورت خوکار مقدارش رو زیاد میکنه.
توجه : در زیر میبینید اندازه هر صفحه رو، اگه به جدول مقایسه اول مطلب توجه کرده باشید، میبینید که این آیسی ها یه عمری دارن، یه محدودیت تعداد نوشتن دارن، بعد از اون آیسی خراب میشه، که نوشتن یه تک بایت = نوشتن یه صفحه کامل هستش یعنی هر دو یه بار حساب میشه، لذا اگه اطلاعاتمون رو به صورت صفحه ای بنویسم، طول عمر آیسی ما هم بیشتر خواهد بود به طبع، لذا در مواقعی که طول دادمون زیاده بهتره که از این روش نوشتن استفاده کنیم.
AT24C01 : میزان حافظه = ۱۲۸byte، تعداد صفحات = ۱۶، اندازه هر صفحه = ۸byte
AT24C02 : میزان حافظه = ۲۵۶byte، تعداد صفحات = ۳۲، اندازه هر صفحه = ۸byte
AT24C04 : میزان حافظه = ۵۱۲byte، تعداد صفحات = ۳۲، اندازه هر صفحه = ۱۶byte
AT24C08 : میزان حافظه = ۱Kbyte، تعداد صفحات = ۶۴، اندازه هر صفحه = ۱۶byte
AT24C16 : میزان حافظه = ۲Kbyte، تعداد صفحات = ۱۲۸، اندازه هر صفحه = ۱۶byte
AT24C32 : میزان حافظه = ۴Kbyte، تعداد صفحات = ۱۲۸، اندازه هر صفحه = ۳۲byte
AT24C64 : میزان حافظه = ۸Kbyte، تعداد صفحات = ۲۵۶، اندازه هر صفحه = ۳۲byte
AT24C128 : میزان حافظه = ۱۶Kbyte، تعداد صفحات = ۲۵۶، اندازه هر صفحه = ۶۴byte
AT24C256 : میزان حافظه = ۳۲Kbyte، تعداد صفحات = ۵۱۲، اندازه هر صفحه = ۶۴byte
AT24C512 : میزان حافظه = ۶۴Kbyte، تعداد صفحات = ۵۱۲، اندازه هر صفحه = ۱۲۸byte
AT24C1024 : میزان حافظه = ۱۲۸Kbyte، تعداد صفحات = ۵۱۲، اندازه هر صفحه = ۲۵۶byte
توجه مهم ۱ : امکان نوشن مقداری از صفحه وجود داره، یا این که یه صفحه رو ناقص بنویسیم. ( مثلا یه صفحه ۱۲۸ بایت هستش، ما ۵۰ بایتشو تغییر بدیم فقط )
توجه مهم ۲ : اگه مثلا از وسط یه صفحه شروع کنیم به نوشتن و به اندازه کل صفحه بخوایم بنویسیم، مثلا هر صفحه ۱۰۰ بایت هستش، حالا اگه از بایت ۵۰ ام شروع کنیم به نوشتن، و ۱۰۰ بایت بنویسیم، ۵۰ بایت در خونه های ۵۱ تا ۱۰۰ نوشته میشه ولی بقیه دیتا ها در خونه های ۰ تا ۵۰ نوشته میشه، یعنی در دیتا های قبلی بازنویسی میشه و مقدار دیتا های قبلی از بین میره، یعنی اون جایی که ما میخوایم نوشته نمیشه و میزنه دیتا های دیگه رو خراب میکنه، لذا حتما حواستون به اندازه هر صفحه و مکان شروع و میزان نوشتنتون باشه تا از این دست مشکلات رخ نده ( که این نکات رو در هنگام نوشتن کتابخونه باید مد نظر داشته باشید )

ACKNOWLEDGE POLLING :
Once the internally-timed write cycle has started and the EEPROM inputs are disabled, acknowledge polling can be initiated.
This involves sending a start condition followed by the device address word.
The Read/Write bit is representative of the operation desired.
Only if the internal write cycle has completed will the EEPROM respond with a “۰”, allowing the read or write sequence to continue.

عملیات خوندن آیسی AT24C512

خوندن یه بایت، شبیه نوشتن یه بایت هستش، با این تفاوت که اون بیت Read/Write که اون بیت ۰ ام بسته Device Address مقدارش رو از ۰ ( Write ) به ۱ ( Read ) تغییر میدیم؛ ۳ روش برای خوندن اطلاعات وجود دارد : خوندن مقدار آدرس فعلی، آدرس اتفاقی ( رندم )، خوندن زنجیره ای؛ در زیر به ترتیب بهشون میپردازم به صورت کامل :

خواندن مقدار آدرس فعلی در آی سی AT24Cxx

خواندن مقدار آدرس فعلی در آی سی AT24Cxx

خواندن مقدار آدرس فعلی در آی سی AT24Cxx
شمارنده داخلی word address ( این شمارنده در داخل آیسی حافظه قرار داره و منظور موقعیت بایت هستش که شمارنده تو کدوم موقعیت هستش )، آخرین مقدار خودش رو حفظ میکنه ( که طی عملیات خوندن یا نوشتن مقدارش تغییر میکنه )، این آدرس تا زمانی صحیح هستش که برق آیسی قطع نشه ( که در صورت قطع شدن برق، احتمالا مقدارش ۰ میشه ولی دیتاشیت حرفی نزده در این باره و این حدس من هستش )؛ وقتی آدرس به پایان صفحه آخر رسید، به صورت خودکار به بایت اول صفحه اول میره. ( به عبارتی بعد از سرریز، مقدارش به صورت خودکار ریست میشه ).
توجه : بعد از این که میکرو، ۱-بایت داده رو دریافت کرد، ACK ارسال نمیکنه!، همان طور که در شکل بالا مشاهده میکنید.
بعد از ارسال وضعیت Start، دیتای Device Address که بیت ۰امش رو ۱ کردیم رو ارسال میکنیم، بعد آیسی ایپرام یه بیت تصدیق نامه میفرسته و بعد ۱-بایت دیتا میفرسته و بعد وضعیت Stop رو ارسال میکنیم؛ وسلاااااااااااااااام ^_^
یه مشکل بزرگ : خب حالا اینجا دیتاشیت میگه هر جا شمارنده آدرس بود، منم همونجا رو میخونم و برات میفرستم، در حالی که این به درد ما نمیخوره، مثلا ما تو خونه ۱۰ یه کاراکتری نوشتیم حالا شمارنده تو خونه ۱۰۰ هستش و تعداد کل بایت ها ( خونه ها ) هم مثلا ۱۰۰۰ تا هستش، یعنی ما باید وایسیم تا خونه های ۱۰۰ تا ۱۰۰۰ خونه بشه و بعد دوباره خونه های ۰ تا ۹ تا بعد به خونه مد نظر ما برسه؟ آیا ما همچین صبری داریم؟ خب معلومه که ندارم ^_^، برا این کار میایم از روش خوندن بعدی استفاده میکنیم

خواندن تصادفی آی سی AT24Cxx

خواندن تصادفی آی سی AT24Cxx

توجه : علت این که این عنوانو نوشتم، اینه که دیتاشیت همینو نوشته بود، درحالی که به نظرم این عنوان اشتباه هستش چون در این قسمت ما یاد میگیرم که چطور بایت مد نظرمون رو بخونیم و نه مثل عنوان قبل آخرین بایت!؛ لذا تو این قسمت یه خواندن آگاهانه داریم و نه تصادفی، بگذریم، گفتم اینو بگم همین اول تا بعد در ادامه مطلب گیج نزنید.
روی عکس زیر کلیک کنید و در اندازه اصلی ببنیدش :
خواندن تصادفی آی سی AT24Cxx
روال کار این روش به این صورته که : آدرس خونه ( بایت ) مد نظر رو تعیین میکنیم ( Word Address ) و مثل بحث نوشتن که اول Word Address رو ارسال میکردیم، تو اینجا هم میایم همین کارو میکنیم ولی دیگه دیتایی ارسال نمیکنیم، یعنی وضعیت start و بعد Device Address و بعد Word Address رو ارسال میکنیم ولی دیگه دیتایی ارسال نمیکنیم، خب با این کار ما آدرس حافظه رو تغییر دادیم ( به این دیتای ناقصی که فرستادیم تو دیتاشیت عبارت Dunmy Write رو براش بکار برده ) و بعد از این میریم سراغ خوندن اطلاعاتمون ^_^، که خوندن اطلاعات رو هم که در عنوان قبل توضیح دادم، Sart رو ارسال میکنیم، Device Address رو ارسال میکنیم و بعد آیسی حافظه EEPROM دیتا اون خونه رو برا ما میفرسته و ما میخونیم ( و ack هم ارسال نمیکنیم ) و بعد Stop رو ارسال میکنیم؛ به همین راحتی و به همین خوشمزگی

خواندن زنجیره ای آی سی AT24Cxx

خواندن زنجیره ای آی سی AT24Cxx

روی عکس زیر کلیک کنید و در اندازه اصلی ببینیدش :
خواندن زنجیره ای آی سی AT24Cxx
توجه : اگه توجه کنید، این روش همون ارتقا یافته روش “خواندن مقدار آدرس فعلی” هستش؛ که تو اون روش هم وقتی دیتا رو خوندیم، ACK ارسال نمیکردیم، اینجا دیتا رو که خوندیم ACK ارسال میکنیم ولی زمانی که بخوایم دیگه دیتا دریافت نکنیم ( به عبارت صحبح تر، دیگه نخوایم EEPROM برامون دیتا بفرسته ) باید ACK نفرستیم بعد از دریافت دیتا.
خواندن زنجیره ای شروع میکنه از آدرس فعلی یا همانند خوندن تصادفی.
بعد از این که میکرو یه بایت داده دریافت کرد، یه ACK ارسال میکنه؛ آخرین بایتی که دریافت کردیم، دیگه ACK ارسال نمیکنیم؛ تا زمانی که EEPROM بسته ACK دریافت میکنه، شمارنده آدرسش زیاد میشه و مقدار اون خونه رو برا ما ارسال میکنه؛ وقتی شمارنده به خونه آخر برسه مقدارش ۰ میشه و دوباره از خونه ۰ شروع به خوندن میکنه و برا ما میفرسته.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا