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。
我用逻辑分析仪也看了,在逻辑分析仪上看的数据没问题:
请教下问题可能出在哪?卡在这已经一个星期了。。。多谢!
Kevin Qiu1:
user1775171 说:排除问题我把MOSI与MISO短接到了一起
将MOSI与MOSI相连
,
user1775171:
您好,
现在将SPICC32XXDMA_PIN_07_MOSI与SPICC32XXDMA_PIN_06_MISO相连是为了形成环路,仅用于测试收到的数据是否与发出的一致。
开发板上的MOSI确实已经与芯片的PIN07相连了。
不知道是我哪个地方没有配置对吗?还是说MISO引脚需要特殊的配置一下,否则MCU读取不到正确的电平?
谢谢!
,
user1775171:
因为我这边只有一块LAUNCHXL板子,没法做demo中的主从机实验,但是按照之前开发其它单片机的经验来说,主机SPI发送数据的同时都是可以同时接收数据的,难道CC3235是不允许的吗?
谢谢!
,
Kevin Qiu1:
可以使用CC13X2、CC26X2、CC13X0、CC2640r2f、CC32XX等simplelink产品测试SPI,例程都是一样的
我之前测试没有问题