hi,
以MSP430FR5739和cc3100为例,MSP430是通过SPI发送指令的方式告诉cc3100他的读写动作,但是,MSP430这侧并非通过SPI中断信号来接收来自cc3100的数据,请问,MSP430如何实现通过SPI,实现对来自cc3100的数据的接收的 ?
请ti的专家以下面的socket中的recv函数为例解释一下这个机制。特别解释下这个机制和如下的代码中的
status = _SlDrvDataReadOp((_SlSd_t)sd, (_SlCmdCtrl_t *)&_SlRecvCmdCtrl, &Msg, &CmdExt);
中的Msg是什么关系,Msg带回来了什么 ?
谢谢。
int sl_Recv(int sd, void *pBuf, int Len, int flags)
{
_SlRecvMsg_u Msg;
_SlCmdExt_t CmdExt;
_SlReturnVal_t status;
CmdExt.TxPayloadLen = 0;
CmdExt.RxPayloadLen = Len;
CmdExt.pTxPayload = NULL;
CmdExt.pRxPayload = (UINT8 *)pBuf;
Msg.Cmd.sd = sd;
Msg.Cmd.StatusOrLen = Len;
/* no size truncation in recv path */
CmdExt.RxPayloadLen = Msg.Cmd.StatusOrLen;
Msg.Cmd.FamilyAndFlags = flags & 0x0F;
status = _SlDrvDataReadOp((_SlSd_t)sd, (_SlCmdCtrl_t *)&_SlRecvCmdCtrl, &Msg, &CmdExt);
if( status != SL_OS_RET_CODE_OK )
{
return status;
}
/* if the Device side sends less than expected it is not the Driver's role */
/* the returned value could be smaller than the requested size */
return (int)Msg.Rsp.statusOrLen;
}