困扰好久了,拿出来听听大神的建议:cc2640打开spi后,无法控制其他IO
自己用cc2640画的板子,在调试的时候遇到下面这个问题
PIN_close(IdlPinHdl);
//spi用到了gpio 5(clk),6(mosi),7(csn),8(miso)四个IO 参数设置如下
SPI_Params ltSpiParams = {0};
SPI_init();
SPI_Params_init(<SpiParams);
ltSpiParams.frameFormat = SPI_POL1_PHA1;
ltSpiParams.mode = SPI_MASTER;
ltSpiParams.bitRate = 8000000;
ghSpiHdl = SPI_open(0, <SpiParams); //打开spi_0。我后面执行SPI_transfer(ghSpiHdl, >TranData),用示波器也确实抓到了时序
PinHdl = PIN_open(&PinState, PinCfg); //PIN_open之后我执行:PIN_setOutputValue,尝试拉高其他gpio,我发现它们都无法拉高。
后来,经过多次的尝试发现:只有将spi_miso分配给了其中的一个IO(0,3,8,9都可以),spi就是正确的。但与此同时,其他的gpio就无法操作;若果将spi_miso给unassigned,其他IO就正常了,但随之而来的就是spi不正确(用示波器无法抓取到了时序)
另外,PinCfg=
PINCC26XX_DIO0 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_DRVSTR_MAX, //VCC1
PINCC26XX_DIO1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_DRVSTR_MAX, //VCC2
PINCC26XX_DIO2 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_DRVSTR_MAX, //VCC3
//PINCC26XX_DIO3 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_DRVSTR_MAX,
PINCC26XX_DIO4 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_PULLUP | PIN_DRVSTR_MAX, //VCC
PINCC26XX_DIO7 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_PULLUP | PIN_DRVSTR_MAX, //CS
PINCC26XX_DIO8 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_DRVSTR_MED,
PINCC26XX_DIO9 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_DRVSTR_MIN,
咩有人啊~