خانه / ARM / UART
تصویر تراشه های LPC17XX ,وبسایت علی اکبر خلیلی,UART

UART

UART| پورت سریال| تراشه های LPC17XX | دربارهUART | پایه هایUART

تراشه های LPC17XX دارای ۴ پورت سریال مجزا از هم می‌باشند.

در این بخش قراره درباره UART در تراشه های LPC17XX صحبت کنیم.

 تصاوير زيباسازی وبلاگ،قالب وبلاگ،خدمات وبلاگ نويسان،آپلودعكس، كد موسيقی، روزگذر دات كام http://roozgozar.com

خصوصیات واحد UART این میکروکنترلر:

  • طول دیتا ۵, ۶, ۷, ۸ بیت داده
  • توانایی تولید parity
  • ۱۶ بایت رجیستر FIFO برای ارسال و دریافت
  • پشتیبانی از DMA برای ارسال و دریافت
  • قابلیت تنظیم خودکار باود
  • حالت ادرس دهی چند پردازنده‌ای
  • پشتیبانی از ارتباط مادون قرمز
  • پشتیبانی از کنترل جریان داده نرم افزاری

پایه‌های مربوط به UART

PINSEL_FUNC_3PINSEL_FUNC_2PINSEL_FUNC_1PINSEL_FUNC_0Pin NumberPort Pin
[ADC0[6RXD0GPIO99P0.03
[ADC0[7TXD0GPIO98P0.02
TXD1[PWM1[1GPIO48P2_0
RXD1[PWM1[2GPIO49P2.1
[MAT3[0SDA2TXD2GPIO62P0.10
[MAT3[1SCL2RXD2GPIO63P0.11
SDA1TXD3CAN1_RxGPIO82P0.0
SCL1TXD3CAN1_TxGPIO85P0.1

 

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

  • تغذیه: بعد از ریست، UART0,1 فعال بوده و UART2,3 فعال نمی‌باشند که باید با استفاده از PCONP فعال شوند.
  • تنظیم کلاک با استفاده از PCLKSEL
  • تنظیم نرخ باود با استفاده از رجیسترهای UART‌
  • تنظیم رجیسترهای FIFO‌
  • تنظیم و انتخاب پین‌ها
  • تنظیم DMA‌ در صورت نیاز

UART| پورت سریال| تراشه های LPC17XX | دربارهUART | پایه هایUART

رجیسترهای واحد UART :

هرکدام از رجیسترها، بطور مجزا برای هرکدام از کانال‌ها وجود دارند

DescriptionRegister
رجیستر بافر دریافت کننده اطلاعات. آخرین مقدار دریافتی در این رجیستر نگهداری می‌شود(RBR (DLAB=0
رجیستر نگهدارنده مقدار انتقالی(THR (DLAB=0
بایت کم ارزش مقسم فرکانس جهت تنظیم باود(DLL (DLAB=1
بایت پر ارزش مقسم فرکانس، جهت تعیین باود(DLM (DLAB=1
رجیستر فعالسازی وقفه(IER (DLAB=0
رجیستر نشان دهنده وقفهIIR
رجیستر کنترل FIFOFCR
رجیستر کنترل خطLCR
رجیستر وضعیت خطLSR
یک رجیستر ذخیره‌سازی 8 بیتی موقتی برای نرم افزارSCR
رجیستر کنترل خودکار نرخ باودACR
رجیستر کنترل ارتباط مادون قرمزICR
رجیستر مقسم کسری. تولید کلاک برای مقسم نرخ باودFDR
رجیستر فعالسازی ارسال، این رجیستر برای خاموش یا روشن کردن ارسال کننده UART ، برای کنترل جریان داده نرم افزاری بکار می‌رود.TER

 

رجیستر UxRBR :

DescriptionSymbolBit
بافر دریافت ورودی، محتوی قدیمی ترین اطلاعات دریافتی از رجیسترهای FIFO می‌باشد. CPU ، اطلاعات را از این رجیستر دریافت می‌کند.RBR7:0
reserved31:8

 

دسترسی:

 

 

ساختار رجیستر DLL , DLM :

UART| پورت سریال| تراشه های LPC17XX | دربارهUART | پایه هایUART
UART| پورت سریال| تراشه های LPC17XX | دربارهUART | پایه هایUART

 

از این دو رجیستر برای تعیین مقسم مورد نیاز برای تنظیم باود استفاده می‌شود.

 

رجیستر UxTHR :

DescriptionSymbolBit
رجیستر نگهداری اطلاعات ارسالی. این رجیستر اولین رجیستر از بافرهای FIFO ارسالی می‌باشدو اطلاعات موجود در این رجیستر، آخرین بایت برای ارسال می‌باشد.THR7:0
reserved31:8

دسترسی:

 

رجیستر UxTER :

DescriptionSymbolBit
reserved-6:0
هنگامی که این بیت یک باشد، داده ای که در THR قرار می‌گیرد، از طریق پین TXD ارسال می‌شود. هنگامی که این بیت صفر شود، اگر داده ای درحال ارسال باشد، ارسال آن را به پایان می‌رساند و داده دیگری را قبل از یک شدن دوباره این بیت ارسال نخواهد کرد.
این بیت بعد از ریست یک می‌باشد.
TXEN7

دسترسی:

 

 

رجیستر کنترل FIFO : UxFCR

DescriptionSymbolBit
FIFO Enable0
RX FIFO reset1
TX FIFO reset2
هنگامی که بیت فعالساز FIFO ست باشد این بیت باعث انتخاب حالت DMA می‌شود.DMA Mode select3
reserved-5:4
این دو بیت، تعداد بایت های دریافتی را که باعث فعال شدن وقفه یا درخواست DMA می شوند را تعیین می‌کند

RE Trigger level7:6
reserved-31:8

 

ساختار رجیستر UxLCR :

DescriptionSymbolBit
Word Length Select1:0
STOP Bit Select2
Parity Enable3
Parity Select5:4
Break Control6

DLAB Divisior Latch Access Bit7
reserved31:8

 

ساختار رجیستر UxLSR :

DescriptionSymbolBit
این بیت هنگامیکه UxRBR داده‌ی خوانده نشده ای را نگهداری کند، ست می‌شود و هنگامی که رجیستر UxRBR خالی باشد صفر می‌شود.(Receiver Data Ready (RDR0
این بیت زمانی ست می‌شود که داده جدیدی وارد رجیستر UxRSR شود و رجیستر UxRBR نیز پر باشد.
در این حالت، اطلاعاتی روی رجیستر UxRBR مجددا نوشته نخواهد شدو دیتای موجود در رجیستر UxRSR از بین خواهد رفت.
خواندن این رجیستر (UxLSR) باعث پاک شدن این بیت خواهد شد.
(Overrun Error (OE1
اگر بیت Parity از دیتای دریافتی دارای خطا باشد، این بیت ست خواهد شد.
این بیت براساس بررسی رجیستر UxRBR تاثیر می‌پذیرد
خواندن این رجیستر (UxLSR) باعث پاک شدن این بیت خواهد شد.
(Parity Error (PE2
اگر بیت stop از داده دریافتی مقدار صفر داشته باشد، این بیت ست می‌شود.
این بیت براساس بررسی رجیستر UxRBR تاثیر می‌پذیرد
خواندن این رجیستر (UxLSR) باعث پاک شدن این بیت خواهد شد.
(Framing Error (FE3
هنگامی که بلوک سریال، یک داده که تمام بیت‌های آن اعم صفر باشد دریافت کند این توقف رخ می‌دهد.
در این حالت بخش دریافت دیتا در بلوک UART در حالت بیکار قرار می‌گیرد و تا یک داده با تمام بیتهای یک دریافت نکند فعال نمی‌شود
(Break Interrupt (BI4
ان بیت بلافاصله پس از خالی شدن رجیستر UxTHR ست شده و با پر شدن آن صفر می‌شود.Transmitter Holding )Register Empty (THRE5
اگر هر دو رجیستر UxTHR و UxTSR همزمان با هم خالی باشند، این بیت ست می‌شود. ولی اگر در هر یک از دو رجیستر ذکر شده دیتا وجود داشته باشد، این بیت صفر می‌شود.(Transmitter Empty (TEMT6
اگر هر دیتایی با یکی از خطاهای PE, FE, BI وارد رجیستر UxRBR شود این بیت ست خواهد شد.
خواندن این رجیستر (UxLSR) و عدم وجود خطا در رجیسترهای FIFO باعث پاک شدن این بیت خواهد شد.
(Error in RX FIFO (RXFE7
reserved31:8

ساختار رجیستر UxLSR :

DescriptionSymbolBit
IrDAEn0
IrDAInv1
اگر بیت Parity از دیتای دریافتی دارای خطا باشد، این بیت ست خواهد شد.
این بیت براساس بررسی رجیستر UxRBR تاثیر می‌پذیرد
در صورت ست شدن این بیت، حالت تثبیت عرض پالس IrDA فعال می‌شود. این خاصیت با استفاده از بیتهای 3 تا 5 از همین رجیستر تعیین می‌شود.
FixPulseEn2
اگر بیت 2 از همین رجیستر ست شده باشد، می‌توان عرض پالس ارسالی IrDA‌را پیکره‌بندی نمود. در حالتی که بیت FixPulse صفر باشد، عرض پالس فرستنده از فرمول زیر بدست می‌آید.
PulseDin5:3
reserved31:6

TPCLK = period of Peripheral CLK

 

ساختار رجیستر UxIER :

DescriptionSymbolBit
وقفه دریافت اطلاعات ورودی برای کانال متناظر را فعال می‌کند
RBR Interrupt Enable0
وقفه خالی شدن رجیستر THR را فعال می‌کند. وضعیت این وقفه از رجیستر UxLSR‌قابل بررسی است.

THRE Enable1
وقفه وضعیت خط RX را فعال می‌کند. وضعیت این وقفه از رجیستر [UxLSR[4:1 قابل بررسی است.
RX Line Status Interrupt Enable2
reserved7:3
فعالساز وقفه موفقیت در تنظیم خودکار باودABEOIntEn8
فعالساز وقفه Time-out تنظیم خودکار باودABTOIntEn9
reserved31:10

ساختار رجیستر UxIIR :

DescriptionSymbolBit
وضعیت وقفه. توجه شود این بیت با صفر فعال می‌شود. وقفه معوق با استفاده از بیت ها 1 تا 3 همین رجیستر تعیین می‌شود
IntStatus0
نشان دهنده نوع وقفه
THRE Enable3:1
reserved-5:4
کپی‌های بیت صفر از رجیستر FCR هستند.

FIFO Enable7:6
این بیت با پایان موفقیت آمیز تنظیم خودکار باود، در صورتی که وقفه متناظر با آن فعال باشد، ست می‌شود.ABEOInt8
این بیت اگر تنظیم خودکار باود دچار Time-out شود و وقفه متناظر با آن فعال باشد، ست می‌شود.ABTOInt8
reserved31:10

 

 تصاوير زيباسازی وبلاگ،قالب وبلاگ،خدمات وبلاگ نويسان،آپلودعكس، كد موسيقی، روزگذر دات كام http://roozgozar.com

 

مثال ۱: برنامه ای بنویسید که اعداد بین ۰ تا ۲۵۵ را با استفاده از UART0‌ به کامپیوتر ارسال کند.

UART| پورت سریال| تراشه های LPC17XX | دربارهUART | پایه هایUART

نکات مهم برای پیکره بندی UART :

  1. باید ابتدا نقش پایه ها را تعیین کنیم.
  2. به رجیستر PINMODE نباید کاری داشته باشیم و وضعیت pull up پایه ها در وضعیت پیشفرض قرار داشته باشند.
  3. تنظیمات مربوط به FIFO باید انجام شود و حافظه FIFO مربوط به ارسال ودریافت خالی شوند، چون ممکن است از آخرین بار روشن بودن میکرو، داده در آنها باقی مانده باشد.
  4. پس از آن باید وضعیت دیتا را تعیین کنیم.
  5. در مرحله بعد باید ابتدا فرکانس کاری واحد uart‌ مورد نظر را بخوانیم و بعد متناسب با آن مقدار باود را بسازیم.
  6. برای ساختن مقدار باود باید بیت DLAB ست باشد که در هنگام تنظیم وضعیت دیتا این کار را انجام می‌دهیم. و بعد از تنظیم باود دوباره آن را صفر میکنیم.

 

✔  pdf این مطلب را میتوانید از اینجا دانلود کنید 

              pdf – uart 

 

درباره admin

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