ابزار جدید ti

C6EZFLO ابزار گرافیکی ti برای کار با سری TMS320C6000 C6EZFLO  یک افزونه گرافیکی رایگان می باشد که می توان با ترکیب آن با نرم افزار code composer studio یا سایر ابزار های توسعه DSP از آن استفاده کرد.  C6EZFLO  به توسعه دهنده گان امکان ایجاد کدهای م...


ادامه مطلب

تبلت چیست؟

Tablet PC یک کامپیوتر قابل حمل شبیه نوت بوک یا یک دستگاه لوح مانند است که دارای یک نمایشگر لمسی یا قلمی است که به کاربر خود این امکان را می دهد که به جای موس و کیبورد با دستگاه توسط انگشت دست یا یک قلم مخصوص که Stylus نام دارد کار کند. Table PC...


ادامه مطلب

شتاب دهنده برق در کشور ساخته شد

محققان جهاد دانشگاهي دانشگاه علم و صنعت ايران موفق به طراحي و ساخت منبع تغذيه 200 كيلو ولت به‌ روش چند برابر كننده ولتاژ شدند. مهندس منصور عارفيان، عضو هيأت علمي جهاد دانشگاهي و مجري طرح، با اعلام اين مطلب درباره مشخصات فني اين منبع تغذيه اظهار...


ادامه مطلب

هزار پای روباتیک،هرکول دنیای ریز رباتها

    به تازگی روباتی ۸ میلی متری ساخته شده که با استفاده از ۵۱۲ زائده به جای پا، می تواند در همه جهت ها حرکت کند و تا ۷ برابر وزن خودش بار حمل کند. این هزارپای روباتیک که بیش از نیم گرم وزن ندارد، ابزاری ایده آل برای فعالیت های جاسوسی است. م...


ادامه مطلب

Electrical-circuit full size landscape

در این بخش پروژه های رایگان وغیر رایگان وهمچنین خدمات سایت معرفی شده است در  قسمت خدمات ، خدماتی مانند طراحی برد مدار چاپی با نرم افزار پروتل،ترجمه متون تخصصی،شبیه سازی مدارات میکروکنترلی و... ارائه می شود.با تشکر

مرجع پردازنده های دیجیتال.

ti-tms320c6745dsp

در این بخش ما به آموزش مباحث مربوط به پردازنده های سیگنال دیجیتال ،برنامه نویسی و نرم افزار های مرتبط با ان می پردازیم.شما می توانید سوالات ومشکلات خود را در ارتباط با این مباحث در قسمت نظرات مطرح کرده و ما در صورت امکان پاسخ مناسب خواهیم داد . با تشکر

مرجع پردازنده های دیجیتال.

8953484-ebook-half-icon

شما در این بخش می توانید کتابهای و جزوات فارسی و انگلیسی با موضوعات اموزشی و درسی مرتبط با مباحث برق و الکترونیک دریافت کنید همچنین می توانید کتابهای مورد نظر خود را در قسمت نظرات درخواست کنید تا در صورت امکان در سایت قرار گیرد.با تشکر

مرجع پردازنده های دیجیتال.

294157-Typical microcontroller features

 در این بخش مجموعه ای از اموزشها ونکات مربوط به میکروکنترلرهای mega,xmega) AVR) و nxp ,atmel ) ARM) ،نحوه برنامه نویسی ،کامپایلرها و نمونه برنامه ها قرار دارد و همچنین شما می توانید سوالات خود رادر قسمت نظرات مطرح کنید تا در صورت امکان به انها پاسخ داده شود.با تشکر.

مرجع پردازنده های دیجیتال.

article-icon2

شما در این بخش می توانید مقالات فارسی و انگلیسی مرتبط با موضوعات الکترونیک،کنترل،مخابرات و قدرت را دانلود ومطالعه کنید.در صورت نیاز به مقاله ای با موضوع خاص در قسمت  نظرات اعلام کنید تا در صورت امکان به لیست مقالات اضافه شود.با تشکر.

مرجع پردازنده های دیجیتال.

جستجو

نظرتان در باره کیفیت مطالب چیست؟






نتایج

موضوع مورد علاقه شما چیست؟






نتایج

حاضرین در سایت

ما 3 مهمان آنلاین داریم
اخرین کاربر عضو شده : ایدا
کل اعضا : 999
کاربران حاضر : 0
تعداد کاربر ثبت شده امروز : 0

شروع کار با arm و keil قسمت هفتم(UART)

میانگین امتیار کاربران: / 1
ضعیفعالی 

 

