rt1050 lpspi read value error

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

rt1050 lpspi read value error

Jump to solution
3,243 Views
xingf_zhu
Contributor I

HI All,

I used the sdk but not the interrupt way.Please help me check the code why return 0.

Thank you very much.

THIS IS THE CODE:

int main(void)
{
        gpio_pin_config_t gpio_config = {kGPIO_DigitalOutput, 0, kGPIO_NoIntmode};
        BOARD_ConfigMPU();
        BOARD_InitPins();
        BOARD_BootClockRUN();
        BOARD_InitDebugConsole();

        /*Set clock source for LPSPI*/
        CLOCK_SetMux(kCLOCK_LpspiMux, EXAMPLE_LPSPI_CLOCK_SOURCE_SELECT);
        CLOCK_SetDiv(kCLOCK_LpspiDiv, EXAMPLE_LPSPI_CLOCK_SOURCE_DIVIDER);

        PRINTF("lpspi_functional_interrupt_board_2_board_master start.\r\n");
        PRINTF("This example use one board as master and another as slave.\r\n");
        PRINTF("Master and slave uses interrupt way. Slave should start first. \r\n");
        PRINTF("Please make sure you make the correct line connection. Basically, the connection is: \r\n");
        PRINTF("LPSPI_master -- LPSPI_slave   \r\n");
        PRINTF("   CLK      --    CLK  \r\n");
        PRINTF("   PCS      --    PCS \r\n");
        PRINTF("   SOUT     --    SIN  \r\n");
        PRINTF("   SIN      --    SOUT \r\n");
        PRINTF("   GND      --    GND \r\n");
        
        GPIO_PinInit(GPIO1, 2U, &gpio_config);
        GPIO_PinWrite(GPIO1, 2U, 1U);
        uint32_t srcClock_Hz;
        uint32_t errorCount;
        uint32_t i;
        uint32_t whichPcs;
        uint8_t txWatermark;
        lpspi_master_config_t masterConfig;

        /*Master config*/
        masterConfig.baudRate = TRANSFER_BAUDRATE;
        masterConfig.bitsPerFrame = 8;
        masterConfig.cpol = kLPSPI_ClockPolarityActiveHigh;
        masterConfig.cpha = kLPSPI_ClockPhaseFirstEdge;
        masterConfig.direction = kLPSPI_MsbFirst;

        masterConfig.pcsToSckDelayInNanoSec = 1000000000 / masterConfig.baudRate;
        masterConfig.lastSckToPcsDelayInNanoSec = 1000000000 / masterConfig.baudRate;
        masterConfig.betweenTransferDelayInNanoSec = 1000000000 / masterConfig.baudRate;

        masterConfig.whichPcs = EXAMPLE_LPSPI_MASTER_PCS_FOR_INIT;
        masterConfig.pcsActiveHighOrLow = kLPSPI_PcsActiveLow;

        masterConfig.pinCfg = kLPSPI_SdiInSdoOut;
        masterConfig.dataOutConfig = kLpspiDataOutRetained;

        srcClock_Hz = LPSPI_MASTER_CLK_FREQ;
        LPSPI_MasterInit(EXAMPLE_LPSPI_MASTER_BASEADDR, &masterConfig, srcClock_Hz);
        unsigned char wData = 0;
        uint32_t byte = 0;
        unsigned char c = 0;
//        c =((0x26 << 1) & ~(0x80));
        c = (0x03 << 1) & 0x7E;
        wData = (((0x03 << 1) & 0x7E ) | 0x80);
//        wData = ((0x26 << 1)  | 0x80);
    while (1)
    {
#if 1                
                LPSPI_WriteData(EXAMPLE_LPSPI_MASTER_BASEADDR, c);
                LPSPI_WriteData(EXAMPLE_LPSPI_MASTER_BASEADDR, 0xFE);
                LPSPI_WriteData(EXAMPLE_LPSPI_MASTER_BASEADDR, wData);
                byte = LPSPI_ReadData(EXAMPLE_LPSPI_MASTER_BASEADDR);
                //        debug_printf("addr is 0x%x, spi data is 0x%x, return byte is 0x%x", addr, wData, byte);
                        
                PRINTF("byte = %d \r\n",byte);
#endif
    }
}

Labels (1)
0 Kudos
Reply
1 Solution
2,581 Views
CarlosCasillas
NXP Employee
NXP Employee

Hi Tom,

You could refer to the LPSPI examples included on SDK v2.4.2 for IMXRT1050-EVKB board:

driver_examples->lpspi->lpspi_interrupt

driver_examples->lpspi->lpspi_interrupt_b2b_master

driver_examples->lpspi->lpspi_interrupt_b2b_slave

For additional details, you could refer to Chapter 30 “LPSPI: Low Power Serial Peripheral Interface” of the “MCUXpresso SDK API Reference Manual” document (attached), included on the Documentation package of the SDK.


Hope this will be useful for you.
Best regards!
/Carlos
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

View solution in original post

1 Reply
2,582 Views
CarlosCasillas
NXP Employee
NXP Employee

Hi Tom,

You could refer to the LPSPI examples included on SDK v2.4.2 for IMXRT1050-EVKB board:

driver_examples->lpspi->lpspi_interrupt

driver_examples->lpspi->lpspi_interrupt_b2b_master

driver_examples->lpspi->lpspi_interrupt_b2b_slave

For additional details, you could refer to Chapter 30 “LPSPI: Low Power Serial Peripheral Interface” of the “MCUXpresso SDK API Reference Manual” document (attached), included on the Documentation package of the SDK.


Hope this will be useful for you.
Best regards!
/Carlos
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------