CC3200作为主机进行SPI DMA的传输,接收从机发来的数据发送给TCP。
主机的发送和接收都没有问题,数据也能正常接收到。
默认的缓冲数组是1024,,也就是通过DMA一次发送接收1024个字节的数组。
但是为什么我修改这个数组大小后就会发生无法接收发送数据的现象?
比如我改成2048,这个时候,主机收到的数据就都是00了。
我同时进行了缓冲数组大小的修改,DMA发送接收的字节数大小修改。
#define TR_BUFF_SIZE 1024;//接收发送缓冲数组大小
unsigned char g_ucTxBuff[TR_BUFF_SIZE];//发送缓冲区
unsigned char g_ucRxBuff[TR_BUFF_SIZE];//接收缓冲区
Master_Send(g_ucRxBuff, g_ucTxBuff, 1024);//发送接收数据1024个字节
//*********************主机发送接收数据函数************************//
void Master_Send(unsigned char *rxBuff, unsigned char *txBuff, int len)
{
MAP_SPIWordCountSet(GSPI_BASE,len);
UDMASetupTransfer(UDMA_CH31_GSPI_TX,UDMA_MODE_BASIC,len,
UDMA_SIZE_8,UDMA_ARB_1,
(void *)txBuff,UDMA_SRC_INC_8,(void *)(GSPI_BASE + MCSPI_O_TX0),
UDMA_DST_INC_NONE);
UDMASetupTransfer(UDMA_CH30_GSPI_RX,UDMA_MODE_BASIC,len,
UDMA_SIZE_8,UDMA_ARB_1,
(void *)(GSPI_BASE + MCSPI_O_RX0),UDMA_SRC_INC_NONE,
(void *)rxBuff,UDMA_DST_INC_8);
MAP_SPIEnable(GSPI_BASE);
Report("%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\r\n",
rxBuff[0], rxBuff[1], rxBuff[2], rxBuff[3],
rxBuff[4], rxBuff[5], rxBuff[6], rxBuff[7],
rxBuff[8], rxBuff[9], rxBuff[10], rxBuff[11]);
}
Viki Shi:
CC3200/CC3100是能处理大于1024的数据的,大于1400会被分包,但不至于收不到。请问SDK是最新版吗?
HML:
回复 Viki Shi:
是CC3200 SDK1.3.0版本的。
大于1400会被分包的意思是自己自动分包发送?还是说需要我们通过写程序去进行处理?