This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
用两个launchpad,从机用callback方式,做spi通信测试,一个做主机,一个做从机,主机一次传输10bytes数据,从机一次只传输2bytes数据,能连续执行多次SPI_transfer给主机传输数据吗?
主机代码如下:
void *masterThread(void *arg0) { SPI_Handle masterSpi; SPI_Transaction masterTransaction; SPI_Params masterSpiParams; bool transferOK; SPI_Params_init(&masterSpiParams); /* Initialize SPI handle as default master */ masterSpi = SPI_open(Board_SPI0, &masterSpiParams); if (masterSpi == NULL) { //Display_printf(display, 0, 0, "Error initializing SPI\n"); while (1); } else { //Display_printf(display, 0, 0, "SPI initialized\n"); } /* Initialize master SPI transaction structure */ masterTransaction.count = 10; masterTransaction.txBuf = (void *)masterTxBuffer; masterTransaction.rxBuf = (void *)masterRxBuffer; /* Initiate SPI transfer */ transferOK = SPI_transfer(masterSpi, &masterTransaction); UART_writePolling(uart, masterRxBuffer, 10); /* Deinitialize SPI */ SPI_close(masterSpi); return (NULL); }
从机代码如下:
void SlaveUserCallbackFxn(void) { flags = 1; } /* ======== slaveThread ======== * This thread runs on a higher priority, since slave * has to be ready for master. Slave SPI sends a * message to master and also receives message from * master. */ void *slaveThread(void *arg0) { uint32_t status; int i; /* Initialize SPI handle with slave mode */ SPI_Params_init(&slaveSpiParams); slaveSpiParams.mode = SPI_SLAVE; slaveSpiParams.transferMode = SPI_MODE_CALLBACK; slaveSpiParams.transferCallbackFxn = SlaveUserCallbackFxn; slaveSpi = SPI_open(Board_SPI0, &slaveSpiParams); if (slaveSpi == NULL) { while (1); //error } i =0; while (1){ slaveTransaction.count = 2; slaveTransaction.txBuf = (void *)slaveTxBuffer; slaveTransaction.rxBuf = (void *)slaveRxBuffer; flags=0; transferOK = SPI_transfer(slaveSpi, &slaveTransaction); while(flags!=1); } return (NULL); }
测试发现,从机并不能多次发送数据,只有第一次SPI_transfer的数据被主机接收到,怎么能多次执行传输数据?