پورت‌های ورودی و خروجی میکروکنترلر LPC1768

0
24
پورت‌های ورودی و خروجی میکروکنترلر LPC1768
پورت‌های ورودی و خروجی میکروکنترلر LPC1768

در این جلسه می‌خواهیم پورت‌های ورودی و خروجی lpc17xx_gpio  میکروکنترلر LPC1768 را برسی کنیم البته برای سری‌های مختلف فرقی ندارند و بطور کلی LPC17XX می‌نامیم.

 

پورت‌های ورودی و خروجی میکروکنترلر LPC1768
پورت‌های ورودی و خروجی میکروکنترلر LPC1768

میکروکنترلر LPC1768 حداکثر دارای پنج پورت و این پنج پورت سرجمع دارای هفتاد پین ورودی و خروجی می‌باشند. نام گذاری پورت‌ها بصورت P0,P1,P2,P3,P4 می‌باشند.

بعضی پورت‌ها دارای 32 پایه و بعضی دیگر کمترند و در داخل بعضی پورت‌ها بعضی پین‌ها قابل استفاده نیستن! مثلا پین‌های P0[12,13,14],P1[2,3,5,6,7,11,12,13] قابل استفاده نیستن. بقیه پین‌ها بصورت زیر هستن:

P[30:0]

P1[31:0]

P2[13:0]

P3[26:25]

P4[29:28]

فایل PDF زیر نقشه پایه‌های میکروکنترلر LPC1768 می‌باشد. فایل زیر را دانلود کنید در ادامه آموزش‌ها هم لاز می‌شه.

برای اطلاعات دقیق تر در مورد پین‌های ورودی و خروجی به قست pin configuration مراجعه کنید. خب اول کاری گفتم نمیخوام با رجیستر‌های میکروکنترلر LPC1768 کار کنیم و سعی می‌کنیم همه برنامه‌ها و آموزش‌ها بر اساس توابع CMSIS باشند در این قسمت فقط نگاهی گذرا به رجیستر‌ها می‌اندازیم و می‌ریم سر توابع lpc17xx_gpio.h که خیلی راحتر یاد بگیریم.

رجیستر‌های GPIO میروکنترلر LPC1768

  • رجیستر FIOxDIR

این رجیستر برای تعیین جهت پورت‌ها (ورودی یا خروجی ) مورد استفاده می‌شود.

  • رجیستر FIOxSET

این رجیستر جهت 1 کردن پین‌هایی که بصورت خروجی تعریف شدن.

  • رجیستر FIOxCLR

این رجیستر جهت 0 کردن پین‌هایی که بصورت خروجی تعیین شدن.

  • رجیستر FIOxPIN

این رجیستر دسترسی مستقیم به پورت‌های ورودی و خروجی را فراهم می‌کند. بطور مستقیم می‌توانیم روی پین بنویسید و بخوانیم.

  • رجیستر FIOxMASK

برای اینکه در پورت بعضی بیت‌ها را از عملیات نوشتن/خواندن یا تغییر حالت ورودی/ خروجی  محافظت کنیم از این رجیستر استفاده می‌کنیم.

  • رجیسترهای PINSEL 0-10

جهت اننتخاب نحوه عملکرد پین‌ها مورد استفاده قرار می‌گیرد بعضی پین‌ها عملکرد‌های مختلفی مانند GPIO,UART,SPI,… دارن

  • رجیسترهای PINMODE 0-9

جهت تنظیم مقاومت‌های PULL-UP و PULL-DOWN داخلی پورت‌ها

  • رجیتسر‌های PINMODE_OP 0-4

برای انتخاب حالت  Open Drain یا درین باز پین‌ها مورد استفاده قرار می‌گیرن.

خب تا اینجا مروری کردیم بر رجیستر‌های GPIO میکروکنترلر LPC1768، بریم سراغ توابع CMSIS برای کار با ورودی و خروجی‌ها.

برسی توابع کار با GPIO کتابخانه lpc17xx_gpio.h

تابع GPIO_ReadValue

Uint32_t  GPIO_ReadValue(uint8_t portNum);

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

  • ورودی تابع port_Num شماره پورتی که میخواهید بخوانید.
  • خروجی تابع uint32_t وضعیت پورت

تابع GPIO_SetDir

void GPIO_SetDir(uint8_t portNum, uint32_t bitValue, uint8_t dir);

برای تعیین ورودی/خروجی پین های پورت مورد استفاده قرار میگرد.

  • ورودی portNum : شماره پورت مورد نظر
  • ورودی bitValue: شماره پین های مورد نظر
  • ورودی dir : اگر 0  باشد ورودی و اگر 1 باشد خروجی

تابع GPIO_SetValue

void GPIO_SetValue(uint8_t portNum, uint32_t bitValue);

برای یک کردن پین‌هایی که خروجی تعیین شدن.

  • ورودی portNum : شماره پورت مورد نظر
  • ورودی bitValue : شماره پین‌های مورد نظر

تابع GPIO_ClearValue

void GPIO_ClearValue(uint8_t portNum, uint32_t bitValue);

برای صفر نمودن پین‌های یک پورت استفاده می‌شه.

  • ورودی portNum: شماره پورت مورد نظر
  • ورودی bitValue: شماره پین‌های مورد نظر

نکته مهم : این هدر فایل دارای توابع بیشتری می‌باشد مثلا FIO_HalfWordSetDir که بصورت 16 بیتی می‌تونیم وضعیت ورودی و خروجی‌ها را تعیین کنیم. که در این مرحله از یادگیری به این توابع نیاز نداریم.

مثال

پین‌های 21 و 22 از پورت 0 را خروجی تعیین و پین 21 را 1 و پین 22 را 0 کنید.

#include "lpc17xx.h"

#include "lpc17xx_gpio.c"

int main(void){

GPIO_SetDir(0, (1<<21)|(1<<22), 1);

GPIO_SetValue(0, (1<<21));

GPIO_ClearValue(0, (1<<22));

}

 

پورت های ورودی و خروجی میکروکنترلر LPC1768
پورت های ورودی و خروجی میکروکنترلر LPC1768

 

مثال دوم

مقدار پورت 0 را خوانده و در متغییر A ذخیره کنید.

#include "lpc17xx.h"

#include "lpc17xx_gpio.c"

int main(void){

uint32_t A;

A=GPIO_ReadValue(0);

}

خب فک کنم یاد گرفتین چطوری در میکروکنترلر LPC1768 پایه‌ها را ورودی/خروجی تعیین کنید و مقدار آن را صفر/یک کنید ویا بخوانید.

 

منبع:  میکرودیزاینرالکترونیک

 

مطلب قبلیتنظیمات کلاک میکروکنترلرهای PIC در CCS C
مطلب بعدیمعرفی CMSIS

پاسخ دهید

لطفا نظر خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید