TI中文支持网
TI专业的中文技术问题搜集分享网站

CC3200 SPI 如何实现slave向master发送数据?

官方的spi_demo实现了master向slave发送数据,如何实现由slave向master发送任意数据呢?(不是把master向slave发送的数据读回来)。

Viki Shi:

可以参考http://www.deyisupport.com/question_answer/wireless_connectivity/wifi/f/105/t/96137.aspx?pi2132219853=1 里的方法

注意里面说的读取接收buffer里的数据,不是master发出去的,是收到的slave数据

Xiaolong Zhang3:

回复 Viki Shi:

您好,链接中哪个回复是对的?这个吗:“官方的例程里面应该是master会接收到数据在g_ucRxBuff里面,你有看到SLAVE传过来的数据吗?”。

若g_ucRxBuff中是收到的slave数据,那我可以通过串口向slave输入想要的数据,在g_ucRxBuff中得到吗?

Viki Shi

可以参考http://www.deyisupport.com/question_answer/wireless_connectivity/wifi/f/105/t/96137.aspx?pi2132219853=1 里的方法

注意里面说的读取接收buffer里的数据,不是master发出去的,是收到的slave数据

Xiaolong Zhang3:

回复 Xiaolong Zhang3:

 Demo中SlaveIntHandler()增加如下语句(后面带//////部分),作用是串口输入数据,通过slave发出去。

static void SlaveIntHandler(){ unsigned long ulRecvData; unsigned long ulStatus; unsigned long ab;/////////////

ulStatus = MAP_SPIIntStatus(GSPI_BASE,true);

MAP_SPIIntClear(GSPI_BASE,SPI_INT_RX_FULL|SPI_INT_TX_EMPTY);

if(ulStatus & SPI_INT_TX_EMPTY) { MAP_SPIDataPut(GSPI_BASE,g_ucTxBuff[ucTxBuffNdx%TR_BUFF_SIZE]); ucTxBuffNdx++; }

if(ulStatus & SPI_INT_RX_FULL) { MAP_SPIDataGetNonBlocking(GSPI_BASE,&ulRecvData); g_ucTxBuff[ucRxBuffNdx%TR_BUFF_SIZE] = ulRecvData; Report("%c",ulRecvData); ab = MAP_UARTCharGet(UARTA0_BASE);/////////// MAP_SPIDataPut(GSPI_BASE,ab);///////////// ucRxBuffNdx++; }

}

MasterMain()中的while循环部分增加如下语句(后面带//////部分),作用为将master收到的数据显示出来

while(ulUserData != '\r') { // // Read a character from UART terminal // ulUserData = MAP_UARTCharGet(UARTA0_BASE);

// // Echo it back // MAP_UARTCharPut(UARTA0_BASE,ulUserData);

// // Push the character over SPI // MAP_SPIDataPut(GSPI_BASE,ulUserData);

// // Clean up the receive register into a dummy // variable // MAP_SPIDataGet(GSPI_BASE,&ulDummy);

MAP_UARTCharPut(UARTA0_BASE,ulDummy);//////////////////////////////////// }

Xiaolong Zhang3:

有没有slave向master发数据的例程可以提供呢?

Xiaolong Zhang3:

master这边如何读出数据?slave这边如何发出数据?求助

赞(0)
未经允许不得转载:TI中文支持网 » CC3200 SPI 如何实现slave向master发送数据?
分享到: 更多 (0)