你好,我在使用C8051F340与CC3200进行SPI通讯时出错。CC3200使用的是SPI_DEMO的例子,在通讯中CC3200作为从机,C8051F340作为主机。通过逻辑分析仪测8051的输出是正确的没有错误的,但是在CC3200就出现接收错误。
CC3200的例子里我只修改了CS片选:
MAP_SPIConfigSetExpClk(GSPI_BASE,MAP_PRCMPeripheralClockGet(PRCM_GSPI),
SPI_IF_BIT_RATE,SPI_MODE_SLAVE,SPI_SUB_MODE_0,
(SPI_HW_CTRL_CS | //由硬件控制
SPI_4PIN_MODE | //工作在4线模式
SPI_TURBO_OFF | //涡轮模式关闭
SPI_CS_ACTIVELOW | //CS片选信号
SPI_WL_8)); //8字节长度
然后我的中断处理函数是这样的:
static void SlaveIntHandler()
{
unsigned long ulRecvData;
unsigned long ulStatus;
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(" %04X ",ulRecvData);
ucRxBuffNdx++;
}
}
C8051的选择是CS低电平选中,一次传输8个字节,每个字节内容为0到15,但是SPI接收为乱码。
请问下能否有工程师给个调试3200的办法