|
芯片的SPI1的CS是PB8,这里SPI用软件SPI的话,为啥不能把PB8弄出推挽输出,然后拉低 发送数据 拉高停止传输呢!
按如下的设置根本CS就不行,芯片不工作,那这样的软件片选CS还有什么用呢,想换成其他IO也肯定是不行了呗!望解答!!
GPIO_InitStruct.pin = FL_GPIO_PIN_8; //SPI1_SSN
GPIO_InitStruct.mode = FL_GPIO_MODE_OUTPUT;
GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.pull = FL_DISABLE;
GPIO_InitStruct.remapPin = FL_DISABLE;
FL_GPIO_Init( GPIOB, &GPIO_InitStruct );
defaultInitStruct.transferMode = FL_SPI_TRANSFER_MODE_FULL_DUPLEX;
defaultInitStruct.mode = FL_SPI_WORK_MODE_MASTER;
defaultInitStruct.dataWidth = FL_SPI_DATA_WIDTH_8B;
defaultInitStruct.clockPolarity = FL_SPI_POLARITY_INVERT;
defaultInitStruct.clockPhase = FL_SPI_PHASE_EDGE2;
defaultInitStruct.softControl = FL_ENABLE;
defaultInitStruct.baudRate = FL_SPI_BAUDRATE_DIV4;
defaultInitStruct.bitOrder = FL_SPI_BIT_ORDER_MSB_FIRST;
// FL_SPI_SetSSNPin (SPI1, FL_SPI_SSN_LOW); //
FL_GPIO_ResetOutputPin(GPIOB , FL_GPIO_PIN_8);
FL_SPI_WriteTXBuff(SPI1, adder);
while(!(FL_SPI_IsActiveFlag_TXBuffEmpty(SPI1)));
while(!(FL_SPI_IsActiveFlag_RXBuffFull(SPI1)));
adder = FL_SPI_ReadRXBuff(SPI1);
FL_SPI_WriteTXBuff(SPI1, data);
while(!(FL_SPI_IsActiveFlag_TXBuffEmpty(SPI1)));
while(!(FL_SPI_IsActiveFlag_RXBuffFull(SPI1)));
data = FL_SPI_ReadRXBuff(SPI1);
FL_GPIO_SetOutputPin(GPIOB , FL_GPIO_PIN_8);
// FL_SPI_SetSSNPin(SPI1, FL_SPI_SSN_HIGH);
这样设置就发送不了数据
|
|