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.

LAUNCHXL-CC1310: 从7X7封装移植到4X4封装,在spi_transfer会跑飞。

Part Number: LAUNCHXL-CC1310
Other Parts Discussed in Thread: CC1310

 首先参考这篇文章SimpleLink MCU代码移植指南:CC1310从VQFN48(7×7)到VQFN32(5×5)代码移植流程参考 - 嵌入式处理 - 技术文章 - E2ETm 设计支持 (ti.com),将CC1310_LAUNCHXL.h中除了SPI0的IO都赋值PIN_UNASSIGNED。

CC1310_LAUNCHXL.H:

#define CC1310_LAUNCHXL_DIO23_ANALOG          PIN_UNASSIGNED
#define CC1310_LAUNCHXL_DIO24_ANALOG          PIN_UNASSIGNED
#define CC1310_LAUNCHXL_DIO25_ANALOG          PIN_UNASSIGNED
#define CC1310_LAUNCHXL_DIO26_ANALOG          PIN_UNASSIGNED
#define CC1310_LAUNCHXL_DIO27_ANALOG          PIN_UNASSIGNED
#define CC1310_LAUNCHXL_DIO28_ANALOG          PIN_UNASSIGNED
#define CC1310_LAUNCHXL_DIO29_ANALOG          PIN_UNASSIGNED
#define CC1310_LAUNCHXL_DIO30_ANALOG          PIN_UNASSIGNED

/* Digital IOs */
#define CC1310_LAUNCHXL_DIO0                  IOID_0
#define CC1310_LAUNCHXL_DIO1                  IOID_1
#define CC1310_LAUNCHXL_DIO12                 PIN_UNASSIGNED
#define CC1310_LAUNCHXL_DIO15                 PIN_UNASSIGNED
#define CC1310_LAUNCHXL_DIO16_TDO             PIN_UNASSIGNED
#define CC1310_LAUNCHXL_DIO17_TDI             PIN_UNASSIGNED
#define CC1310_LAUNCHXL_DIO21                 PIN_UNASSIGNED
#define CC1310_LAUNCHXL_DIO22                 PIN_UNASSIGNED

/* Discrete Inputs */
#define CC1310_LAUNCHXL_PIN_BTN1              PIN_UNASSIGNED
#define CC1310_LAUNCHXL_PIN_BTN2              PIN_UNASSIGNED

/* GPIO */
#define CC1310_LAUNCHXL_GPIO_LED_ON           1
#define CC1310_LAUNCHXL_GPIO_LED_OFF          0

/* I2C */
#define CC1310_LAUNCHXL_I2C0_SCL0             PIN_UNASSIGNED
#define CC1310_LAUNCHXL_I2C0_SDA0             PIN_UNASSIGNED

/* I2S */
#define CC1310_LAUNCHXL_I2S_ADO               PIN_UNASSIGNED
#define CC1310_LAUNCHXL_I2S_ADI               PIN_UNASSIGNED
#define CC1310_LAUNCHXL_I2S_BCLK              PIN_UNASSIGNED
#define CC1310_LAUNCHXL_I2S_MCLK              PIN_UNASSIGNED
#define CC1310_LAUNCHXL_I2S_WCLK              PIN_UNASSIGNED

/* LEDs */
#define CC1310_LAUNCHXL_PIN_LED_ON            1
#define CC1310_LAUNCHXL_PIN_LED_OFF           0
#define CC1310_LAUNCHXL_PIN_RLED              PIN_UNASSIGNED
#define CC1310_LAUNCHXL_PIN_GLED              PIN_UNASSIGNED

/* PWM Outputs */
#define CC1310_LAUNCHXL_PWMPIN0               PIN_UNASSIGNED
#define CC1310_LAUNCHXL_PWMPIN1               PIN_UNASSIGNED
#define CC1310_LAUNCHXL_PWMPIN2               PIN_UNASSIGNED
#define CC1310_LAUNCHXL_PWMPIN3               PIN_UNASSIGNED
#define CC1310_LAUNCHXL_PWMPIN4               PIN_UNASSIGNED
#define CC1310_LAUNCHXL_PWMPIN5               PIN_UNASSIGNED
#define CC1310_LAUNCHXL_PWMPIN6               PIN_UNASSIGNED
#define CC1310_LAUNCHXL_PWMPIN7               PIN_UNASSIGNED

/* SPI */
#define CC1310_LAUNCHXL_SPI_FLASH_CS          PIN_UNASSIGNED
#define CC1310_LAUNCHXL_FLASH_CS_ON           0
#define CC1310_LAUNCHXL_FLASH_CS_OFF          1

/* SPI Board */
#define CC1310_LAUNCHXL_SPI0_MISO             IOID_4          /* RF1.20 */
#define CC1310_LAUNCHXL_SPI0_MOSI             IOID_5          /* RF1.18 */
#define CC1310_LAUNCHXL_SPI0_CLK              IOID_7         /* RF1.16 */
#define CC1310_LAUNCHXL_SPI0_CSN              IOID_6
#define CC1310_LAUNCHXL_SPI0_IRQ              IOID_8
#define CC1310_LAUNCHXL_SPI0_CE               IOID_9

#define CC1310_LAUNCHXL_SPI1_MISO             PIN_UNASSIGNED
#define CC1310_LAUNCHXL_SPI1_MOSI             PIN_UNASSIGNED
#define CC1310_LAUNCHXL_SPI1_CLK              PIN_UNASSIGNED
#define CC1310_LAUNCHXL_SPI1_CSN              PIN_UNASSIGNED

/* UART Board */
#define CC1310_LAUNCHXL_UART_RX               PIN_UNASSIGNED          /* RXD */
#define CC1310_LAUNCHXL_UART_TX               PIN_UNASSIGNED         /* TXD */
#define CC1310_LAUNCHXL_UART_CTS              PIN_UNASSIGNED       /* CTS */
#define CC1310_LAUNCHXL_UART_RTS              PIN_UNASSIGNED         /* RTS */

主函数如下:

     void *mainThread(void *arg0)
{
     uint16_t         buf_num;
      for(buf_num = 0 ; buf_num < MASSAGE ; buf_num ++)
      {
          transmitBuffer[buf_num] = buf_num;
      }
      
      SPI_init();
      
      SPI_Params_init(&spiParams);  // Initialize SPI parameters
      spiParams.transferMode = SPI_MODE_BLOCKING;  //
      spiParams.dataSize = 8;       // 8-bit data size
      spiParams.mode = SPI_MASTER;  //SPI MASTER
      spiParams.frameFormat = SPI_POL0_PHA1;  //SPI POL0 PHA0
      spiParams.bitRate = 4000000;  //4MHZ
      
      spiTransaction.count = MASSAGE;
      spiTransaction.txBuf = (void *)transmitBuffer;
      spiTransaction.rxBuf = (void *)receiveBuffer;
      
      spi = SPI_open(Board_SPI0, &spiParams);
      if (spi == NULL) {
          while (1);  // SPI_open() failed
      }
      
      SPI_transfer(spi,&spiTransaction);
      usleep(100);
      
      return (NULL);
}

代码会在跑完SPI_transfer之后跑飞。代码在7X7封装上依然可以运行,但是在4X4上会跑飞。请问还有哪些地方需要修改,才可以正常工作?