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.

cc3200 SPI接多个从设备问题?



参考sdk的spi程序,默认是用一个通道,目前接一个从设备也没问题,

现在要接多个从设备,请问怎样配置spi片选SPIEN[3:0],这些片选是对应那些引脚呢,

下面定义是driverlib里面的,只有第一个在手册有这个寄存器,其他三个没找到

#define MCSPI_O_CH0CONF         0x0000012C

#define MCSPI_O_CH1CONF         0x00000140

#define MCSPI_O_CH2CONF         0x00000154

#define MCSPI_O_CH3CONF         0x00000168

  • 这个图上的SPIEN[3:0]是什么意思?怎么选择不同的spi从设备,手册上也没找到相关的说明。

  • 你挂多个设备,需要用GPIO去软件控制CS信号,还涉及到和多个SLAVE直接的通信。

    原始的SDK里面的API没有multiple slave的实现。

  • 尝试过用GPIO控制CS信号,

    配置为4线模式

    // spi引脚配置
        // Configure PIN_05 for SPI0 GSPI_CLK
        MAP_PinTypeSPI(PIN_05, PIN_MODE_7);
        // Configure PIN_06 for SPI0 GSPI_MISO
        MAP_PinTypeSPI(PIN_06, PIN_MODE_7);
        // Configure PIN_07 for SPI0 GSPI_MOSI
        MAP_PinTypeSPI(PIN_07, PIN_MODE_7);
      // Configure PIN_18 for SPI0 GSPI_CS
        MAP_PinTypeGPIO(PIN_18, PIN_MODE_0, false);
        MAP_GPIODirModeSet(GPIOA3_BASE, 0x10, GPIO_DIR_MODE_OUT);

    SPI_SW_CTRL_CS 
    SPI_4PIN_MODE

    CS信号使用GPIO_28控制(或其他引脚)配置为输出,发数据是就会停在下面这个地方,发送寄存器一直不为空,

    while(!(HWREG(GSPI_BASE + 0x00000130)&0x00000002))

    如果把CS信号GPIO_28换回下面默认SPI_CS引脚,是正常的。

    // Configure PIN_08 for SPI0 GSPI_CS
        MAP_PinTypeSPI(PIN_08, PIN_MODE_7);目前只有用这个CS信号才可以,使用MAP_SPICSEnable(GSPI_BASE),MAP_SPICSDisable(GSPI_BASE)

     

    我想问下,使用其他GPIO作为CS信号,在配置上有什么不一样的地方?

  • 这个图的意思是不是3线模式下只能接一个设备?