This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
目前在调试cc1310作为spi从机的功能 主机用的stm32 目前从机可以接收到主机的数据(随机字符串) 但是主机接收不到从机的数据
spi用的SPI_POL0_PHA1模式 ,stm32做主机时,在通信过程中片选信号我一直拉低,芯片手册也是这么要求的,stm32时钟设置为空闲时钟低电平,第二个时钟沿进行数据采样,也就是下降沿,这应该是也符合cc1310SPI_POL0_PHA1模式下的要求。主机spi传输速度我也是设置的最低。
目前找不到主机接收不到cc1310数据的原因? 有过类似经历或者大神给点意见吗?
debuge时也发现了一个问题,上图中鼠标标注的代码(蓝色的那行) object->currentTransaction->count等于8 ,object->amtDataXferred=0,MAX_DMA_TRANSFER_AMOUNT=1024;所以正常应该执行else中程序,但是debuge时走的if里的程序,这是什么原因啊?
而且下面434行的移位操作也不正常 8<<0 8左移0位得到了-1 ????
在SPICC26XXDMA.c这个文件中的代码,有时候也不按照顺序执行,总有正在执行下面代码的时候,下一步就跳到上面代码的情况???
TI大哥救救孩子吧!要被逼疯了,对了我用的CCS调试
你有逻辑分析仪吗?
SPI_POL0_PHA1模式的时候,默认片选管脚SSln_FSS一直保持低电平就可以了。
SPI_Params_init(&spiParams); spiParams.frameFormat = SPI_POL0_PHA1; spiParams.mode = SPI_SLAVE; spiParams.transferCallbackFxn = transferCompleteFxn; spiParams.transferMode = SPI_MODE_CALLBACK; slaveSpi = SPI_open(Board_SPI_SLAVE, &spiParams); if (slaveSpi == NULL) { Display_printf(display, 0, 0, "Error initializing slave SPI\n"); while (1); } else { Display_printf(display, 0, 0, "Slave SPI initialized\n"); } /* Copy message to transmit buffer */ strncpy((char *) slaveTxBuffer, SLAVE_MSG, SPI_MSG_LENGTH); for (i = 0; i < MAX_LOOP; i++) { /* Initialize slave SPI transaction structure */ slaveTxBuffer[sizeof(SLAVE_MSG) - 1] = (i % 10) + '0'; memset((void *) slaveRxBuffer, 0, SPI_MSG_LENGTH); transaction.count = SPI_MSG_LENGTH; transaction.txBuf = (void *) slaveTxBuffer; transaction.rxBuf = (void *) slaveRxBuffer; transferOK = SPI_transfer(slaveSpi, &transaction); if (transferOK) { } else { Display_printf(display, 0, 0, "Unsuccessful slave SPI transfer"); } /* Sleep for a bit before starting the next SPI transfer */ sleep(3); } SPI_close(slaveSpi);
上面的程序至少我测下来没有问题.
同时也找其他同事帮你看一下,你可以先去测试,等我一下我同事的回复。