ابزار جدید 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 قسمت هشتم(I2C)

میانگین امتیار کاربران: / 2
ضعیفعالی 
 از  فیلیپس به عنوان مخترع اصلی باس اساندارد i2c عجیب نیست که سری LPC2000 را با یک واسط I2C کامل مجهز کرده باشد.واسط I2C می تواند در هر دو مد MASTER  و SLAVE تا سرعت 400K بیت بر ثانیه کار کند همچنین در حالت مستر می تواند به طور خودکار در سیستمهای multi-master حکمیت کند.

 

i2c-1

یک سیستم I2C معمولی که در بالا نشان داده شده که در LPC2000 به دو پورت خارجی گسترش دهنده متصل شده است.مانن سایر واحد های جانبی خطوط کلاک(SCL) و داده (SDA) باید از حالت GPIO به پین های I2C توسط بلوک اتصال دهنده تبدیل شوند.

I2C-2

واسط جانبی I2C از هفت رجیستر تشکیل شده است.رجیستر کنترل دارای دو رجیستر مجزا می باشد که برای ست و پاک کردن بیتهای رجیستر کنترل استفاده می شود(I2CONSET,I2CONCLR).نرخ سرعت همچنین توسط دو رجیستر(I2SCLH,I2SCLL) تعیین می شود.رجیستر وضعیت کدهای کنترل که در رابطه با حالات مختلف باس می باشد را برمی گرداند.رجیستر داده نیز برای ارسال داده استفاده می شود.همچنین در حالت در یافت نیز داده ها در این رجیستر قرار خواهند گرفت.در نهایت هنگامیکه LPC2000 به عنوان اسلیو پیکربندی می شود ادرس شبکه آن به وسیله مقدار دهی رجیستر I2ADR تعیین می شود.برای مقدار دهی اولیه I2C ما نیاز به اجرای کدهای زیر داریم.

VICVectCntl1 = 0x00000029;                                                  //select a priority slot for a given interrupt

 

VICVectAddr1 = (unsigned)I2CISR;                       //pass the address of the IRQ into the VIC slot

 

VICIntEnable = 0x00000200;                                   //enable interrupt

 

 

 

PINSEL0               = 0x50;                                               //Switch GPIO to I2C pins

 

 

 

I2SCLH = 0x08;                                //Set bit rate 14.7456Mhz/VPBDIV+SCLH+SCLL = 14.7456/4+8+8 = 57.6Khz

 

I2SCLL                   = 0x08;

I2C باید طوری برنامه ریزی شود که به هر اتفاقی روی باس واکنش نشان دهد.به همین خاطر این واحد جانبی وابستگی زیادی به وقفه دارد نتیجتا اولین چیزی که باید انجام شود تنظیم VIC برای پاسخ دهی به وقفه I2C می باشد.سپس بلوک انتخاب پین خروجی باید برای انتقال خطوط داده و ساعت I2C به پینهای خروجی تنظیم شود.سرانجام ما باید نرخ سرعت انتقال داده را با تنظیم رجیستر های I2SCLH و I2S CLL تنظیم کنیم.

در هردو این رجیستر ها فقط 6 بیت اول برای نگه داشتن مقادیر زمان بندی استفاده می شود.رابطهخ مورداستفاده برای تنظیم نرخ انتقاد داده به صورت زیر است:

Bit  Rate  =   Pclk/(I2SCLH+I2SCLL).

در مثال بالا PLL فعال نیست و کریستال خارجی 14.745 MHz است بنابراین نرخ ارسال I2C برابر است با:

Bit    Rate  = 14.745/(8  +  8)=937500

بعد از این تنظیمات LPC2000 می تواند با قطعات دیگرروی باس ارتباط برقرار کند.برای نوشتن و خواندن داده به عنوان مستر روی باس یا دریافت و پاسخ به در خواست از یک باس مستر،محتوای رجیستر کنترل I2C در شکل زیر نشان داده شده است.به یاد داشته باشید که این رجیستر به وسیله رجیستر CONCLR و CONSET کنترل می شود.

 

I2C-3

در ابتدا نگاهی به حالت مستر می اندازیم برای ورود به این حالت ابتدا I2C باید فعال و بیت تصدیق باید صفر شود.این کار از انجام تصدیق اشتباه واحد I2C و وارد شدن آن به مد اسلیو جلوگیری می کند.

 

