__IO uint8_t bSendData_g; __IO uint16_t uiRecData_g; __IO uint8_t bRecCount_g; uint16_t psi5masterSendWord(uint16_t word) { uint16_t uiData; uint8_t abData[2]; // Split data to send in two bytes abData[0] = (uint8_t)(word & 0x00FF); abData[1] = (uint8_t)((word >> 8) & 0x00FF); // set second byte to global send buffer bSendData_g = abData[0]; // set receive buffer to 0 uiRecData_g = 0; // set receive count to 0 bRecCount_g = 0; //########################## send command ############################# // set CS signal to 0 GPIO_ResetBits(GPIOA, GPIO_Pin_15); // send first byte (MSB) SPI_I2S_SendData(SPI1, abData[1]); // enable SPI SPI_Cmd(SPI1, ENABLE); // wait for end of communication while(bRecCount_g < 2) {} // get receive data uiData = uiRecData_g; // Pause Delay(100); // Split data to send in two bytes word = 0x5700; // NOP abData[0] = (uint8_t)(word & 0x00FF); abData[1] = (uint8_t)((word >> 8) & 0x00FF); // set second byte to global send buffer bSendData_g = abData[0]; // set receive buffer to 0 uiRecData_g = 0; // set receive count to 0 bRecCount_g = 0; //########################## send NOP ############################# // set CS signal to 0 GPIO_ResetBits(GPIOA, GPIO_Pin_15); // send first byte (MSB) SPI_I2S_SendData(SPI1, abData[1]); // enable SPI SPI_Cmd(SPI1, ENABLE); // wait for end of communication while(bRecCount_g < 2) {} // get receive data uiData = uiRecData_g; /*!< Return response of command*/ GPIOB->BSRRH = GPIO_Pin_2; //reset PIN2 return uiData; }