سلام بچه ها
راستش من تمام تنظیماتی که فکر میکردم انجام دادم و کد برنامم هم در زیر آوردم اما مشکلی که دارم اصلا تابع ترانسفر یا رسیو انجام نمیده. به تابع ارسال داده یعنی I2C_MasterTransferData
که میرسه به خط بعدی نمیره.
نمیدونم مشکل کجاس تنظیم خاصی رو نکردم آیا؟؟
ارتباط رو مستر مستر در نظر گرفتم ایا مشکلی پیش میاد؟
ممنون میشم راهنمایی کنید..
این قسمت تنظیماتش :
اینم ارسال که ایراد میگیره :
توی هر قسمت یه داده با uart میفرستم که فقط تا 'f' رو میفرسته و برنامه گیر میکنه.
راستش من تمام تنظیماتی که فکر میکردم انجام دادم و کد برنامم هم در زیر آوردم اما مشکلی که دارم اصلا تابع ترانسفر یا رسیو انجام نمیده. به تابع ارسال داده یعنی 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; }