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.

CC3235SF GSPI接收数据错误

Other Parts Discussed in Thread: LAUNCHXL-CC3235SF, CC3235SF, CC2640R2F

硬件使用的是官方的LAUNCHXL-CC3235SF开发板,在运行C:\ti\simplelink_cc32xx_sdk_4_20_00_07\examples\rtos\CC3235SF_LAUNCHXL\drivers\spimaster\freertos

这个例子是发现发送可以正常发送,但是接收到的数据却不对。

于是为了排除问题我把MOSI与MISO短接到了一起,按道理应该就是发送什么接收什么了吧,但是接收还是错误的。

下面是我的代码:

/* Open SPI as master (default) */
 SPI_Params_init(&spiParams);
 spiParams.frameFormat = SPI_POL0_PHA0;
 spiParams.dataSize = 8;
 spiParams.bitRate = 1000000;
 masterSpi = SPI_open(CONFIG_SPI_MASTER, &spiParams);
 if (masterSpi == NULL) {
   Display_printf(display, 0, 0, "Error initializing master SPI\n");
   while (1);
 }
 else {
   Display_printf(display, 0, 0, "Master SPI initialized\n");
 }
 
 /*
 * Master has opened CONFIG_SPI_MASTER; set CONFIG_SPI_MASTER_READY high to
 * inform the slave.
 */
 
 GPIO_write( CONFIG_SPI_MASTER_READY, 1 );
 
 
 /* Copy message to transmit buffer */
 strncpy((char *) masterTxBuffer, MASTER_MSG, SPI_MSG_LENGTH);
 
 for (i = 0; i < 1; i++) {
   /*
   * Wait until slave is ready for transfer; slave will pull
   * CONFIG_SPI_SLAVE_READY low.
   */
   GPIO_write(CONFIG_SPI_MASTER_READY, 0);
   /* Initialize master SPI transaction structure */
   masterTxBuffer[0] = 0x01;
   masterTxBuffer[1] =0x02;
   masterTxBuffer[2] =0x03;
   masterTxBuffer[3] =0x04;
   masterTxBuffer[4] =0x05;
   memset((void *) masterRxBuffer, 0, SPI_MSG_LENGTH);
   transaction.count = SPI_MSG_LENGTH;
   transaction.txBuf = (void *) masterTxBuffer;
   transaction.rxBuf = (void *) masterRxBuffer;
   
   /* Toggle user LED, indicating a SPI transfer is in progress */
   //  GPIO_toggle(CONFIG_GPIO_LED_1);
   
   /* Perform SPI transfer */
   transferOK = SPI_transfer(masterSpi, &transaction);
   if (transferOK) {
     GPIO_write(CONFIG_SPI_MASTER_READY, 1);
     Display_printf(display, 0, 0, "Master received:[%02x] %02x %02x %02x %02x %02x", 
                    i,
                    masterRxBuffer[0],
                    masterRxBuffer[1],
                    masterRxBuffer[2],
                    masterRxBuffer[3],
                    masterRxBuffer[4]);
   }
   else {
     Display_printf(display, 0, 0, "Unsuccessful master SPI transfer");
   }
   
   /* Sleep for a bit before starting the next SPI transfer  */
 }

我发送的是 5 个字节 0x01 0x02 0x3 0x04 0x05,理论上也应该收到  0x01 0x02 0x3 0x04 0x05 但是在transaction.rxBuf里收到的确是 0x03 0x0c 0x0f 0x30 0x1b。

我用逻辑分析仪也看了,在逻辑分析仪上看的数据没问题:

请教下问题可能出在哪?卡在这已经一个星期了。。。多谢!