Dear All,
I got a problem in i2c module 1 of Lm4f232.
In this code, I wanna write a byte data to 24LC64, and read back. Unlucky, I can't. Where is the problem within those code?? Plz help me.
( The A0, A1, A1 pins of 24LC64 is connected to GND )
( There are 2 bytes for data bytes of 24LC64)
I2C Code :
//---------------<Initial>-------------------//
SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C1);
SysCtlPeripheralReset(SYSCTL_PERIPH_I2C1);
SysCtlPeripheralEnable( I2C1_MASTER_BASE ) ;
SysCtlPeripheralEnable( SYSCTL_PERIPH_GPIOA ) ;
GPIOPinTypeI2C( GPIO_PORTA_BASE, GPIO_PIN_6 | GPIO_PIN_7 ) ;
GPIOPinConfigure( GPIO_PA6_I2C1SCL ) ;
GPIOPinConfigure( GPIO_PA7_I2C1SDA ) ;
I2CMasterInitExpClk( I2C1_MASTER_BASE, SysCtlClockGet(), false ) ;
I2CMasterEnable(I2C1_MASTER_BASE);
//---------------<Write>-------------------//
I2CMasterSlaveAddrSet( I2C1_MASTER_BASE, SLAVE_ADDRESS, false ) ;
I2CMasterDataPut( I2C1_MASTER_BASE, 0x00 ) ;
I2CMasterControl( I2C1_MASTER_BASE, I2C_MASTER_CMD_BURST_SEND_START ) ;
SysCtlDelay(SysCtlClockGet() / 30000);
I2CMasterDataPut( I2C1_MASTER_BASE, WRITE_ADDRESS ) ;
I2CMasterControl( I2C1_MASTER_BASE, I2C_MASTER_CMD_BURST_SEND_CONT ) ;
SysCtlDelay(SysCtlClockGet() / 30000);
I2CMasterDataPut( I2C1_MASTER_BASE, DATA ) ;
I2CMasterControl( I2C1_MASTER_BASE, I2C_MASTER_CMD_BURST_SEND_CONT ) ;
SysCtlDelay(SysCtlClockGet() / 30000);
I2CMasterControl( I2C1_MASTER_BASE, I2C_MASTER_CMD_BURST_SEND_FINISH) ;
SysCtlDelay(SysCtlClockGet() / 30000);
//---------------<Read>-------------------//
I2CMasterSlaveAddrSet( I2C1_MASTER_BASE, SLAVE_ADDRESS, false ) ;
I2CMasterDataPut( I2C1_MASTER_BASE, 0x00 ) ;
I2CMasterControl( I2C1_MASTER_BASE, I2C_MASTER_CMD_BURST_SEND_START ) ;
SysCtlDelay(SysCtlClockGet() / 30000);
I2CMasterDataPut( I2C1_MASTER_BASE, WRITE_ADDRESS ) ;
I2CMasterControl( I2C1_MASTER_BASE, I2C_MASTER_CMD_BURST_SEND_CONT ) ;
SysCtlDelay(SysCtlClockGet() / 30000);
I2CMasterSlaveAddrSet( I2C1_MASTER_BASE, SLAVE_ADDRESS, true ) ;
I2CMasterControl( I2C1_MASTER_BASE, I2C_MASTER_CMD_SINGLE_RECEIVE ) ;
SysCtlDelay(SysCtlClockGet() / 30000);
Cnt32_2 = I2CMasterDataGet( I2C1_MASTER_BASE ) ;
Thanks a lot !!!