09120786892
atrinelectronic@gmail.com تهران پاساژ امجد طبقه1 واحد 16
دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی DS1307 (بخش اول)

دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی DS1307 (بخش اول)

2019-01-10 11:33:28

جلسه چهل و هشتم _معرفی واحد I2C جهت برقراری ارتباط با DS1307

I2Cیا (IIC (Inter integrated circuits  یک نوع گذرگاه رابط است که در بسیاری از مدارهای مجتمع از جمله سنسورها، حافظه ها و RTC ها جهت تبادل داده پیاده سازی شده است. بسیاری این رابط را رابط دو سیمه یا (TWI(Two Wire Interface می نامند. این پروتکل توسط شرکت Philips در سال 1982 طراحی و بکار گرفته شد.

از خصوصیات این رابط در میکروکنترلرها می توان به موارد زیر اشاره نمود:

رابطی انعطاف پذیر، قدرتمند و با سرعتی نسبتا مناسب که فقط به دو سیم برای انتقال داده نیاز دارد.

قابلیت پشتیبانی از مدهای عملکرد Master و Slave در حالت های فرستنده و گیرنده

قابلیت شبکه کردن چند دستگاه با هم

دارای 7 بیت آدرس دهی برای اتصال به Slave های مختلف        

همانطور که در شکل فوق مشاهده می کنید، در این پروتکل تمامی دستگاه ها به دو سیم SDA و SCL متصل شده اند. پایه  (SCK(serial clock برای ایجاد پالس جهت همزمانی ارتباط بکار می رود و پایه (SDA(serial data جهت ارسال و دریافت داده بکار می رود. پایه های مذکور از لحاظ الکتریکی کلکتور باز هستند.یعنی برای استفاده از آنها باید با یک مقاومت به مثبت مدار متصل شوند.  مقدار مقاومت Pull up برای منبع تغذیه 5 ولت 4.7K اهم و برای تغذیه 3.3 ولت برابر 1.5K اهم می باشد. اگر چندین دستگاه توسط دو خط مربوط به i2c به یکدیگر متصل شوند هر خط تنها وقتی یک می ماند که هیچکدام از دستگاه های متصل، آن را یک نکرده باشند. هنگامی که خط در حالت بیکاری باشد دو پایه i2c در حالت یک قرار می گیرند. دستگاه های مختلف می توانند از طریق رابط i2c به هم متصل شوند که به هر کدام از این اتصال ها یک گره میگویند. هرکدام از این دستگاه ها می توانند Master یا Slave باشند. دستگاه Master گره ای است که وظیفه تولید پالس ساعت و آغاز و پایان تبادل داده را بر روی خط را به عهده دارد. گره Slave دریافت کننده پالس ساعت است و توسط Master آدرس دهی می شود.هر Master و Slave می توانند در دو حالت دریافت کننده یا ارسال کننده عمل کنند.یعنی چهار حالت پیش می آید که عبارتند از: Master ارسال کننده، Master دریافت کننده، Slave ارسال کننده، Slave دریافت کننده.

استفاده از پروتکل I2C در فواصل بسیار کوتاه میان Master و Slave (کمتر از 20 سانتی متر) امکان پذیر است. برای فواصل طولانی تر باید از تقویت کننده سیگنال استفاده کرد. بنابراین در ارتباط I2C با فاصله بین 20 تا 70 سانتی متر می توان از مدار تقویت کننده زیر به جای مقاومت های پول آپ استفاده نمود.

حالت آغاز و حالت پایان

 I2C یک پروتکل ارتباط محور است یعنی هر فرایند انتقال داده با یک حالت آغاز شروع شده و با یک حالت پایان خاتمه می یابد. توجه داشته باشید که ایجاد حالت آغاز و پایان تنها توسط Master انجام می شود. به دلیل اینکه ارسال داده و ایجاد حالت های آغاز و پایان، همه بر روی خط SDA انجام می شوند پس باید مابین آنها تفاوت هایی باشد. حالت های آغاز و پایان تنها در زمان بالا بودن خط SCL ایجاد می شوند.حالت آغاز زمانی ایجاد می شود که در زمان بالا بودن خط SCL یک لبه پایین رونده در خط SDA ایجاد شود و حالت پایان هنگامی ایجاد می شود که در هنگام بالا بودن خط SCL یک لبه بالا رونده در خط SDA ایجاد شود.

قضیه از این قرار است که هنگامی که Master بخواهد داده ای را به Slave مشخصی ارسال کند ابتدا حالت آغاز را بر روی خط ایجاد میکند و پس از آن آدرس Slave را بر روی خط SDA قرار می دهد. در صورتیکه Slave آدرس خود را دریافت کند بیت Ack را بر روی خط SDA قرار می دهد. بیت ACK بیتی است که جهت تایید صحت دریافت آدرس و یا داده مابین Master و Slave مبادله می شود و مقدار آن صفر است.در مقابل بیت NACK وجود دارد که عدم صحت دریافت داده یا آدرس و یا عدم آمادگی برای تبادل را به اطلاع طرفین می رساند و مقدار آن یک است.مثلا Master برای ارسال آدرس ۸ پالس ساعت ایجاد می کند و برای اطلاع از تایید دریافت آدرس یک پالس اضافی نیز تولید می کند(یعنی ۹ پالس) در این صورت در پالس نهم اگر Slave آدرس خود را دریافت کرده باشد خط را صفر(acknowledge=ACK) می کند و در غیر این صورت خط در حالت یک (not acknowledge=NACK) می ماند. اگر Master بیت ack را بر روی خط  SDA ببیند داده هشت بیتی را برای ارسال به Slave با ایجاد ۸ پالس ساعت بر روی خط قرار می دهد و برای اطمینان از اینکه Slave داده را دریافت کرده و آماده دریافت داده بعدی هست با ایجاد پالس نهم بیت ACK یا NACK را از Slave در یافت می کند.که اگر ACK دریافت شود به ارسال داده بعدی می پردازد و اگر NACK دریافت شود با ایجاد حالت پایان به ارتباط خاتمه می دهد. پس ساختار بسته داده و آدرس در I2C نه بیتی است که هشت بیت برای داده یا آدرس و یک بیت برای تایید یا عدم تایید دریافت(ACK/NACK) می باشد.

فرایند نوشتن از طریق i2c

۱- ایجاد حالت آغاز برای شروع عمل نوشتن.

۲-ارسال آدرس Slave و پس از آن ارسال صفر به معنای فرمان عمل نوشتن.

۳- ارسال آدرس اولین خانه ای که باید عمل نوشتن در آن انجام شود.

۴-ارسال داده برای قرار گرفتن در خانه ای که آدرس آن را ارسال کردیم.

۵- ارسال حالت پایان برای خاتمه بخشیدن به فرایند انتقال. توجه کنید در مرحله ۴ می توان هرتعداد داده را که بخواهیم به ترتیب ارسال نماییم.در این صورت داده ها به ترتیب در خانه های حافظه Slave قرار می گیرند. یعنی شماره آدرس خانه ها به صورت خودکار افزایش می یابد. البته این در صورتی است که پس از ارسال هر داده بیت ACK را از طرف Slave دریافت کنیم.هرکجا که بیت NACK دریافت شود دو راه در پیش رو داریم. اول اینکه حالت آغاز را برای ایجاد یک ارتباط جدید ایجاد کنیم و دوم اینکه با ایجاد حالت پایان به ارتباط خاتمه دهیم.

فرایند خواندن از طریق i2c

 ۱- حالت آغاز را برای شروع فرایند انتقال ارسال می نماییم.

۲- آدرس Slave و پس از آن یک را به معنای فرمان عمل خواندن ارسال می نماییم.

۳- آدرس اولین خانه ای را که قرار است از آن بخوانیم به عنوان اولین داده ارسال می نماییم.این عمل باعث مقداردهی اشاره گر داخلی I2C می شود.

۴- حالت آغاز مکرر را برای شروع فرایند انتقال ارسال می کنیم.

۵- آدرس Slave و پس از آن یک را به معنای فرمان عمل خواندن ارسال می نماییم.

۶- داده را از خانه ای که در مرحله ۳ آدرس آن را ارسال کردیم خوانده  و سپس هر چند بایت داده که بخواهیم را از خانه های مجاور بعدی می خوانیم.

۷- حالت پایان را برای خاتمه بخشیدن به فرایند انتقال ارسال می نماییم. توجه کنید که در مرحله ۶ پس از در یافت هر بایت از داده بیت ACK توسط Master باید بر روی خط قرار داده شود تا Slave متوجه آمادگی Master جهت دریافت داده ای بعدی بشود و آنها را به ترتیب برای Master بفرستد. در هر کجا، اگر Master بیت NACK را بر روی خط قرار دهد Slave دیگر داده ای برای Master نمی فرستد و Master مجبور است برای برقراری دوباره ارتباط با همان Slave فرایند را دوباره آغاز کند.پس بعد از مشاهده بیت NACK یا باید دوباره حالت آغاز را ایجاد کرد و یا با ایجاد حالت پایان خط را آزاد کنیم.

                                                                                                                                                                 دلتون شاد و لبتون پر خنده

                                                                                                                                                                          محمد هادی دشتی

برای مشاهده آموزش جلسه اول(معرفی هسته آرم و میکروکنترلرهای 32 بیتی شرکت ST  ) کلیک کنید.

برای مشاهده آموزش جلسه دوم( معرفی نرم افزارهای مورد نیازجهت برنامه نویسی و پروگرام  ) کلیک کنید.

برای مشاهده آموزش جلسه سوم( نحوه دانلود آخرین نسخه از نرم افزار STM32CubeMX   ) کلیک کنید.

برای مشاهده آموزش جلسه چهارم(نحوه انجام تنظیمات در نرم افزار STM32CubeMX  ) کلیک کنید.

برای مشاهده آموزش جلسه پنجم(نحوه برنامه نویسی پروژه چشمک زن با نرم افزار Keil ) کلیک کنید.

برای مشاهده آموزش جلسه ششم(نحوه تولید کد و تنظیمات در محیط STM32CubeMX و برنامه نویسی در محیط Keil برای راه اندازی کلید) کلیک کنید.

برای مشاهده آموزش جلسه هفتم(معرفی نرم افزار STM32 Flash Loader Demonstrator و نحوه دانلود برنامه و پروگرام کردن میکرو) کلیک کنید.

برای مشاهده آموزش جلسه هشتم( نحوه راه اندازی ال سی دی کاراکتری-قسمت اول) کلیک کنید.

برای مشاهده آموزش جلسه نهم( نحوه راه اندازی ال سی دی کاراکتری و آشنایی با دستورات کاربردی کتابخانه ال سی دی کاراکتری ) کلیک کنید.

برای مشاهده آموزش جلسه دهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد ADC(بخش اول)  ) کلیک کنید.

برای مشاهده آموزش جلسه یازدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد ADC(بخش دوم)  ) کلیک کنید.

برای مشاهده آموزش جلسه دوازدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد تایمر(بخش اول)  ) کلیک کنید.

برای مشاهده آموزش جلسه سیزدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد تایمر(بخش دوم)  ) کلیک کنید.

برای مشاهده آموزش جلسه چهاردهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی وقفه با تحریک خارجی(جلسه اول) ) کلیک کنید.

برای مشاهده آموزش جلسه پانزدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی وقفه با تحریک خارجی (بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه شانزدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی سون سگمنت(بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه هفدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی سون سگمنت(بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه هجدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی کانتر(بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه نوزدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی کانتر(بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه بیستم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد PWM(بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و یکم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد PWM(بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و دوم (دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد سریال(بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و سوم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد سریال(بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و چهارم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد سریال(بخش سوم)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و پنجم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد DAC(بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و ششم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد DAC(بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و هفت(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی منابع کلاک (بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و هشت(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی منابع کلاک (بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه بیست ونهم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی منابع کلاک (بخش سوم)) کلیک کنید.

برای مشاهده آموزش جلسه سی ام(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی منابع کلاک (بخش چهارم)) کلیک کنید.

برای مشاهده آموزش جلسه سی و یکم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی System Tick Timer) کلیک کنید.

برای مشاهده آموزش جلسه سیو دوم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفیSPI (بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه سی و سوم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفیSPI (بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه سی و چهارم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی SPI (بخش سوم)) کلیک کنید.

برای مشاهده آموزش جلسه سی و پنج(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی واحد RTC (بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه سی و ششم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی واحد RTC (بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه سی و هفتم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی واحد Watchdog  (بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه سی و هشتم(دوره آموزشی میکرو کنترلرهای STM32 _ معرفی واحد Watchdog  (بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه سی و نهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی صفحه کلید ماتریسی 4x4 (بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه چهلم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی صفحه کلید ماتریسی 4x4 (بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه چهل و یکم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی صفحه کلید ماتریسی 4x4 (بخش سوم)) کلیک کنید.

برای مشاهده آموزش جلسه چهل و دوم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی ال سی دی گرافیکی 128x64 (بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه چهل و سوم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی ال سی دی گرافیکی 128x64 (بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه چهل و چهارم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی ال سی دی گرافیکی 128x64 بخش سوم)) کلیک کنید.

برای مشاهده آموزش جلسه چهل و پنجم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی ال سی دی گرافیکی 128x64 (بخش چهارم)) کلیک کنید.

برای مشاهده آموزش جلسه چهل وششم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی ال سی دی گرافیکی 128x64 (بخش پنجم)) کلیک کنید.

برای مشاهده آموزش جلسه چهل و هفتم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی ال سی دی گرافیکی 128x64 (بخش ششم)) کلیک کنید.

به سبد خرید اضافه شد.
سبد خرید
Item removed. بازگرداندن