你好,我在使用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的办法
Kevin Qiu1:
CC3200 SDK中C:\ti\CC3200SDK_1.5.0\cc3200-sdk\example\spi_demo例程可以作为主设备或从设备, 有两块CC3200的话可以先测下CC3200的SPI, 用逻辑分析仪测下CC3200的信号是否正常,检查C8051F340与CC3200是否进行了共地连接
user6458813:
回复 Kevin Qiu1:
您好,我手上也只有一块CC3200,C8051F340与CC3200是共地连接的。只是我发现,当我在C8051F340用调试模式,一次一次送参数的时候,CC3200是接收到的值最后一位是正确的。请问下CC3200是哪里设置有问题?SPI_SUB_MODE_0灭有设置错误。唯一的改动就是SPI_CS_ACTIVELOW 因为我设置了8051的片选触发是低电平触发
Kevin Qiu1:
回复 user6458813:
我没有C8051F340,无法复现你的环境,先看下手册地8章SPI部分www.ti.com.cn/…/swru367d.pdf