در حالت مستر قطعه LPC2000 مسئول آغاز ارتباط می باشد در طی انتقاال روی باس I2C تعدادی اتفاق ممکن است روی باس اتفاق بیافتد.

I2C-4

 

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

 

واحد I2C در سری LPC2000 واقعا یک موتور I2C کامل است.این موتور تمام رویدادهای اتفاق افتاده روی باس را کنترل می کند ولی نسبت به آن آگاهی ندارد.این بدان معناست که CPU ارم 7 باس I2C را برای هر انتقال به صورت Micro-Manage مدیریت می کند .خوشبختانه انجام این کار بسیار ساده می باشد و به مرکزیت وقفه I2C می باشد.هنگامیکه I2C در حالت مستر مقدار دهی اولیه شد ما می توانیم انتقال داده را به صورت زیر انجام دهیم.

 

I2C-5

ادرس اسلیو و داده که باید ارسال شود به صورت متغیر های سراسری تعریف می شوند تا بتوان به وسیله روتین وقفه I2C فراخوانی شوند.آدرس 7 بیتی می باشد و بیت LSB در حالت نوشتن 1 و در حالت خواندن 0 می باشد.روتین سپس پرچم های کنترل I2C را پاک می کند و I2C را فعال و شرایط شروع را ایجاد می کند هنگامیکه شرایط شروع روی باس قرار داده شده یک وقفه تولید می شود و یک کد که از رجیستر وضعیت I2C خوانده می شود.

 

I2C-6

اگر شرایط شروع بدرستی ایجاد شده باشد مقدار این کد 0X08 خواهد بود.سپس باید ادرس اسلیو و بیت R/W را در داخل رجیستر داده I2C نوشته شود.وقتی علامت تصدیق دریافت شد وقفه دیگری تولید می شود و رجیستر وضعیت دارای مقدار 0X18 خواهد بود اگر انتقال به درستی انجام شده باشد.اکنون که اسلیو بدرستی ادرس دهی شده است و آماده دریافت داده می باشد می توان یک رشته از بایتها را به داخل رجیستر داده I2C نوشت .هنگامیکه این کار انجام شد داده ارسال و علامت تصدیق دریافت می شود یک وقفه تولید و مقدار رجیستر وضعیت 0X28 خواهد بود و اگر انتقال ناموفق باشد NACK دریافت و مقدار رجیستر داده 0X20 خواهد بود و داده مورد نظر باید مجدد ارسال گردد. بنابراین به ازای هربایت ارسال یک وقفه روی خواهد داد و کد وضعیت باید چک شود و بایت بعدی می تواند ارسال شود.هنگامیکه کلیه بایتها ارسال شد با ایجاد شرایط توقف به وسیله نوشتن در رجیستر کنترل I2C  انتقال متوقف می شود.وقفه های I2C یک ماشین حالت واقعی می باشد که با امتحان کردن کد رجیستر وضعیت در هر وقفه عملیات لازم را انجام می دهد بنابراین به راحتی و با استفاده از یک دستور SWITCH مانند زیر می توان براحتی این الگوریتم را پیاده سازی کرد.

 

I2C-7

این مثال یک تک بایت را ارسال می کند اما براحتی با تنظیم مجدد آن می توان چندین بایت را ارسال کرد.

مورد دیگر اضافه کردن دستوراتی برای درخواست داده در حالت مستر می باشد.
 
 

I2C-8

در این مورد شرایط همانند قبل ایجاد می شود اما این بار ادرس نوشته شده با بیت R/W صفر روی باس قرار خواهد گرفت.هنگامبکه بعد از ارسال آدرس اسلیو  تصدیق دریافت شد بعد از آن اولین بایت داده از اسیلو دریافت می شود و مستر احتیاج به انجام کاری ندارد.بنابراین دردستورات CASE ما می توانیم بیت ACK را ست کنیم تا بمحض انتقال بایت یک حالت ACK ایجاد شود.هربایت که انتقال می بابد داده را می توان از رجیستر I2CDAT خواند هنگامیکه همه بایتها خوانده شد شرایط توقف ایجاد و انتقال پایان می یابد.

 

همان تابع I2CTransferByte می تواند برای شروع خواندن داده استفاده شود و دستورات اضافی CASE که باید در روتین وقفه قرار گیرد به صورت زیر است.

 

I2C-9

 



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

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

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