Hi,
I am trying to get the proximity data from LDC1000 but my code seems not working.
If I want to write and then read threshold high LSB using
vAHI_SpiStartTransfer16(0x0684); // write
vAHI_SpiStartTransfer8(0x86); // read
out =u8AHI_SpiReadTransfer8();
I got 0x86 on the terminal (Likewise proximity data LSB gets 0xA1)
MCU is NXP JN5158 and programming software is eclipse C++
my SPI configuration is
vAHI_SpiConfigure(1, // 1 slave device
E_AHI_SPIM_MSB_FIRST,
0,0, // Clock polarity unchanged, Phase: latch data on leading edge of the clock
8, // Clock divider: Peripheral clock is divided by 2 x u8ClockDivider
FALSE, // Interrupt disabled
FALSE); // AutoSlaveSelect disabled
uint8 out;
vAHI_DioSetDirection(0, E_AHI_DIO0_INT); // DIO0 is connected with CSB, set DIO0 as output
Below is my programming code
vAHI_SpiSelect(1); //Power mode off
vAHI_SpiStartTransfer16(0x0B00);
vAHI_SpiSelect(0);
vAHI_SpiWaitBusy();
vAHI_SpiSelect(1); //Rp max
vAHI_SpiStartTransfer16(0x0112);
vAHI_SpiSelect(0);
vAHI_SpiWaitBusy();
vAHI_SpiSelect(1); //Rp min
vAHI_SpiStartTransfer16(0x023C);
vAHI_SpiSelect(0);
vAHI_SpiWaitBusy();
vAHI_SpiSelect(1); // interrupt mode: comparator
vAHI_SpiStartTransfer16(0x0A02);
vAHI_SpiSelect(0);
vAHI_SpiWaitBusy();
vAHI_SpiSelect(1); //High LSB
vAHI_SpiStartTransfer16(0x0684);
vAHI_SpiSelect(0);
vAHI_SpiWaitBusy();
vAHI_SpiSelect(1); //High MSB
vAHI_SpiStartTransfer16(0x071C);
vAHI_SpiSelect(0);
vAHI_SpiWaitBusy();
vAHI_SpiSelect(1); //Low LSB
vAHI_SpiStartTransfer16(0x0820);
vAHI_SpiSelect(0);
vAHI_SpiWaitBusy();
vAHI_SpiSelect(1); //Low MSB
vAHI_SpiStartTransfer16(0x091C);
vAHI_SpiSelect(0);
vAHI_SpiWaitBusy();
vAHI_SpiSelect(1); //Power mode active
vAHI_SpiStartTransfer16(0x0B01);
vAHI_SpiSelect(0);
vAHI_SpiWaitBusy(); // End of initialisation
/***********Check to see if values were written to registers correctly***********/
vAHI_SpiSelect(1); //Rp max
vAHI_SpiStartTransfer8(0x81);
out =u8AHI_SpiReadTransfer8();
DBG_vPrintf(TRACE_EXCEPTION, "0x%08x\r\n", out);
vAHI_SpiSelect(0);
vAHI_SpiWaitBusy();
vAHI_SpiSelect(1); //Rp min
vAHI_SpiStartTransfer8(0x82);
out =u8AHI_SpiReadTransfer8();
DBG_vPrintf(TRACE_EXCEPTION, "0x%08x\r\n", out);
vAHI_SpiSelect(0);
vAHI_SpiWaitBusy();
vAHI_SpiSelect(1); //High LSB
vAHI_SpiStartTransfer8(0x86);
out =u8AHI_SpiReadTransfer8();
DBG_vPrintf(TRACE_EXCEPTION, "0x%08x\r\n", out);
vAHI_SpiSelect(0);
vAHI_SpiWaitBusy();
vAHI_SpiSelect(1); //High MSB
vAHI_SpiStartTransfer8(0x87);
out =u8AHI_SpiReadTransfer8();
DBG_vPrintf(TRACE_EXCEPTION, "0x%08x\r\n", out);
vAHI_SpiSelect(0);
vAHI_SpiWaitBusy();
vAHI_SpiSelect(1); //Low LSB
vAHI_SpiStartTransfer8(0x88);
out =u8AHI_SpiReadTransfer8();
DBG_vPrintf(TRACE_EXCEPTION, "0x%08x\r\n", out);
vAHI_SpiSelect(0);
vAHI_SpiWaitBusy();
vAHI_SpiSelect(1); //Low MSB
vAHI_SpiStartTransfer8(0x89);
out =u8AHI_SpiReadTransfer8();
DBG_vPrintf(TRACE_EXCEPTION, "0x%08x\r\n", out);
vAHI_SpiSelect(0);
vAHI_SpiWaitBusy();
Could you please help?
Best regards,
Liang