اطلاعیه

Collapse
No announcement yet.

استفاده از پروتکل i2c با توابع cmsis

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    استفاده از پروتکل i2c با توابع cmsis

    سلام بچه ها

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

    این قسمت تنظیماتش :

    کد:
     * Init I2C pin connect
    	 */
    	PinCfg.OpenDrain = 0;
    	PinCfg.Pinmode = 0;
    	PinCfg.Funcnum = 1;
    	PinCfg.Pinnum = 27;
    	PinCfg.Portnum = 0;
    	PINSEL_ConfigPin(&PinCfg1);//SDA0
    	PinCfg.Pinnum = 28;
    	PINSEL_ConfigPin(&PinCfg1);//SCL0
    
    	// Initialize I2C peripheral
    	I2C_Init(LPC_I2C0, 10000);
    
    	/* Configure interrupt for I2C in NVIC of ARM core */
      /* Disable I2C0 interrupt */
      NVIC_DisableIRQ(I2C0_IRQn);
      /* preemption = 1, sub-priority = 0 */
      NVIC_SetPriority(I2C0_IRQn, ((0x01<<3)|0x01));
      
    
    	/* Enable I2C operation */
    	I2C_Cmd(LPC_I2C0, ENABLE);
    اینم ارسال که ایراد میگیره :

    کد:
    unsigned char read_i2c(unsigned char BusAddres , unsigned char Reg , unsigned char Ack )
    {
    	
    unsigned char Data;
    uint8_t *sss;
    
    txsetup.sl_addr7bit = 0xA0;
    	UART_SendByte(LPC_UART0,'p');
    	txsetup.tx_data = &BusAddres;
    	UART_SendByte(LPC_UART0,'o');
    	txsetup.tx_length = 0;
    	UART_SendByte(LPC_UART0,'s');
    txsetup.rx_data = NULL;
    	txsetup.rx_length = 0;
    	UART_SendByte(LPC_UART0,'d');
    	txsetup.retransmissions_max = 3;
    	UART_SendByte(LPC_UART0,'f');
    if(I2C_MasterTransferData(LPC_I2C0,&txsetup, I2C_TRANSFER_POLLING)==SUCCESS){
    	UART_SendByte(LPC_UART0,'g');
    	txsetup.tx_data = &Reg;
    	UART_SendByte(LPC_UART0,'h');}
    I2C_MasterTransferData(LPC_I2C0,&txsetup, I2C_TRANSFER_POLLING);
    	UART_SendByte(LPC_UART0,'j');
    txsetup.tx_data = &BusAddres + 1;
    UART_SendByte(LPC_UART0,'k');
    I2C_MasterTransferData(LPC_I2C0,&txsetup, I2C_TRANSFER_POLLING);
    UART_SendByte(LPC_UART0,'l');
    delay_us(10);
    txsetup.rx_data =&Ack;
    UART_SendByte(LPC_UART0,'z');
    if(I2C_MasterTransferData(LPC_I2C0,&rxsetup, I2C_TRANSFER_POLLING)==SUCCESS)
    UART_SendByte(LPC_UART0,'x');
    sss=txsetup.rx_data;
    Data=(uint8_t) sss;
    	
    return Data;
    }
    توی هر قسمت یه داده با uart میفرستم که فقط تا 'f' رو میفرسته و برنامه گیر میکنه.
لطفا صبر کنید...
X