آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32

blog
۱۴۰۳-۱۲-۲۱
6 دقیقه

با سلام، در این قسمت از آموزش‌ها میریم سراغ SPI در این میکروکنترلر، واحد Spi یکی از قابلیت‌ها خوب هر میکرو کنترلر هست که میتوان خیلی امکانات جانبی را توسط این واحد به میکرو کنترلر وصل کرد.

برای آشنایی با این پریفرال و این رابط سریال می‌توانید این آموزش را مطالعه کنید.

SPI و I2S در میکروکنترلرها

باید بدانید که SPI در اکثر میکروکنترلرها با I2S واحد سخت‌افزاری تقریباً یکسانی دارند زیرا I2S که برای ارسال و دریافت دیجیتالی سیگنال‌های صوتی استفاده می‌شود هم سازوکاری بسیار مشابه به SPI دارد. این میکرو هم واحد  SPI و I2S اشتراکی دارند.

ساختار داخلی واحد SPI

بریم یکم با ساختار داخلی واحد SPI این میکرو آشنا بشیم:

آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32

این بهم قابلیت‌های واحد I2S برای پیداکردن بینشی نسبت به I2S این میکرو

آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32

این واحد بر خلاف واحد I2C در جلسه قبلی، زیاد توضیح خاصی ندارد. اکثرا با این رابط کار کردید و این رابط رو می‌شناسید.

این شکل نمای داخلی واحد SPI هست.

آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32

این هم تایمینگ دیاگرام واحد SPI

آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32

 

راه‌اندازی واحد SPI

بریم سراغ راه‌اندازی واحد SPI

آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32

مرحله اول: راه‌اندازی کلاک

اول کلاک واحدهایی که لازم داریم رو راه‌اندازی می‌کنیم.

آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32

آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32

مرحله دوم: تنظیم GPIOها

سپس GPIOها را تنظیم می‌کنیم اگر قرار است Full duplex  باشد هم مسیر ارسال “MOSI” و هم مسیر دریافت “MISO” باید پایه هاشون تنظیم بشه، برای ما دوطرفه است پس هر دو رو تنظیم می‌کنیم.

پس از راه‌اندازی این بخش میریم سراغ کانفیگ کردن خود واحد SPI که به شکل زیر است:

آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32

مرحله سوم: پیکربندی واحد SPI

در اینجا انتخاب چیپ مرود نظرمون رو نرم‌افزاری کردیم؛ یعنی باید با یک GPIO این پایه رو متناسب با خواست Slave صفر یا یک بکنیم تا Slave فعال بشه و دیتا رو بفرستیم وقتی هم تموم شد Slave رو غیرفعال کنیم.

تنظیمات دیگر SPI

یک مقسم فرکانس زدیم روی واحد  SPIفرکانس واحد SPI  به این شکل محاسبه می‌شود:   

آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32   

 

CPHA رو صفر قرار میدیم و CPOL روهم صفر.

فرق یک و صفر CPHA و CPOL:

آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32

ارسال دیتا از طریق SPI

سایز ارسال دیتا در هر سایکل رو 8 می‌زاریم و مد رو هم مستر می‌زاریم و با استفاده از توابع CMD و INIT تنظیماتی که انجام دادیم رو اعمال می‌کنیم و واحد SPI رو فعال می‌کنیم.

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

آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32

کد کامل بالا به شکل زیر است:

ارتباط با IC حافظه W25Q

حالا پس از این راه‌اندازی بریم به سراغ راه‌اندازی یک ای سی SPI ای سی که مد نظر من هست آی سی حافظه هست، ما میخوایم در این آموزش کد داخل ایسی حافظه W25Q رو بخونیم. که هم شامل ارسال و هم شامل دریافت دیتا میشود.

کدی که باید بفرستیم تا بتوانیم iD رو بخونیم

آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32

تنظیمات GPIO برای IC حافظه

بعد از راه‌اندازی کلاک این تنظیمات GPIO رو داریم:

آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32

تنظیمات SPI برای IC حافظه

پس از آن تنظیمات SPI :

آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32

ارسال و دریافت دیتا از حافظه

این تابع هم برای ارسال و دریافت دیتا می‌نویسیم:

آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32

این تابع زیاد بهینه نیست و صرفاً برای آموزش شماست، در این تابع از While استفاده شده است برای چک‌کردن خالی بودن یا نبودن بافرهای دریافتی  و ارسالی که زیاد بهینه نیست، شما می‌توانید از راه‌های بهتری که مانع از قفل‌شدن برنامه بشوند استفاده کنید.

در این تابع ما اول پایه CS رو صفر می‌کنیم تا چیپ حافظه فعال بشه سپس کد خواندن ID رو براش می‌فرستیم سپس چک می‌کنیم که بافر دریافت خالی هست یانه، می‌توان از این خط نیز صرف‌نظر کرد، سپس شروع به ارسال و دریافت هم‌زمان 4 بایت دیتا می‌کنیم، برای ارسال طبق دیتاشیت ای سی حافظه نیازی به ارسال دیتا در این مرحله نداریم پس صفر می‌فرستیم و هر چی که برامون فرستاد رو در ارائه rx_data [0] تا rx_data[3] ذخیره می‌کنیم. سپس CS رو یک می‌کنم تا ای سی حافظه خاموش شود و مقدار دریافتی رو از تابع خارج می‌کنم.

نمایش داده‌های دریافتی

سپس دیتا دریافتی رو روی UART می‌فرستیم:

آموزش راه‌اندازی SPI در میکروکنترلر WCH و IC حافظه W25Q - قسمت 13 آموزش CH32

 کد کامل برنامه بالا:

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

اطلاعات
0
0
لینک و اشتراک
profile

عرفان رفیعی

متخصص الکترونیک

erixson.elc@gmail.com

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت

سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم

سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ

آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی

پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله