主题中讨论的其他器件:CC3235SF
硬件:
LAUNCHXL-CC3235SF
IDE:IAR 8.50.1
当我运行此演示 C:\ti\simplelink_cc32xx_sdk_4_20_00_07\examples\rtos\cC3235SF_LAUNCHXl\drivers\spimaster\freertos 时、我发现 Gspi 无法在 MISO 线路中接收正确的数据。
我尝试将 MOSI 和 MISO 连接在一起、以使数据从 MOSI 环路发送回 MISO。但在 MISO 线路中仍然无法接收正确的数据。
以下是我的代码:
//将 SPI 打开为主控方(默认值)*/ 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、"初始化主器件 SPI\n"时出错); while (1); } else{ display_printf (display、0、0、"Master SPI initialized"); } /* 主器件已打开 CONFIG_SPI_MASTER;将 CONFIG_SPI_MASTER_READY 设置为高电平以 *通知从器件。 * GPIO_write( CONFIG_SPI_MASTER_READY,1 ); /*复制消息以传输缓冲器*/ strncpy ((char *) masterTxBuffer、master_MSG、SPI_MSG_LENGTH); 对于(i = 0;i < 1;i++){ /* *等待从器件准备好传输;从器件将拉取 * CONFIG_SPI_SLAVE_READY 低电平。 * GPIO_WRITE (CONFIG_SPI_MASTER_READY、0); /*初始化主 SPI 事务结构*/ 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; /*切换用户 LED、指示正在进行 SPI 传输*/ // GPIO_toggle (CONFIG_GPIO_LED_1); /*执行 SPI 传输*/ transferOK = SPI_transfer (masterSpi、事务); if (transferOK){ GPIO_WRITE (CONFIG_SPI_MASTER_READY、1); Display_printf (display、0、0、"Master received:[%02x]%02x %02x %02x %02x %02x %02x %02x %02x "、 I、 masterRxBuffer[0]、 masterRxBuffer[1]、 masterRxBuffer[2]、 masterRxBuffer[3]、 masterRxBuffer[4]); } 否则{ display_printf (display、0、0、"主 SPI 传输失败"); } /*在开始下一个 SPI 传输前睡眠一位*/ }
如上所述、我发送5个字节0x01 0x02 0x3 0x04 0x05、我也应该接收 0x01 0x02 0x3 0x04 0x05、但我在 transaction.rxBuf 中收到0x03 0x0c 0x0F 0x30 0x1b。
但在逻辑分析仪中、数据看起来是正确的:
您能告诉我哪里出错了吗?我在这里停留了3天以上... 谢谢!
