rt1050 lpspi read value error

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

rt1050 lpspi read value error

跳至解决方案
3,239 次查看
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
    }
}

标签 (1)
0 项奖励
回复
1 解答
2,577 次查看
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!
-----------------------------------------------------------------------------------------------------------------------

在原帖中查看解决方案

1 回复
2,578 次查看
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!
-----------------------------------------------------------------------------------------------------------------------