قطعات سری LPC2xxx در حال حاضر دارای دو واحد UART می باشند.روش استفاده از هر دوواحد به یک صورت می باشد با این تفاوت که UART2 دارای سیستم پشتیبانی از سیستم ارتباطی مودم می باشد.هردو واحد از استاندارد صنعتی 550 پیروی میکنند و هردو واحد دارای تولید کننده نرخ انتقال و دارای16 بایت بافر انتقال و دریافت از نوع FIFO می باشند.

 

usart1

مقدار دهی اولیه واحدUART به صورت زیر می باشد:

 

Void    init_serial(void)                         /*Initialize   Serial     Interface                 */

{

PINSEL0 = 0X00050000;                          /*Enable  RxD1    and    TxD1

*/

U1LCR                           =0x00000083;         /*8  bits,   no parity ,  1  stop  bit

*/

U1DLL                          = 0x000000c2;             /*9600    Baud  Rate     @    30MHz     VPB      Clock

*/

U1LCR                        = 0x00000003;                                 /*DLAB   =  0

*/

{

ابتدا بلوک انتخاب پین برای سوئیچ از حالت GPIO به حالت عملکرد UART با مقدار مناسب برنامه ریزی شود. سپس با استفاده از رجیستر کنترل خط(LCR) واحد UART برای تنظیم فرمت انتقال کاراکترها تنظیم می شود.

 

UART2

در مثال  ما فرمت کاراکترها به صورت 8 بیتی بدون بیت توازن و با یک بیت توقف تنظیم شده است دررجیستر LCR یک بیت اضافی به نام DLAB وجود دارد که برای فعال کردن لچ مقسم نرخ سرعت استفاده می شود که به منظور برنامه ریزی تولید کننده نرخ انتقال این بیت باید ست شود.

تولید کننده نرخ سرعت انتقال یک مقسم 16بیتی می باشد که با تقسیم Pclk بر آن برای کلاک واحد UART که باید 16 برابر نرخ سرعت باشد بدست می آید.بنابراین فرمول استفاده شده برای محاسبه نرخ سرعت UART به صورت زیر می باشد:

Divisor  =  Pclk/16   x  BAUD

که با کلاک 30 مگاهرتز داریم:

Divisor   =   30,000,000/16  x   9600   =  (approx)   194  or   0Xc2

این فرمول نرخ واقعی 9665 را به ما می دهد و اغلب غیرممکن است که یک نرخ انتقال دقیق برای uart بدست آورد اما این واحد می تواند با خطای %5 نیز کار کند. بنا براین شما مقداری انحراف در زمانبندی UART خواهید داشت اگرم لاز داشته باشید که مقدار Pclk را به طور دقیق برای زمانبندی واحدهای جانبی دیگر مانند CAN تنظیم کنید.مقدار مقسم در دو رجیستر نگه داشته می شود ،لچ قسمت MSB مقسم (DLM) و لچ قسمت LSB مقسم  (DLL).هشت بیت اول هر رجیستر نصف مقدار مقسم را همانطور که در شکل زیر نشان داده شده است نگه می دارد. سرانجام بیت DLAB در رجیستر LCR باید برای محافظت از مقدایر رجیسترهای مقسم به مقدار صفر برگردد.

 

UART3

یکبار که واحد UART مقدار دهی اولیه شود کاراکترها می توانند با نوشتن در رجیستر نگه دار انتقال منتقل شوند. به طور مشابه کاراکترها می توانند با خواندن از رجیستر بافر دریافت خوانده شوند.در واقع هر دو این رجیسترها مکان یکسانی در حافظه اشغال می کنند.نوشتن یک کاراکتر،کاراکتر را در رجیستر انتقال FIFO قرار می دهد و خواندن از این مکان یک کاراکتر را از رجیستر دریافت FIFO بار می کند.

روشی که در زیر نشان داده شده است نحوه ارسال و دریافت کاراکتر را نشان می دهد.

int putchar (int ch)                                             /* Write character to Serial Port    */

{

if (ch == '\n')  {

while (!(U1LSR & 0x20));

U1THR = CR;                      /* output CR */

}

while (!(U1LSR & 0x20));

return (U1THR = ch);

}

int getchar (void)                                                             /* Read character from Serial Port   */

{

while (!(U1LSR & 0x01));

return (U1RBR);

}

توابع ()Putchar و ()Getchar برای نوشتن و خواندن یک کاراکتر منفرد توسط UART استفاده می شود.این درایورهای سطح پایین به وسیله توابع STDIO در نرم افزار Keil مانند ()printf  و ()scanf فراخوانی می شوند.بنابراین اگر شما می خواهید از I/O های استاندارد به عنوان UART برای کار با LCD و KEYPAD استفاده کنید این توابع را برای پشتیبانی از ارسال و دریافت یک کاراکتر به ورودی و خروجی قطعه مورد نظر باید بازنویسی کنید.هردو تابع()putchar و ()getchar رجیستر وضعیت ارتباط (LSR) را برای چک کردن خطاهای UART و چک کردن وضعیت FIFO های ارسال و دریافت بررسی می کنند.

 

UART4

واحد UART دارای یک کانال وقفه در VIC می باشد اما دارای سه منبع وقفه است.وقفه UART می تواند به وسیله تغییر در رجیستر وضعیت خط تولید شود.بنابراین اگر یک شرایط خطا اتفاق بیافتد یک وقفه تولید می شود و LSR می تواند خوانده شود تا علت خطا مشخص شود. دو منبع باقی مانده تولید وقفه،وقفه ارسال و دریافت می باشند. وقفه دریافت به وسیله شروع دریافت کاراکتر دررجیستر RXFIFO اغاز می شود.عمقی که در آن وقفه تریگر می شود به وسیله رجیستر کنترل UART FIFO تعیین می شود.

 

UART5

وقفه دریافت می تواند طوری تنظیم شود که بعد از دریافت 1،4،8 یا 14 کاراکتر تریگر شود.بنایراین اگر وقفه طوری تنظیم شود که هنگامیکه 8 کاراکتر در بافر دریافت هست و 34 کاراکتر ارسال شده است بنابراین چهار وقفه تولید خواهد شد و دو کاراکتر در FIFO باقی خواهد ماند.این کارکترهای باقی مانده سبب بروز وقفه

(character  time out indication”(CTI" می شود.وقفه CTI هنگامیکه یک یا چند کاراکتر در FIFO باقی مانده باشد و هیچ فعالیتی برای3.5 تا 4.5  برابر زمان دریافت یک کاراکتر انجام نشود اتفاق می افتد.

FIFO  انتقال نیز هنگامیکه رجیستر نگه دار داده انتقالی خالی است و یا هنگامیکه رجیستر شیفت انتقال خالی است تولید یک وقفه می کند.

 

UART6

UART1 نیز ساختاری مانند UART0 دارد اگرچه امکانات بیشتری برای کنترل حالت عملکرد مودم دارد. UART1 دارای پینهای اضافی برای پشتیبانی از رابط مودم کامل می باشد.(CTS,DCD,DSR,DTR,RI,RTS) .دو رجیستر اضافی نیز به نامهای رجیستر کنترل مودم و رجیستر وضعیت مودم و یک منبع وقفه اضافی برای فراهم کردن وقفه وضعیت ارتباط وجود دارد.

این ویژگی اضافی امکان ارتباط بهینه با یک مودم با تولید یک وقفه هربار که یک تغییر در رجیستر وضعیت مودم اتفاق افتد را به کاربر می دهد.

 

UART7

برنامه ساده زیر کارکتری را دریافت وا مجددا ارسال می کند.

#define    CR     0x0D

#include <LPC21xx.H>

void init_serial (void);

int putchar (int ch);

int getchar (void);

unsigned char test;

int main(void)

{

VPBDIV = 0x02;                                                                                 //Divide Pclk by two

init_serial();

while(1)

{

putchar(getchar());                                                                         //Echo terminal

}

}

void init_serial (void)                                        /* Initialize Serial Interface       */

{

PINSEL0              = 0x00050000;         /* Enable RxD1 and TxD1              */

U1LCR                 = 0x00000083;         /* 8 bits, no Parity, 1 Stop bit     */

U1DLL                 = 0x000000C2;         /* 9600 Baud Rate @ 30MHz VPB Clock  */

U1LCR                 = 0x00000003;        /* DLAB = 0                          */

}

int putchar (int ch)                                             /* Write character to Serial Port    */

{

if (ch == '\n')  {

while (!(U1LSR & 0x20));

U1THR = CR;                      /* output CR */

}

while (!(U1LSR & 0x20));

return (U1THR = ch);

}

int getchar (void)                                                             /* Read character from Serial Port   */

{

while (!(U1LSR & 0x01));

return (U1RBR);

}



:confused::cool::cry::laugh::lol::normal::blush::rolleyes::sad::shocked::sick::sleeping::smile::surprised::tongue::unsure::whistle::wink:

1000 کارکتر باقیمانده

Antispam جهت تغییر تصویر کلیک نمایید بزرگ یا کوچک بودن تصویر اهمیت ندارد