NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3414 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از 1 به 20 از 39

موضوع: پرونکل I2C در میکروکنترلر lpc1768

  1. #1
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض پروتکل i2c در میکروکنترلر lpc1768

    با سلام.
    قصد داشتم یه ماژول STH15 رو که با پروتکل I2C کار میکنه به میکرو LPC1768 متصل کنم.
    در سی دی آموزشی پیشرفته LPC1768 یه توضیح جامع در خصوص I2C توسط جناب آقای زرکوب داده شده که بنده تقریبا به دقت اون رو بررسی کردم.
    در توضیحات آن سی دی در خصوص اتصال E2Prom متصل به برد که با پروتکل فوق کار میکنه توضیح داده شده و همچنین کار شده، که بنده هم بر روی برد با حالت های مختلف تست کردم و جواب گرفتم.
    در مثال مذکور برای ارتباط با دستگاه های بیرونی با این پروتکل از دو دستور
    کد:
        I2C_WriteNByte(a, b, c, d, e);
    I2C_ReadNByte(a, b, c, d, e);
    در این دستور این جور که من فهمیدم،
    a: آدرس Slaveb
    b: عدد یک قرار میدیم، بیشتر برای مواقعی که مثلا ما چند E2PROM داریم استفاده میشه.
    c: آدرس محلی از Slave است که ما در آن آدرس از Slave میخواهیم اطلاعات رو بنویسیم.(مثلا آدرس خانه 5 E2PROM )
    d: متغییری که اطلاعات از روی آن به slave انتقال می یابد یا بلعکس.
    e: تعداد بایت هایی که قرار است بر روی SLAVE بنویسیم یا بخوانیم که در حالتی که بیش از یک است، میبایست متغیر d از نوع آرایه تعریف گردد.

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 1.jpg
مشاهده: 35
حجم: 21.7 کیلو بایت


    اگر به سیکل نوشتن اطلاعات بر روی ایپرام توجه کنید که با همین دستور کار میکنه.
    یک نکته: آدرس خانه های حافظه در این ایپیرام 2 بایت هست که جایی در دستور به آن اشاره نشده.

    حالا بنده قصد دارم با سنسور SHT15 با پروتکل I2C راه بندازم.

    موارد زیر در خصوص این سنسور هست، لطفا توجه کنید:
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 2.jpg
مشاهده: 32
حجم: 70.7 کیلو بایت


    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 3.jpg
مشاهده: 36
حجم: 144.6 کیلو بایت

    حالا سوال ایجا مطرح میشه که
    1- در اینجا ما یه ادرس Slave دارم . دیگه از قسمت c ، که مربوط به ادرس خانه حافظه که دو بایت هم بود دیگه نیست. اینو چیکارش کنم؟؟؟
    2- اگه این یک مورد حل بشه، بنده هم قصد خواند اطلاعات رو دارم، پس کافیه e رو هم روی 3 تنطیم کنم راه میفته.
    3- ادرس با همان قسمت a هم برای دما 0x03 و برای رطوبت 0x05 میشه! درسته؟
    4- در قسمت ادرس هم a , c رو یکسان هم گذاشتم ولی راه نیفتاد.

    در خصوص آرگومان های تابع فوق اگه بنده راهنمایی کنید ممنون میشم.
    برداشتم اینجوریه که گویا این توابع رو برای E2PROM نوشتن و برای این کاری که من میخوام نمیشه ازش استفاده کرد، اگه اینجوریه من رو راهنمایی کنید این رو راه بندازم و ممنون.
    فايل هاي پيوست شده فايل هاي پيوست شده
    ویرایش توسط ensane2008 : 11-11-2014 در ساعت 07:10

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    همکار افتخاری
    تاریخ عضویت
    Jul 2007
    نام
    محمد هادی عبدی
    نوشته ها
    129
    تشکر
    82
    تشکر شده 294 بار در 73 پست

    پیش فرض

    سلام دوست عزیز این اصلا با پروتکل i2c کار نمیکنه من خودم راه اندازیش کردم باید کلاک و دیتا طبق دیتا شیت براش بسازی

  4. #3
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    چندین مثال دیدم، حتی برای میکرو های دیگه همه با همین پروتکل کار کردن.
    یه بررسی مجدد لطفا بکنید.
    نظر بقیه چیه؟
    ویرایش توسط ensane2008 : 09-11-2014 در ساعت 00:40

  5. #4
    Banned
    تاریخ عضویت
    Apr 2013
    نام
    صادق علی بخشی
    نوشته ها
    1,148
    تشکر
    1,183
    تشکر شده 1,276 بار در 702 پست

    پیش فرض

    اینجا دیگه جایی برای یادگیری و آموختن نیست
    تبدیل به بازار روز شده
    یه انجمن بازاریابی
    ویرایش توسط sadeghbakhshi : 01-09-2015 در ساعت 20:42

  6. کاربران : 2 تشکر کرده اند از شما sadeghbakhshi برای ارسال این پست سودمند:


  7. #5
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

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

  8. #6
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    سلام.آقای sadeghbakhshi عزیز، فایل ارسالی جناب عالی رو بررسی کردم، بسیار ساده و روان کار انجام شده است.فقط اگر کمی بنده را همراهی نمایید و دیگر دوستان هم راهنمایی کنند ایراداتی که به نظر من تو پروژه هست رو، به یاری خدا رفع خواهیم کرد تا دیگر دوستان هم از ماحصل این تاپیک بهره مند بشن.
    1- تو این پروژه که جنابعالی قراردادید برای میکرو LPC213x هست که ما میخوایم برای LPC1768 این کار رو انجام بدیم و احتمالا نیاز به تغییر برخی قسمت ها است.
    2- در این پروژه یک سری Define تعریف شده که پیشنهاد من اینه که یه توضیح در خصوص اون بدیم.

    کد:
    #define STAS (I2C0CONSET=(1<<5))
    #define STAC (I2C0CONCLR=(1<<5))
    #define AAS  (I2C0CONSET=(1<<2))
    #define AAC  (I2C0CONCLR=(1<<2))
    #define STO  (I2C0CONSET=(1<<4))
    #define SIC  (I2C0CONCLR=(1<<3))
    #define SI   (I2C0CONSET & (1<<3))
    3- الان پروژه به طور دستی نوشته شده(از وقفه I2C استفاده نشده)، که باز هم پیشنهاد میکنم برای افزایش کیفیت کار پروژه از حالت زیر روال وقفه مربوط به این قسمت استفاده بشه.

  9. #7
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    برای شروع در قسمت define در LPC1768 ما با دو آدرس
    کد:
    LPC_I2C0->I2CONSET = xx;
    کد:
      LPC_I2C0->I2CONCLR =xx
    آیا میشه از همان شکل define استفاده کرد؟
    کد:
    (I2C0CONSET=xx)
    کد:
    (I2C0CONCLR=xx)
    - - - Updated - - -

    ضمنا در قسمت عنوان تاپیک پرونکل تایپ شده، در صورت امکان به پروتکل اصلاح بشه.
    گویا در اختیار بنده نیست.

  10. #8
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    بابا این تاپیک رو هم اساتید یه نگاهی بندازن، لطفا.

  11. #9
    عضو جدید reza-ieee آواتار ها
    تاریخ عضویت
    Oct 2009
    نوشته ها
    10
    تشکر
    2
    تشکر شده 5 بار در 3 پست

    پیش فرض

    یک کتابخانه درست درمون برای I2C دارم ، برای ارتباط با یک سنسور دما ازش استفاده کردم،یک تابع داره برای فرستادن و یا دریافت داده،اگر خواستید تا اخر هفته up می کنم

  12. تشکرها از این نوشته :


  13. #10
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    خدا خیرت بده.
    اگه با اینتراپت کار کنه عالیه.
    آقا منتظرم.

  14. #11
    عضو جدید reza-ieee آواتار ها
    تاریخ عضویت
    Oct 2009
    نوشته ها
    10
    تشکر
    2
    تشکر شده 5 بار در 3 پست

    پیش فرض

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

  15. تشکرها از این نوشته :


  16. #12
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    بررسی میکنم و نتیجه رو اطلاع میدم.

  17. #13
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    نقل قول نوشته اصلی توسط sadeghbakhshi نمایش پست ها
    سلام
    این فقط یک مثال ساده برای راه اندازی پروتکل i2c هست که اگر به فایل شبیه سازی مراجعه کنید متوجه میشید فقط دو عدد رو داخل
    ایپرام ذخیره میکند و دوباره میخواند پس نیازی به استفاده از وقفه وجود نداشت
    همون طور که میبینید چندتا تابع رید . رایت . استارت و ... در مثال هست که با استفاده از همون ها توابع جدیدی ساخته شده
    شما هم میتونید با استفاده از اونها توابع خودتون رو پیاده کنیدیا کتابخانه ی خودتون رو بنویسید
    اون دیفاین ها مربوط به بیتهای پروتکل i2c میشه از دو رجیستر کنترلی یکی برای ست کردن و دیگری برای ریست کردن
    کد:
    Control register, I2CONSET and I2CONCLR
    فرق چندانی هم با میکروی 1768 نداره
    شما با یه نگاه سطحی به یوزر منوال متوجه تفاوت هاشون میشید
    و برای استفاده از وقفه هم شما باید از اون اعدادی که در جداول قسمت Status register پروتکل i2c نامبرده بنا به نیازتون استفاده کنید
    سلام مجدد.
    من برنامه رو برای E2prom روی برد تبدیل کردم جواب نگرفتم.
    میاد و رو خط
    while(SI==0);//Wait Until Address Send
    که در تابع Write هست، گیر میکنه.
    بزرگوار شما خودت این رو بررسی کردی(تست کردی)؟



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

  18. #14
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

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

  19. تشکرها از این نوشته :


  20. #15
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    نقل قول نوشته اصلی توسط sadeghbakhshi نمایش پست ها
    سلام
    امکانش هست که پروژه ی کامل رو قرار بدید ؟
    توی اون خط منتظر میمونه تا پرچم وقفه بالا بره
    توی یکی دوتا کتابخانه ی دیگه هم من همین رو دیدم
    یه کتابخانه هم که خودم نوشتم ولی هنوز تستش نکردم
    شما مطمئنید که پروتکل فعال میشه ؟
    و کلاکش درست هست؟
    فعال شدن یا نشدن پروتکل رو چگونه بررسی کنم؟
    پرچم خاصی مد نظر است؟

  21. #16
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    در برنامه ارسال شما از پرچم
    کد:
    #define E_I2C (LPC_I2C0->I2CONSET = (1<<6))
    استفاده نشده.
    نباید این هم می بود؟

  22. #17
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض E

    سلام.
    این هم پروژه من با پروژه نمونه که شما فرستادین.
    دلیل اینکه طولانی شد هم ایه که من یه پروژه دارم که همچی توش(SD card-Intrrup timer-LCD- و ...) بود.
    الان که پروژه ساده درست کردم که فقط توش I2C هست و قراره با E2Prom رو برد کار کنه.
    ولی همون جور که اشاره کردم تو خط 121
    کد
    کد:
    while(SI==0); //Wait Until Data Receive and ack send
    گیر میفته.
    کلاک I2C رو روی حدود 100 khz تنظیم کردم.
    حالا شما یه بررسی بکن.

    خدا خیرت بده، اگه بتونی هرچه سریعتر بنده رو راهنمایی کنی خیلی ممنونت میشم.
    یا علی
    فايل هاي پيوست شده فايل هاي پيوست شده

  23. تشکرها از این نوشته :


  24. #18
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    یه مثال همراه برد هست که سنسور lm75 رو به میکرو متصل کرده.
    این رو هم میزارم، یه بررسی بکنید شاید فرجی شد.
    I2C.rar

  25. تشکرها از این نوشته :


  26. #19
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    یعنی نرم افزاری تست میکنی(تو حالت Debug ) مشکلی نداره؟

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

    ان شا الله برای j-link مشکلی پیش نیومده.
    ویرایش توسط ensane2008 : 24-11-2014 در ساعت 07:23

  27. تشکرها از این نوشته :


  28. #20
    کاربر علاقه مند ensane2008 آواتار ها
    تاریخ عضویت
    Apr 2010
    نوشته ها
    62
    تشکر
    53
    تشکر شده 5 بار در 5 پست

    پیش فرض

    بزرگواران، هیچ کس توی فورم به این بزرگی اصلا با i2c کار نکرده، به داد ما برسه؟[emoji17] [emoji17]

صفحه 1 از 2 12 آخرینآخرین

موضوعات مشابه

  1. محدوده ولتاژ ورودی adc در میکروکنترلر lpc1768
    توسط hamed.b3269 در انجمن LPC series (NXP)
    پاسخ: 1
    آخرين نوشته: 19-08-2014, 12:37
  2. مشکل در lcd کارکتری با میکرو LPC1768
    توسط ramin_kent در انجمن LPC series (NXP)
    پاسخ: 2
    آخرين نوشته: 17-08-2014, 12:17
  3. خروجی های pwm در میکروکنترلر lpc1768
    توسط hamed.b3269 در انجمن LPC series (NXP)
    پاسخ: 2
    آخرين نوشته: 21-07-2014, 01:30
  4. مشکل تاچ LCD 7 با رابط Spi در میکرو Lpc1768
    توسط majid97 در انجمن LPC series (NXP)
    پاسخ: 3
    آخرين نوشته: 02-07-2013, 19:22
  5. تامین ولتاژ 3.3امکانات جانبی هدربوردlpc1768
    توسط a.moghadam در انجمن LPC series (NXP)
    پاسخ: 9
    آخرين نوشته: 12-10-2012, 01:10

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •