官方的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这边如何发出数据?求助