UART| پورت سریال| تراشه های LPC17XX | دربارهUART | پایه هایUART
تراشه های LPC17XX دارای ۴ پورت سریال مجزا از هم میباشند.
در این بخش قراره درباره UART در تراشه های LPC17XX صحبت کنیم.
خصوصیات واحد UART این میکروکنترلر:
- طول دیتا ۵, ۶, ۷, ۸ بیت داده
- توانایی تولید parity
- ۱۶ بایت رجیستر FIFO برای ارسال و دریافت
- پشتیبانی از DMA برای ارسال و دریافت
- قابلیت تنظیم خودکار باود
- حالت ادرس دهی چند پردازندهای
- پشتیبانی از ارتباط مادون قرمز
- پشتیبانی از کنترل جریان داده نرم افزاری
پایههای مربوط به UART
PINSEL_FUNC_3 | PINSEL_FUNC_2 | PINSEL_FUNC_1 | PINSEL_FUNC_0 | Pin Number | Port Pin |
---|---|---|---|---|---|
[ADC0[6 | RXD0 | GPIO | 99 | P0.03 | |
[ADC0[7 | TXD0 | GPIO | 98 | P0.02 | |
TXD1 | [PWM1[1 | GPIO | 48 | P2_0 | |
RXD1 | [PWM1[2 | GPIO | 49 | P2.1 | |
[MAT3[0 | SDA2 | TXD2 | GPIO | 62 | P0.10 |
[MAT3[1 | SCL2 | RXD2 | GPIO | 63 | P0.11 |
SDA1 | TXD3 | CAN1_Rx | GPIO | 82 | P0.0 |
SCL1 | TXD3 | CAN1_Tx | GPIO | 85 | P0.1 |
مراحل پیکره بندی:
- تغذیه: بعد از ریست، UART0,1 فعال بوده و UART2,3 فعال نمیباشند که باید با استفاده از PCONP فعال شوند.
- تنظیم کلاک با استفاده از PCLKSEL
- تنظیم نرخ باود با استفاده از رجیسترهای UART
- تنظیم رجیسترهای FIFO
- تنظیم و انتخاب پینها
- تنظیم DMA در صورت نیاز
UART| پورت سریال| تراشه های LPC17XX | دربارهUART | پایه هایUART
رجیسترهای واحد UART :
هرکدام از رجیسترها، بطور مجزا برای هرکدام از کانالها وجود دارند
Description | Register |
---|---|
رجیستر بافر دریافت کننده اطلاعات. آخرین مقدار دریافتی در این رجیستر نگهداری میشود | (RBR (DLAB=0 |
رجیستر نگهدارنده مقدار انتقالی | (THR (DLAB=0 |
بایت کم ارزش مقسم فرکانس جهت تنظیم باود | (DLL (DLAB=1 |
بایت پر ارزش مقسم فرکانس، جهت تعیین باود | (DLM (DLAB=1 |
رجیستر فعالسازی وقفه | (IER (DLAB=0 |
رجیستر نشان دهنده وقفه | IIR |
رجیستر کنترل FIFO | FCR |
رجیستر کنترل خط | LCR |
رجیستر وضعیت خط | LSR |
یک رجیستر ذخیرهسازی 8 بیتی موقتی برای نرم افزار | SCR |
رجیستر کنترل خودکار نرخ باود | ACR |
رجیستر کنترل ارتباط مادون قرمز | ICR |
رجیستر مقسم کسری. تولید کلاک برای مقسم نرخ باود | FDR |
رجیستر فعالسازی ارسال، این رجیستر برای خاموش یا روشن کردن ارسال کننده UART ، برای کنترل جریان داده نرم افزاری بکار میرود. | TER |
رجیستر UxRBR :
Description | Symbol | Bit |
---|---|---|
بافر دریافت ورودی، محتوی قدیمی ترین اطلاعات دریافتی از رجیسترهای FIFO میباشد. CPU ، اطلاعات را از این رجیستر دریافت میکند. | RBR | 7:0 |
reserved | • | 31:8 |
دسترسی:
1 2 3 |
. I = LPC_UARTx -> RBR ; . |
ساختار رجیستر DLL , DLM :

از این دو رجیستر برای تعیین مقسم مورد نیاز برای تنظیم باود استفاده میشود.
رجیستر UxTHR :
Description | Symbol | Bit |
---|---|---|
رجیستر نگهداری اطلاعات ارسالی. این رجیستر اولین رجیستر از بافرهای FIFO ارسالی میباشدو اطلاعات موجود در این رجیستر، آخرین بایت برای ارسال میباشد. | THR | 7:0 |
reserved | • | 31:8 |
دسترسی:
1 2 3 |
. LPC_UARTx -> THR = ch ; // send char . |
رجیستر UxTER :
Description | Symbol | Bit |
---|---|---|
reserved | - | 6:0 |
هنگامی که این بیت یک باشد، داده ای که در THR قرار میگیرد، از طریق پین TXD ارسال میشود. هنگامی که این بیت صفر شود، اگر داده ای درحال ارسال باشد، ارسال آن را به پایان میرساند و داده دیگری را قبل از یک شدن دوباره این بیت ارسال نخواهد کرد. این بیت بعد از ریست یک میباشد. | TXEN | 7 |
دسترسی:
1 2 3 |
. LPC_UARTx -> TER = 0x80 ; //stop sending . |
رجیستر کنترل FIFO : UxFCR
Description | Symbol | Bit |
---|---|---|
![]() | FIFO Enable | 0 |
![]() | RX FIFO reset | 1 |
![]() | TX FIFO reset | 2 |
هنگامی که بیت فعالساز FIFO ست باشد این بیت باعث انتخاب حالت DMA میشود. | DMA Mode select | 3 |
reserved | - | 5:4 |
این دو بیت، تعداد بایت های دریافتی را که باعث فعال شدن وقفه یا درخواست DMA می شوند را تعیین میکند![]() | RE Trigger level | 7:6 |
reserved | - | 31:8 |
ساختار رجیستر UxLCR :
Description | Symbol | Bit |
---|---|---|
![]() | Word Length Select | 1:0 |
![]() | STOP Bit Select | 2 |
![]() | Parity Enable | 3 |
![]() | Parity Select | 5:4 |
![]() | Break Control | 6 |
![]() | DLAB Divisior Latch Access Bit | 7 |
reserved | • | 31:8 |
ساختار رجیستر UxLSR :
Description | Symbol | Bit |
---|---|---|
این بیت هنگامیکه UxRBR دادهی خوانده نشده ای را نگهداری کند، ست میشود و هنگامی که رجیستر UxRBR خالی باشد صفر میشود. | (Receiver Data Ready (RDR | 0 |
این بیت زمانی ست میشود که داده جدیدی وارد رجیستر UxRSR شود و رجیستر UxRBR نیز پر باشد. در این حالت، اطلاعاتی روی رجیستر UxRBR مجددا نوشته نخواهد شدو دیتای موجود در رجیستر UxRSR از بین خواهد رفت. خواندن این رجیستر (UxLSR) باعث پاک شدن این بیت خواهد شد. | (Overrun Error (OE | 1 |
اگر بیت Parity از دیتای دریافتی دارای خطا باشد، این بیت ست خواهد شد. این بیت براساس بررسی رجیستر UxRBR تاثیر میپذیرد خواندن این رجیستر (UxLSR) باعث پاک شدن این بیت خواهد شد. | (Parity Error (PE | 2 |
اگر بیت stop از داده دریافتی مقدار صفر داشته باشد، این بیت ست میشود. این بیت براساس بررسی رجیستر UxRBR تاثیر میپذیرد خواندن این رجیستر (UxLSR) باعث پاک شدن این بیت خواهد شد. | (Framing Error (FE | 3 |
هنگامی که بلوک سریال، یک داده که تمام بیتهای آن اعم صفر باشد دریافت کند این توقف رخ میدهد. در این حالت بخش دریافت دیتا در بلوک UART در حالت بیکار قرار میگیرد و تا یک داده با تمام بیتهای یک دریافت نکند فعال نمیشود | (Break Interrupt (BI | 4 |
ان بیت بلافاصله پس از خالی شدن رجیستر UxTHR ست شده و با پر شدن آن صفر میشود. | Transmitter Holding )Register Empty (THRE | 5 |
اگر هر دو رجیستر UxTHR و UxTSR همزمان با هم خالی باشند، این بیت ست میشود. ولی اگر در هر یک از دو رجیستر ذکر شده دیتا وجود داشته باشد، این بیت صفر میشود. | (Transmitter Empty (TEMT | 6 |
اگر هر دیتایی با یکی از خطاهای PE, FE, BI وارد رجیستر UxRBR شود این بیت ست خواهد شد. خواندن این رجیستر (UxLSR) و عدم وجود خطا در رجیسترهای FIFO باعث پاک شدن این بیت خواهد شد. | (Error in RX FIFO (RXFE | 7 |
reserved | • | 31:8 |
ساختار رجیستر UxLSR :
Description | Symbol | Bit |
---|---|---|
![]() | IrDAEn | 0 |
![]() | IrDAInv | 1 |
اگر بیت Parity از دیتای دریافتی دارای خطا باشد، این بیت ست خواهد شد. این بیت براساس بررسی رجیستر UxRBR تاثیر میپذیرد در صورت ست شدن این بیت، حالت تثبیت عرض پالس IrDA فعال میشود. این خاصیت با استفاده از بیتهای 3 تا 5 از همین رجیستر تعیین میشود. | FixPulseEn | 2 |
اگر بیت 2 از همین رجیستر ست شده باشد، میتوان عرض پالس ارسالی IrDAرا پیکرهبندی نمود. در حالتی که بیت FixPulse صفر باشد، عرض پالس فرستنده از فرمول زیر بدست میآید.![]() | PulseDin | 5:3 |
reserved | • | 31:6 |
TPCLK = period of Peripheral CLK
ساختار رجیستر UxIER :
Description | Symbol | Bit |
---|---|---|
وقفه دریافت اطلاعات ورودی برای کانال متناظر را فعال میکند![]() | RBR Interrupt Enable | 0 |
وقفه خالی شدن رجیستر THR را فعال میکند. وضعیت این وقفه از رجیستر UxLSRقابل بررسی است.![]() | THRE Enable | 1 |
وقفه وضعیت خط RX را فعال میکند. وضعیت این وقفه از رجیستر [UxLSR[4:1 قابل بررسی است.![]() | RX Line Status Interrupt Enable | 2 |
reserved | • | 7:3 |
فعالساز وقفه موفقیت در تنظیم خودکار باود | ABEOIntEn | 8 |
فعالساز وقفه Time-out تنظیم خودکار باود | ABTOIntEn | 9 |
reserved | • | 31:10 |
ساختار رجیستر UxIIR :
Description | Symbol | Bit |
---|---|---|
وضعیت وقفه. توجه شود این بیت با صفر فعال میشود. وقفه معوق با استفاده از بیت ها 1 تا 3 همین رجیستر تعیین میشود![]() | IntStatus | 0 |
نشان دهنده نوع وقفه![]() | THRE Enable | 3:1 |
reserved | - | 5:4 |
کپیهای بیت صفر از رجیستر FCR هستند. | FIFO Enable | 7:6 |
این بیت با پایان موفقیت آمیز تنظیم خودکار باود، در صورتی که وقفه متناظر با آن فعال باشد، ست میشود. | ABEOInt | 8 |
این بیت اگر تنظیم خودکار باود دچار Time-out شود و وقفه متناظر با آن فعال باشد، ست میشود. | ABTOInt | 8 |
reserved | • | 31:10 |
مثال ۱: برنامه ای بنویسید که اعداد بین ۰ تا ۲۵۵ را با استفاده از UART0 به کامپیوتر ارسال کند.
UART| پورت سریال| تراشه های LPC17XX | دربارهUART | پایه هایUART
نکات مهم برای پیکره بندی UART :
- باید ابتدا نقش پایه ها را تعیین کنیم.
- به رجیستر PINMODE نباید کاری داشته باشیم و وضعیت pull up پایه ها در وضعیت پیشفرض قرار داشته باشند.
- تنظیمات مربوط به FIFO باید انجام شود و حافظه FIFO مربوط به ارسال ودریافت خالی شوند، چون ممکن است از آخرین بار روشن بودن میکرو، داده در آنها باقی مانده باشد.
- پس از آن باید وضعیت دیتا را تعیین کنیم.
- در مرحله بعد باید ابتدا فرکانس کاری واحد uart مورد نظر را بخوانیم و بعد متناسب با آن مقدار باود را بسازیم.
- برای ساختن مقدار باود باید بیت DLAB ست باشد که در هنگام تنظیم وضعیت دیتا این کار را انجام میدهیم. و بعد از تنظیم باود دوباره آن را صفر میکنیم.
✔ pdf این مطلب را میتوانید از اینجا دانلود کنید