I'm debugging ADXL345 using i2c with lm4f120h5qr,
here is the init code:
ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | //80mhz
SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIOPinConfigure(GPIO_PB2_I2C0SCL);
GPIOPinConfigure(GPIO_PB3_I2C0SDA);
GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_3);
GPIOPinTypeI2CSCL(GPIO_PORTB_BASE, GPIO_PIN_2 );
I2CMasterInitExpClk(I2C0_MASTER_BASE, SysCtlClockGet(), true); //400kbps
ROM_SysCtlDelay(10000);
I2CMasterEnable(I2C0_MASTER_BASE);
here is the driver code:
this is used for reading X-ACCEL-FIFO ,the two regs of adxl345.
unsigned long ADXL_Read_X(void)
{
unsigned long back2,m;
unsigned long back1;
I2CMasterSlaveAddrSet(I2C0_MASTER_BASE,SlaveAddress,false);
I2CMasterDataPut(I2C0_MASTER_BASE,0x32);
I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_START);
while(I2CMasterBusy(I2C0_MASTER_BASE));
I2CMasterSlaveAddrSet(I2C0_MASTER_BASE,SlaveAddress,true);
I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_RECEIVE_START);
while(I2CMasterBusy(I2C0_MASTER_BASE));
back1=I2CMasterDataGet(I2C0_MASTER_BASE);
I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_RECEIVE_CONT);
while(I2CMasterBusy(I2C0_MASTER_BASE));
back2=I2CMasterDataGet(I2C0_MASTER_BASE);
I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_RECEIVE_FINISH);
while(I2CMasterBusy(I2C0_MASTER_BASE));
m=(back2<<8)|back1;
return(m);
}
there is nothing wrong with back1,but back2's value is always 0 .it confused me ... = =...