NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2666 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 15 از 15

موضوع: راه اندازی I2C با استفاده از Cmsis

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    Apr 2014
    نوشته ها
    72
    تشکر
    28
    تشکر شده 63 بار در 20 پست

    New راه اندازی I2C با استفاده از Cmsis

    سلام خدمت همه ی دوستان و اساتید گرامی
    من میخوام واحد I2C رو راه اندازی کنم با استفاده از Cmsis
    از بر جدید هم استفاده میکنم(EV-LPC1788 )
    روی خود برد یه تراشه EEPROM هست که با I2C راه اندازی میشه اسمش هم هست AT24C128
    یه کد براش زدم که هر کاری میکنم جواب نمیده.
    من کد رو میذارم اگه میشه دوستان گرامی کمک کنن.
    یه سوال دیگه هم داشتم واون این که برای خواندن از آدرس داخلی باید چیکار کنم؟
    توی Cmsis من چیزی ندیدم.کدی میخواد اضافه بشه؟
    پیشاپیش ممنون از کمکتون
    کد:
    #include "lpc177x_8x.h"
    #include "lpc177x_8x_i2c.h"
    #include "lpc177x_8x_pinsel.h"
    #include "GLCD.h"
    #include "delay.h"
    
    #define I2C_Num   0
    #define Slave_Address 0x50 >> 1
    
    I2C_M_SETUP_Type txsetup;
    I2C_M_SETUP_Type rxsetup;
    
    uint8_t EEPROM_wrdat[2] = {0 , 1};
    uint8_t EEPROM_rddat[2];
    
    void I2Cx_Init(void);
    void TFTLCD_Init(void);
    int  I2C_Write(void);
    int  I2C_Read (void);
    
    
    int main(){
        
      TFTLCD_Init();
      I2Cx_Init();
        I2C_Write();
        
        if(I2C_Write() == (-1)){
            
       GUI_Text( ( GLCD_X_SIZE - 120 ) / 2, GLCD_Y_SIZE / 2 - 8, " Error While  Write ", White, Red);
        
    }
    else {
        
     GUI_Text( ( GLCD_X_SIZE - 120 ) / 2, GLCD_Y_SIZE / 2 - 8, "Write Success", White, Green);
        
    }
    
        I2C_Read ();
    if(I2C_Read() == (-1)){
        
         GUI_Text( ( GLCD_X_SIZE - 120 ) / 2, GLCD_Y_SIZE / 2 + 8, " Error While Read ", White, Red);
        
    }
    else{
     GUI_Text( ( GLCD_X_SIZE - 120 ) / 2, GLCD_Y_SIZE / 2 + 8, " Read  Success", White, Green);
    
    }
        
    
    while(1){
    
    
    }
    
    }
    void TFTLCD_Init(void){
    
        SDRAM_32M_16BIT_Init();
      GLCD_Init();
        
        GLCD_Clear(White);
        delay_ms(200);
        
        GUI_Text( ( GLCD_X_SIZE - 120 ) / 2, GLCD_Y_SIZE / 2 - 8, " I2C Example ", White, Blue);
        GLCD_Clear(White);
    
    }
    
    void I2Cx_Init(void){
            
       PINSEL_ConfigPin( 0 , 27 , 1);   //SDA0
         PINSEL_ConfigPin( 0 , 28 , 1);   //SCL0
        
        I2C_Init( (en_I2C_unitId)I2C_Num , 100000);    //Clock = 100 khz
      I2C_Cmd ( (en_I2C_unitId)I2C_Num , I2C_MASTER_MODE , ENABLE );    //I2C->Enable
    
    }
    int I2C_Write(void){
    
      txsetup.sl_addr7bit = Slave_Address;
        txsetup.tx_data = EEPROM_wrdat;
        txsetup.tx_length = sizeof(EEPROM_wrdat);
        txsetup.rx_data = NULL;
        txsetup.rx_length = 0;
        txsetup.retransmissions_max = 3;
    
          if (I2C_MasterTransferData((en_I2C_unitId)I2C_Num, &txsetup, I2C_TRANSFER_POLLING) == SUCCESS){
            return (0);
        } else {
            return (-1);
        }
    
    }
    int I2C_Read(){
    
        rxsetup.sl_addr7bit = Slave_Address;
        rxsetup.tx_data = EEPROM_wrdat;    // Get address to read at writing address
        rxsetup.tx_length = 2;
        rxsetup.rx_data = EEPROM_rddat;
        rxsetup.rx_length = sizeof(EEPROM_rddat);
        rxsetup.retransmissions_max = 3;
    
        if (I2C_MasterTransferData((en_I2C_unitId)I2C_Num, &rxsetup, I2C_TRANSFER_POLLING) == SUCCESS){
            return (0);
        } else {
            return (-1);
        }
    }

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

  3. #2
    کاربر علاقه مند benam_miri آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    میری
    نوشته ها
    63
    تشکر
    9
    تشکر شده 86 بار در 18 پست

    پیش فرض

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

  4. #3
    کاربر فعال pirozy آواتار ها
    تاریخ عضویت
    May 2010
    نوشته ها
    337
    تشکر
    147
    تشکر شده 192 بار در 84 پست

    پیش فرض

    نقل قول نوشته اصلی توسط hamedghasemi نمایش پست ها
    سلام خدمت همه ی دوستان و اساتید گرامی
    من میخوام واحد I2C رو راه اندازی کنم با استفاده از Cmsis
    از بر جدید هم استفاده میکنم(EV-LPC1788 )
    روی خود برد یه تراشه EEPROM هست که با I2C راه اندازی میشه اسمش هم هست AT24C128
    یه کد براش زدم که هر کاری میکنم جواب نمیده.
    من کد رو میذارم اگه میشه دوستان گرامی کمک کنن.
    یه سوال دیگه هم داشتم واون این که برای خواندن از آدرس داخلی باید چیکار کنم؟
    توی Cmsis من چیزی ندیدم.کدی میخواد اضافه بشه؟
    پیشاپیش ممنون از کمکتون
    کد:
    #include "lpc177x_8x.h"
    #include "lpc177x_8x_i2c.h"
    #include "lpc177x_8x_pinsel.h"
    #include "GLCD.h"
    #include "delay.h"
    
    #define I2C_Num   0
    #define Slave_Address 0x50 >> 1
    
    I2C_M_SETUP_Type txsetup;
    I2C_M_SETUP_Type rxsetup;
    
    uint8_t EEPROM_wrdat[2] = {0 , 1};
    uint8_t EEPROM_rddat[2];
    
    void I2Cx_Init(void);
    void TFTLCD_Init(void);
    int  I2C_Write(void);
    int  I2C_Read (void);
    
    
    int main(){
        
      TFTLCD_Init();
      I2Cx_Init();
        I2C_Write();
        
        if(I2C_Write() == (-1)){
            
       GUI_Text( ( GLCD_X_SIZE - 120 ) / 2, GLCD_Y_SIZE / 2 - 8, " Error While  Write ", White, Red);
        
    }
    else {
        
     GUI_Text( ( GLCD_X_SIZE - 120 ) / 2, GLCD_Y_SIZE / 2 - 8, "Write Success", White, Green);
        
    }
    
        I2C_Read ();
    if(I2C_Read() == (-1)){
        
         GUI_Text( ( GLCD_X_SIZE - 120 ) / 2, GLCD_Y_SIZE / 2 + 8, " Error While Read ", White, Red);
        
    }
    else{
     GUI_Text( ( GLCD_X_SIZE - 120 ) / 2, GLCD_Y_SIZE / 2 + 8, " Read  Success", White, Green);
    
    }
        
    
    while(1){
    
    
    }
    
    }
    void TFTLCD_Init(void){
    
        SDRAM_32M_16BIT_Init();
      GLCD_Init();
        
        GLCD_Clear(White);
        delay_ms(200);
        
        GUI_Text( ( GLCD_X_SIZE - 120 ) / 2, GLCD_Y_SIZE / 2 - 8, " I2C Example ", White, Blue);
        GLCD_Clear(White);
    
    }
    
    void I2Cx_Init(void){
            
       PINSEL_ConfigPin( 0 , 27 , 1);   //SDA0
         PINSEL_ConfigPin( 0 , 28 , 1);   //SCL0
        
        I2C_Init( (en_I2C_unitId)I2C_Num , 100000);    //Clock = 100 khz
      I2C_Cmd ( (en_I2C_unitId)I2C_Num , I2C_MASTER_MODE , ENABLE );    //I2C->Enable
    
    }
    int I2C_Write(void){
    
      txsetup.sl_addr7bit = Slave_Address;
        txsetup.tx_data = EEPROM_wrdat;
        txsetup.tx_length = sizeof(EEPROM_wrdat);
        txsetup.rx_data = NULL;
        txsetup.rx_length = 0;
        txsetup.retransmissions_max = 3;
    
          if (I2C_MasterTransferData((en_I2C_unitId)I2C_Num, &txsetup, I2C_TRANSFER_POLLING) == SUCCESS){
            return (0);
        } else {
            return (-1);
        }
    
    }
    int I2C_Read(){
    
        rxsetup.sl_addr7bit = Slave_Address;
        rxsetup.tx_data = EEPROM_wrdat;    // Get address to read at writing address
        rxsetup.tx_length = 2;
        rxsetup.rx_data = EEPROM_rddat;
        rxsetup.rx_length = sizeof(EEPROM_rddat);
        rxsetup.retransmissions_max = 3;
    
        if (I2C_MasterTransferData((en_I2C_unitId)I2C_Num, &rxsetup, I2C_TRANSFER_POLLING) == SUCCESS){
            return (0);
        } else {
            return (-1);
        }
    }
    سلام
    با
    Cmsis نه ولی من به وسیله رجیستر ها تو lpc1768 راش انداخنم
    اگه خواستی می تونم کمک کنم

  5. #4
    کاربر علاقه مند
    تاریخ عضویت
    Apr 2014
    نوشته ها
    72
    تشکر
    28
    تشکر شده 63 بار در 20 پست

    پیش فرض

    آقا خدا خیرت بده اگه داری یه نمونه کد بذارید ممنون میشم

  6. #5
    کاربر فعال pirozy آواتار ها
    تاریخ عضویت
    May 2010
    نوشته ها
    337
    تشکر
    147
    تشکر شده 192 بار در 84 پست

    پیش فرض

    بفرما عزیز
    فایل پیوست 8112

  7. #6
    کاربر علاقه مند
    تاریخ عضویت
    Apr 2014
    نوشته ها
    72
    تشکر
    28
    تشکر شده 63 بار در 20 پست

    پیش فرض

    مهندس ممنون
    ولی این لینکه بهم این خطا رو میده
    این فایل پیوست وجود ندارد . ممکن است حذف شده باشد و یا لینک اشتباه وارد کرده باشید. اگر از موجودیت این لینک مطمئن هستید برای کسب اطلاعات بیشتر با مدیریت سایت تماس بگیرید.




  8. #7
    کاربر فعال pirozy آواتار ها
    تاریخ عضویت
    May 2010
    نوشته ها
    337
    تشکر
    147
    تشکر شده 192 بار در 84 پست

  9. #8
    کاربر علاقه مند
    تاریخ عضویت
    Apr 2014
    نوشته ها
    72
    تشکر
    28
    تشکر شده 63 بار در 20 پست

    پیش فرض

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

  10. #9
    کاربر فعال pirozy آواتار ها
    تاریخ عضویت
    May 2010
    نوشته ها
    337
    تشکر
    147
    تشکر شده 192 بار در 84 پست

    پیش فرض

    شرمنده عزیز ان شاءالله که این لینک کار می کنه
    دانلود I2C0 rar

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


  12. #10
    کاربر علاقه مند
    تاریخ عضویت
    Apr 2014
    نوشته ها
    72
    تشکر
    28
    تشکر شده 63 بار در 20 پست

    پیش فرض

    خواش میکنم
    ممنون

  13. #11
    تازه وارد
    تاریخ عضویت
    May 2010
    نوشته ها
    3
    تشکر
    0
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام pirozy شرمنده این لینک ام مشکل بهم زده میشه دوباره آپلود گنید.؟

  14. #12
    عضو جدید electron113 آواتار ها
    تاریخ عضویت
    Dec 2009
    نوشته ها
    9
    تشکر
    2
    تشکر شده 0 بار در 0 پست

    پیش فرض

    آقا کسی نیست جوا ب بده ؟؟

    این لینکا کار نمیدن

  15. #13
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    سلام
    این فایلو فکر کنم قبلا گرفتم آپلود می کنم ولی نمی دونم درست هست نیست کارمی کنه یا نه
    فايل هاي پيوست شده فايل هاي پيوست شده

  16. #14
    کاربر علاقه مند
    تاریخ عضویت
    Mar 2012
    نام
    محمد قمری خسرویه
    نوشته ها
    38
    تشکر
    1
    تشکر شده 13 بار در 11 پست

    پیش فرض

    سلام برای رفع مشکل برنامه EEprom 24c128 در مثالهای برد LPC1788 کویر کد زیر را به I2C_Configuration در هدر فایل AT24c02.c اضافه کنید.
    کد:
    	PINSEL_SetOpenDrainMode(2, 14, ENABLE);
    	PINSEL_SetOpenDrainMode(2, 15, ENABLE);
    	PINSEL_SetPinMode(2, 14, PINSEL_BASICMODE_PLAINOUT);
    	PINSEL_SetPinMode(2, 15, PINSEL_BASICMODE_PLAINOUT);

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


  18. #15

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

  1. راه اندازی برد آرم با استفاده از باتری
    توسط Niloufar.Male در انجمن AT91 series (ATMEL)
    پاسخ: 2
    آخرين نوشته: 31-12-2013, 22:58
  2. پاسخ: 15
    آخرين نوشته: 10-12-2012, 20:55
  3. همکاری برای راه اندازی دسته ps2 با avr
    توسط sniper-70 در انجمن میکروکنترلرهای 8و16 بیتی
    پاسخ: 1
    آخرين نوشته: 30-11-2012, 11:00
  4. یک بازی ساده با استفاده از rtx
    توسط shahrivar88 در انجمن AT91 series (ATMEL)
    پاسخ: 7
    آخرين نوشته: 01-11-2012, 01:56

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

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