آموزش راه اندازی ایسی حافظه فلشW25Q(نرم افزار پروگرام ایسی)

در اين بخش مي‌توانيد آموزش و مثال‌های مرتبط با میکروکنترلرهای AVR را مشاهده بفرمایید

مدیران انجمن: SAMAN, sinaset, شوراي نظارت

تاپیک را چگونه ارزیابی می کنید

اموزش + کتابخانه بسیار خوب و کاربردی برای ایسی
15
63%
خوب و مفید.
7
29%
جایی کاری بیشتر می داشت.
2
8%
 
مجموع رای گیری: 24

Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه‌شنبه ۲۶ آذر ۱۳۸۷, ۴:۲۰ ب.ظ
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22106 بار

آموزش راه اندازی ایسی حافظه فلشW25Q(نرم افزار پروگرام ایسی)

پست توسط sinaset »

بنام خداوند بخشنده و مهربان
باسلام

در این تاپیک می خواهیم اموزش راه اندازی ایسی حافظه W25Q را بدهیم .
تصویر
چرا ایسی حافظه فلش؟!
همانجور که می دانید،در بعضی طرح و پروژه ها، نیاز به حافظه ها می باشد. اما در بعضی طرح ها، نیاز است،که حافظه نه خیلی زیاد باشد به اندازه "فلش مموری" "SDCARD" نه خیلی کم باشد به اندازه EEPROM .

به عنوان مثال،ما می خواهیم چند تصویر 150 کیلوبایتی را بر روی نمایشگر نمایش بدهیم! اگر بخواهیم از حافظه eeprom استفاده کنیم،چون حجم ان کم می باشد،باید از چند حافظه استفاده کنیم! اما استفاده از چند حافظه ظرفیت بالا eeprom ،که خودش هزینه ها را خیلی بالا می برد!
اگر بخواهیم از SDcard با ظرفیت 2 یا 4 گیگ استفاده کنیم، همه هزینه ها به مقدار قابل توجه ی بالا می رود! هم اینکه،بسیار از ظرفیت حافظه SDcard خالی می ماند!

اینجاست که می توان به کمک حافظه های فلش در ظرفیت 4 یا 8 مگابایت ، با قیمت ها در محدودی 1 تا 3 هزارتومان .. این خلاء را جبران کرد و طرح ها را با هزینه کمتر انجام داد.

حافظه فلش چرا اینقدر ارزان تر از حافظه eeprom می باشد!

حافظه های فلش از نسل eeprom ها هستن، اما در حافظه فلش،مدار های کنترولی بایت به صورت انفرادی ! حذف شده اند و به صورت مجموعه ی کنترول میشوند، اینکار باعث شده هزینه تمام شده کمتر شود ..

خانه ها در حافظه W25Q چگونه می باشند؟!
تصویر
حافظه فلش w25q (مدل 4 مگابایتی)به صورت 64 بلوک 64 کیلوبایتی می باشد .هر بلوک حافظه 64 کیلوبایتی، 256 صفحه است،که هر صفحه از 256 بایت می باشد.

* حافظه W25q32 ، جمعا 16384 صفحه برای نوشتن دارد

چطور درون حافظه فلش w25q نوشته میشود!

همانجور که گفتیم، حافظه فلش به دلیل استفاده از مدارات کمتر، دیگر دسترسی مستقیم به تک تک بایت ها ندارد! و باید به صورت مجموعه(صفحه به صفحه) انها را کنترول کرد!

یعنی اگر ما می خواهیم،مثلا بایت شماره 10 را بخوانیم! چون این بایت در صفحه 0 می باشد! ما باید کل این صفحه را که 256 بایت است را بخوانیم، سپس درون یک متغیر 256 بایتی بریزیم،بعد بایت شماره 10 را مطالعه کنیم.

برای نوشتن اطلاعات هم باید چنین کنیم، و باید یک صفحه را به طور کل (256 بایت)مقدار دهی کنیم.

بطور کلی مدارات درونی فلش چنین می باشد،و باید به صورت صفحه صفحه کنترولر شود و به صورت مستقیم نمی توان،به یک بایت دسترسی داشت، این در حالی است که در حافظه EEPROM به تک تک بایت می توان دسترسی مستقیم داشت!

*یک از معایت دیگر حافظه فلش این است که ، معمولا مقداری از بایت ها صفحه ها هدر می رود ( تصور کنید دو فایل دارید که حجمشان یکی 253 بایت است و دیگر 230 بایت است،هر کدام یک صفحه را اشغال کند! مقداری از حجم حافظه،هدر می رود!) *البته با روش های میشود،جلوگیری کرد،ولی خوب !

نحویه پاک کردن اطلاعات در ایسی به چه طریق می باشد.؟!

متاسفانه یکی دیگر از معایت ایسی flash همین می باشد، شما نمی توانید به صورت بایت بایت، یا صفحه صفحه! اطلاعات حافظه را پاک کنید!

به چند طریق این کار انجام می شود:

به صورت سکتور به سکتور ( 4 کیلو بایت)
به صورت بلوک 32 کیلوبایتی
به صورت بلوک 64 کیلوبایتی
به صورت کلی (پاک سازی کل)

این هم به دلیل هم کم شدن هزینه و .. می باشد.


با چه روشی هایی با ایسی ارتباط برقرار میشود؟!

پرتکل ارتباطی این ایسی همان SPI می باشد . به چندین روش (برای افزایش سرعت) می توان با ایسی ارتباط برقرار کرد، از جمله read (خواندن معمولی) ، dual Read ، quad read و..

مهمترین ریجستر ایسی کدام است ؟!
تصویر
مهمترین ریجستر ایسی ، ریجستر وضعیت 1 می باشد Status register 1 می باشد،که به کمک ان می توانید

وضعیت، رایت کردن،مشغولی،وضعیت های امنیتی ایسی و .. را ببینید (جمعه 8 بیت)


دیگر مشخصه ها:
تصویر
سرعت انتقال داده در ایسی 40MB/s می باشد
100 هزاربار چرخه کامل نوشتن و پاک کردن
20 سال زمان نگه داری اطلاعات ایسی
ولتاژ 2.7 تا 3.6 کاری


فهرست مطالب تاپیک:

ارتباط با ایسی و خواندن شماره دستگاه و شماره کارخانه
معرفی کتابخانه نوشته شده برای ایسی W25q32

..
صفحه دوم
نرم افزار پروگرام ایسی W25q32 و W25Q64
کتابخانه کمی تکمیل تر برای W25q32 و W25q64
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.
Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه‌شنبه ۲۶ آذر ۱۳۸۷, ۴:۲۰ ب.ظ
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22106 بار

Re: آموزش راه اندازی ایسی حافظه فلش W25Q

پست توسط sinaset »

بنام خدا
باسلام


ارتباط با ایسی و خواندن شماره دستگاه و شماره کارخانه

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

ما در این ازمایش از مانیتور nokia n96 و میکروکنترولر Atmega32 استفاده می کنیم

به مانند تصویر نوکیا را به میکروکنترولر اتصال دهید.
تصویر
و پایه های ایسی را به پایه spi میکروکنترولر اتصال دهید .
تصویر
اما خواند نام کارخانه و دستگاه

به کمک این تابع،کدها را می خوانیم
Please Login or Register to see this code
که در برنامه بدین شکل میشود:
Please Login or Register to see this code

[External Link Removed for Guests]برنامه و کدها .

اکنون اگر برنامه رو پروگرام کنید،به مانند تصویر زیر به شما کد کارخانه و دستگاه داده میشود
تصویر
نکات:
*کدکارخانه همه ایسی ها EF می باشد
*در پرتئوس ایسی w25q وجود ندارد، ایسی گذشته شده نمادین می باشد.و فایل شبیه ساز خراب اجرا میشود!
(
باتشکر.
(**کتابخانه معرفی شده در این پست،قدیمی می باشد و اشکالات فراوان دارد،از کتابخانه ها معرفی شده در پست بعد،برای مثال بالا استفاده کنید**)
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.
Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه‌شنبه ۲۶ آذر ۱۳۸۷, ۴:۲۰ ب.ظ
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22106 بار

Re: آموزش راه اندازی ایسی حافظه فلش W25Q

پست توسط sinaset »

بنام خدا
باسلام


معرفی کتابخانه نوشته شده برای ایسی W25q32

مدتی قبل کتابخانه ی برای w25q32 نوشته ام،که خدا شکر،عملکرد خوبی نیز داشته،و به کمک ان توانسته ام،تصاویر مختلفی را بر روی LCD N96 نمایش بدهم!

قابلیت ها این کتابخانه تا به امروز:

پشتیبانی از ایسی حافظه W25q32 (حافظه w25q64 بزودی..!)
نوشتن و خواندن بر روی همه صفحه هات ایسی!
پاک سازی ایسی (به صورت سکتور 4 کیلوباتی،32 کیلوبایتی،64 کیلوبایتی)، فرمت کل ایسی.
رفتن به حالت کم مصرف و بیرون امدن از حالت کم مصرف.
مقدار دهی کارخانه ی به ریجستر (ریجستر اصلی،یعنی ریجستر شماره 1)
*بررسی پر یا خالی بودن یک صفحه !
**اطلاعات میزان پر بودن ایسی! به حجم و درصد !
**تابع نوشتن از اولین صفحه خالی موجود در ایسی!
*فرمت کردن ایسی به 3 روش مختلف.

کل توابع نوشته شده به اسم :
Please Login or Register to see this code

معرفی کوتاه توابع:


تابع خواندن وضعیت ریجستر ها "W25Q_read_StatustReg"

این تابع از نوع مقدار برگشتی می باشد.
همانجور که می دانید ما دو ریجستر در ایسی W25q که وضعیت را به ما شرح میدهد(که مهمترین ان ریجستر شماره 1 می باش) به کمک این تابع می توانیم وضعیت دو ریجستر را بخوانیم!

برای خواند باید چنین کنیم

unsigned char status
(1)status=W25Q_read_StatustReg

که درون پرانتز باید شمار ریجستر را نام ببریم،که در مثال بالا ریجستر شماره 1 را انتخاب کرده ایم ،اگر قصدا داشته باشیم ریجستر شماره 2 را بخوانیم باید عدد 2 را قرار میدهیم.

تابع نوشتن در ریجستر "W25Q_Write_StatusReg"

این تابع نیز برای نوشتن در ریجستر می باشد. باید مابین () مقدار مد نظر را در ریجستر بنویسید به مانند:

;(W25Q_Write_StatusReg(0x00

تابع صبر تا زمانی که ایسی از مشغول بیرون بی اید "wait_busy"

اگر از این تابع استفاده ،تا زمانی که ایسی مشغول باشد،درون این تابع نیز باقی خواهد ماند

;()wait_busy

همچنین اگر قصدا داشته باشه وضعیت بیت نوشتن را به صورت جداگانه فقط بخوانید از تابع مقدار برگشتی زیر استفاده کنید:

()W25Q_busy

تابع فعال سازی و غیر فعال سازی نوشتن ایسی W25Q_Write و W25Q_Write_Disable

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

;()W25Q_Write

و برای غیر فعال کردن ان نیز (که معمولا زیاد نیاز نمی شود!) از تابع :

;()W25Q_Write_Disable

همچنین اگر قصدا داشتید وضعیت بیت نوشتن را بخوانید از تابع مقدار برگشتی زیر استفاده کنید.

;()W25Q_wel

تابع نوشتن بر روی صفحه هات حافظه ایسی W25Q_Page_Program

اگر قصد داشته باشید. اطلاعاتی برروی صفحه هات ایسی بنویسید از تابع W25Q_Page_Program می توانید استفاده کنید این تابع بدین شکل می باشد

(آرایه دیتا ،شماره صفحه)W25Q_Page_Program

آرایه دیتا باید، یک ارایه 8 بیتی، 256 تایی باشد(*نهایت 256 بایت،کمتر از ان نیز میشود،اما صفحه شما هدر میرود و خالی می ماند!)، شماره صفحه نیز باید بين 0 تا 16384 باشد. (تعداد صفحه هات ایسی w25q32)

به عنوان مثال:

;"بنام خداوند بخشنده و مهربان"=[unsigned char str[256

;(W25Q_Page_Program(0,str

تابع نوشتن بر روی ایسی از اولین صفحه خالی موجود در ایسی W25Q_Page_Program_Res


زمانی نیاز است،بدون از دست دادن وقت! از اولین صفحه خالی نوشته شده در ایسی،شروع به نوشتن در ایسی کنیم ! به عنوان مثال، ایسی تا صفحه 30 ان نوشته شده! ما می خواهیم از صفحه 31 به بعد شروع به نوشتن کنیم،برای این منظور از این تابع استفاده خواهیم کرد:

نحویه استفاده از این تابع دستور قبلی تفاوتی ندارد(کدهای لازم برای انجام بهتر دستور درون تابع گذاشته شده،برای همین کارها ساده شده است)

;(W25Q_Page_Program_Res(0,str


تابع خواندن اطلاعات صفحه هات حافظه ایسی W25Q_Read_Data

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

;[unsigned char str[256

;(W25Q_Read_Data(0,str

نام و نام کارخانه ایسی W25Q_Manufacturer_Device_ID

به کمک تابع بالا می توانید شماره کارخانه و دستگاه را بخوانید
تابع از نوع برگشتی می باشد، شما باید دو متغیر به ان بدهید،تا اطلاعات را به درون ان به ریزد (به مانند مثال اول تاپیک)

;unsigned char man,dev

;(W25Q_Manufacturer_Device_ID(man,dev

دستورات پاک سازی سکتور،سکتور 32 کیلوبایتی،سکتور64 کیلوبایتی،کل حافظه

در صورتی که قصدا داشته باشید سکتورها را به صورت 4 کیلوبایتی پاک سازی کنید باید از دستور W25Q_Sector_Erase استفاده کنید

بدین شکل

;(W25Q_Sector_Erase(0
بین () باید شماره سکتور ایسی باشد،که در این ایسی بین 0 تا 1024 می باشد

اگر قصد داشته باشید به صورت 32 کیلوبایتی حافظه را پاک کنید باید بدین شکل عمل کنید:

;(W25Q_BlockErase_32(0

بین () باید شماره سکتور32 کیلوبایتی ایسی باشد،که در این ایسی بین 0 تا 128 می باشد

اگر قصد داشته باشید به صورت 64 کیلوبایتی حافظه را پاک کنید باید بدین شکل عمل کنید:

;(W25Q_BlockErase_64(0

بین () باید شماره سکتور32 کیلوبایتی ایسی باشد،که در این ایسی بین 0 تا 64 می باشد.

اگر قصد داشته باشید کل حافظه را فرمت کنید،باید از دستور زیر استفاده کنید

;()W25Q_Chip_Erase

فرمت ایسی به سه روش مختلف Format_ic

اگر قصد داشته باشید ایسی را به سه شکل مختلف،یعنی سکتور 4 کیلوبایتی،سکتورهای 32 و سکتورهای 64 بایتی، از این دستور می توانید استفاده کنید،تا کل اطلاعات حافظه پاک شود.

;(نوع فرمت)Format_ic

//عدد 0 فرمت سکتور به سکتور
//عدد 1 فرمت بلاک هاي 32 کيلوبايتي
//عدد 2 فرمت بلاک ها 64 کيلوبايتي


تابع رفتع و بیرون امدن از مد کم مصرف SPI_Flash_WAKEUP و SPI_Flash_PowerDown

اگر قصد داشته باشید ایسی را به مد کم مصرف ببرید باید از تابع زیر استفاده کنید:
;()SPI_Flash_PowerDown

و اگر قصدا داشته باشید ان را از ان مد در بی اورید باید از تابع زیر استفاده کنید:
;()SPI_Flash_WAKEUP

تابع مشخص شدن خالی یا پر بودن صفحه ایسی Check_page

به کمک این تابع برگشتی می توانید متوجه بشوید،صفحه ایسی پر می باشد یا خالی!

unsigned char status

(status=Check_page(0

مقدار () همان صفحه مورد نظر ما می باشد، اگر مقدار برگشتی 0 باشد،یعنی صفحه خالی می باشد،اگر مقدار برگشتی 1 باشد، یعنی صفحه پر می باشد!


اخرین تابع، Info_data_ic

به کمک این تابع می توانیم بفهیم چه مقدار از حافظه ایسی پر می باشد (به کیلوبایت،درصد،تعداد صفحه هات خالی و تعداد صفحه هات پر )

این تابع نیز به صورت برگشتی می باشد،و برای استفاده نیز باید چند متغیر به ان داد.

;unsigned int write,no_write,KByte_Used,Percent_Used

;(void Info_data_ic( &write, &no_write,&KByte_Used,&Percent_Used


متغیر write مقدار،صفحه هات پر را معرفی می کنید متغیر no_write تعداد صفحه هات خالی، متغیر KByte_Used مقدار استفاده از حافظه به کیلوبایت، درصد استفاده از ایسی را به ما می گوید Percent_Used (از 100 درصد)

کد همه کتابخانه نوشته شده :
Please Login or Register to see this code

[External Link Removed for Guests]کتابخانه از اینجا .(*[External Link Removed for Guests]موقت و کمکی)

انشالله در پست های اینده مثال های با این کتابخانه معرفی میشود. همچنین سعی می شود،تا در اینده نرم افزار برای اپلود اطلاعات به ایسی ساخته و معرفی شود.

پیشنهاد و انتقادی بود حتما بفرمایید. ضمنا فروش!!!! این کدها و .. حرام می باشد!.

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.
New Member
پست: 1
تاریخ عضویت: جمعه ۷ مهر ۱۳۹۶, ۱۰:۵۳ ق.ظ

Re: آموزش راه اندازی ایسی حافظه فلش W25Q(معرفی کتابخانه)

پست توسط fdrvhv »

تشکر بابت این آموزش. فقط لطفا فایل ها را نمیشه دانلود کرد.
Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه‌شنبه ۲۶ آذر ۱۳۸۷, ۴:۲۰ ب.ظ
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22106 بار

Re: آموزش راه اندازی ایسی حافظه فلش W25Q(معرفی کتابخانه)

پست توسط sinaset »

باسلام .
کتابخانه را یک بار دیگر در سایت دیگری اپلود کردم،(در پست قبلی ان را قرار دادم).
برای دیدن عکس و .. بهتر تا زمانی که سرویس پرشین گیگ درست شود صبر کنید (معمولا هر چند مدت یک بار چنین میشود،پرشین گیگ تقریبا بهتر از اکثر سرویس ها اپلود می باشد)
باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.
New Member
پست: 8
تاریخ عضویت: دوشنبه ۲۰ آذر ۱۳۹۶, ۱۰:۲۷ ق.ظ
سپاس‌های ارسالی: 10 بار
سپاس‌های دریافتی: 4 بار

Re: آموزش راه اندازی ایسی حافظه فلش W25Q(معرفی کتابخانه)

پست توسط HA M ID »

سلام
وقتتون بخیر

ممنونم ازتون بابت این کتابخونه
جهت استفاده از این کتابخونه برنامه ی تست زیر رو نوشتم ولی در LCD چیزی نشون نمیده.گویا عملیات نوشتن و خوندن درست صورت نمیگیره.
ممنون میشم راهنمایی کنید. Please Login or Register to see this code 


دز lcd مینویسه:  data: 
و دیگه چیزی نمینویسه.در حالی که باید بنویسه
save data:777777
Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه‌شنبه ۲۶ آذر ۱۳۸۷, ۴:۲۰ ب.ظ
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22106 بار

Re: آموزش راه اندازی ایسی حافظه فلش W25Q(معرفی کتابخانه)

پست توسط sinaset »

سلام بر شما.
خواهش میکنم.

قبل از چاپ متن،از دستور sprintf و بریزد تویه رشته،بعد رشته رو چاپ کنید. ببینید بازهم جواب نمیدهد!

ضمن اینکه بهتراست قبل از شروع، ابتدا ببینید بررسی کنید ببینید،ایسی ارتباطش صحیح می باشد یا که خیر،به کمک دستور زیر
W25Q_Manufacturer_Device_ID
متغیر اول که درون این تابع گذاشته میشود،نام کارخانه درونش نوشته میشود و متغیر دوم،ایدی ..
unsigned char Read_1,Read_2
[unsigned char str[16
(W25Q_Manufacturer_Device_ID(&Read_1,&Read_2
سپس
(sprintf(str,"MAINFUCT:0x%x DEVICE:0x%x",Read_1,Read_2

;(lcd_puts(str

ببینید ایدی ها درست و .. داده میشود.
اگر داده نشد،ارتباطات و سخت افزار خودتون را چک کنید.
باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.
New Member
پست: 8
تاریخ عضویت: دوشنبه ۲۰ آذر ۱۳۹۶, ۱۰:۲۷ ق.ظ
سپاس‌های ارسالی: 10 بار
سپاس‌های دریافتی: 4 بار

Re: آموزش راه اندازی ایسی حافظه فلش W25Q(معرفی کتابخانه)

پست توسط HA M ID »

بله آی دی رو به درستی نشان میده و زمانی که از printf استفاده می کنم در lcd هم نمایش میده چیزی رو
ولی اونی نیست که من در خط قبلش ذخیره کردم.گویا خوندن از فلش مشکل نداره و نوشتن در فلش مشکل داره
واقعا نیاز دارم و نمی دونم چرا به درستی کار نمی کنه!!!؟؟؟
لطف می کنید درباره ی این دوخط هم توضیح بدین؟؟ //#define FLASH_CS_HIGH() (PORTB|=(1<<4)) //وضعيت غير فعال سازي براي ايسي
//#define FLASH_CS_LOW() ((PORTB &=~(1<<4))) // وضعيت فعال سازي براي  
Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه‌شنبه ۲۶ آذر ۱۳۸۷, ۴:۲۰ ب.ظ
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22106 بار

Re: آموزش راه اندازی ایسی حافظه فلش W25Q(معرفی کتابخانه)

پست توسط sinaset »

سلام .

اون دو دستوری که اشاره کردید،مربوط به فعال سازی و غیر فعال سازی ایسی می باشد. * نیازی نیست شما از ان استفاده کنید،جاهایی که لازم بوده استفاده شده،مگر اینکه قصد داشته باشید کار بخصوصی انجام بدید.

کتابخانه خودتون رو اینطور تعریف کنید "include "w25q.h

از دستور sprintf استفاده کردید؟! مستقیم اطلاعات رو نخونید اول به کمک sprintf تبدیلش کنید به رشته %s اگر جواب نگرفتید برای اینکه بفهمید اصلا دستوری در حافظه ذخیره شده یا خیر

یکی از متغیر ها [saving_flash[0 (به عنوان مثال 0 ) رو به کمک دستور sprintf به صورت هگزا دسیمال بگیرید %xو چاپ کنید. ببینید چه خروجی به شما داده میشود.
ضمن اینکه نیازی نیست از سه دستور زیر استفاده کنید و از برنامه خود حذفشون کنید (منظور در برنامه که نوشتید،نه از کتاب خانه اصلی برنامه)
FLASH_CS_LOW();
W25Q_Write();
W25Q_Chip_Erase();
این رو جایگزین کنید
W25Q_BlockErase_64(0);

** دستور W25Q_Chip_Erase(); نباید زیاد استفاده شود!

امتحان کنید و در صورت امکان نتیجه رو باجزییات بیشتر اعلام کنید.
باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.
New Member
پست: 8
تاریخ عضویت: دوشنبه ۲۰ آذر ۱۳۹۶, ۱۰:۲۷ ق.ظ
سپاس‌های ارسالی: 10 بار
سپاس‌های دریافتی: 4 بار

Re: آموزش راه اندازی ایسی حافظه فلش W25Q(معرفی کتابخانه)

پست توسط HA M ID »

نکاتی که امر فرمودید رو انجام دادم.
خروجی دستور زیر

Please Login or Register to see this code

عدد 37 هست که برای مثال وقتی saving_flash[256]="777777" رو به saving_flash[256]="477777" تغییر میدم خروجی میشه 34

خروجی دستور زیر هم

Please Login or Register to see this code

عدد صفر هست یعنی flash_read : 0

خروجی دستور زیر هم
Please Login or Register to see this code
علامتی شبیه به اهم هست.
Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه‌شنبه ۲۶ آذر ۱۳۸۷, ۴:۲۰ ب.ظ
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22106 بار

Re: آموزش راه اندازی ایسی حافظه فلش W25Q(معرفی کتابخانه)

پست توسط sinaset »

سلام بر شما

خروجی شما کاملا صحیح است!

37 به اسکی میشود عدد 7

شما بجایی %s این %c رو جاگزین کنید انشالله مشکلتان حل خواهد شد.

---
همچنین می توانید،این رو هم در پایان امتحان کنید

Please Login or Register to see this code

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.
New Member
پست: 8
تاریخ عضویت: دوشنبه ۲۰ آذر ۱۳۹۶, ۱۰:۲۷ ق.ظ
سپاس‌های ارسالی: 10 بار
سپاس‌های دریافتی: 4 بار

Re: آموزش راه اندازی ایسی حافظه فلش W25Q(معرفی کتابخانه)

پست توسط HA M ID »

سلام و بسیار ممنونم بابت پاسخگوییتون
saving_flash درواقع آرایه ایست که ذخیره میشه در فلش
آرایه ایی که از فلش می خونیم flash_read هست
همانظور که در بالا اشاره کردم اصلا خروجی درستی نمیده.
یعنی write یا read در فلش مشکل ذارن که احتمال زیاد write مشکل داره.

بسیار سپاسگذارم از وقتی که برای بنده میذارید
آخرین ويرايش توسط 1 on HA M ID, ويرايش شده در 0.
ارسال پست

بازگشت به “آموزش و مثال‌ها AVR”