void SPI2_IRQHandler(void) { u16 volume; u16 app; /* Check if data are available in SPI Data register */ if (SPI_GetITStatus(SPI2, SPI_I2S_IT_RXNE) != RESET) { app = SPI_I2S_ReceiveData(SPI2); InternalBuffer[InternalBufferSize++] = HTONS(app); /* Check to prevent overflow condition */ if (InternalBufferSize >= INTERNAL_BUFF_SIZE) { InternalBufferSize = 0; volume = 50; PDM_Filter_64_LSB((uint8_t *)InternalBuffer, (uint16_t *)pAudioRecBuf, volume , (PDMFilter_InitStruct *)&Filter); if(sample_collected_fp != NULL) sample_collected_fp((int16_t*)pAudioRecBuf); } } }
void SPI2_IRQHandler(void){ uint16_t mask,i; uint16_t app; static uint8_t k = 0; /* Check if data are available in SPI Data register */ if (SPI_GetITStatus(SPI2, SPI_I2S_IT_RXNE) != RESET) { app = SPI_I2S_ReceiveData(SPI2);// 64 decimation mask = 0x01; for(i=0;i<16;i++) { if(mask & app) samp64 += 1; else samp64 -= 1; mask <<= 1; } if(k==3) { k=0; if(MAXIMUM <samp64) MAXIMUM = samp64; // if(samp64 > CLAPLIMIT) DisplayOn = 1; samp64 = 0; } k++; } return; }
void SPI2_IRQHandler(void){ extern PDMFilter_InitStruct Filter; extern uint16_t* AudioRecBuf; extern uint16_t* WriteBuf; extern uint16_t PDM_Input_Buffer[]; extern uint16_t PCM_Output_Buffer[]; u16 volume; u16 app; // Check if new data are available in SPI data register if (SPI_GetITStatus(SPI2, SPI_I2S_IT_RXNE) != RESET){ // Read received data and save it in internal table app = SPI_I2S_ReceiveData(SPI2); // PDM_Input_Buffer[InternalBufferSize++] = (uint8_t)app; PDM_Input_Buffer[InternalBufferSize++] = /*(uint8_t)*/HTONS(app); counter++; // Check to prevent overflow condition if (InternalBufferSize >= PDM_Input_Buffer_SIZE){ InternalBufferSize = 0; volume = 50; PDM_Filter_64_LSB((uint8_t *)PDM_Input_Buffer, (uint16_t *)AudioRecBuf/*PCM_Output_Buffer*/, volume, &Filter); Data_Status = 1; } } }
void AUDIO_MIC_SPI_IRQHANDLER(void) { u16 app; /* Check if data are available in SPI Data register */ if (SPI_GetITStatus(SPI2, SPI_I2S_IT_RXNE) != RESET) { /* actually, we receiving 64kSamples/s due we dont care about left/right channel. */ app = SPI_I2S_ReceiveData(SPI2); #ifdef USE_ST_FILTER InternalBuffer[InternalBufferSize++] = HTONS(app); InternalBufferSize++; /* Check to prevent overflow condition */ if (InternalBufferSize >= INTERNAL_BUFF_SIZE) { InternalBufferSize = 0; //got 64 samples of 16bit => 16 samples of output PDM_Filter_64_LSB((uint8_t *) InternalBuffer, (uint16_t *) &pAudioRecBuf_8Khz[PCM_OUT_SIZE*recBuffFillness], 10, (PDMFilter_InitStruct *)&Filter); recBuffFillness++; if(recBuffFillness >= REC_BUFFERS) { Data_Status = 1; recBuffFillness=0; } } #else //pdm_fir_flt_put(&Filter2, HTONS(app)); pdm_fir_flt_put(&Filter2, app); InternalBufferSize++; /* Check to prevent overflow condition */ if (InternalBufferSize >= INTERNAL_BUFF_SIZE) { InternalBufferSize = 0; pAudioRecBuf_8Khz[recBuffFillness] = pdm_fir_flt_get(&Filter2, 16); recBuffFillness++; if(recBuffFillness >= REC_BUFFERS * PCM_OUT_SIZE) { Data_Status = 1; recBuffFillness=0; } } #endif } }
__interrupt void SPI_IRQHandler(void) { static u8 cnt = 0; u8 * data = getDataBuf(); if(SPI_GetITStatus(SPI_IT_RXNE) != RESET){ spi_cmd = SPI_ReceiveData(); SPI_ClearITPendingBit(SPI_IT_RXNE); } if(SPI_GetITStatus(SPI_IT_TXE) != RESET){ if(spi_cmd == 0xff) SPI_SendData(cnt); else if((spi_cmd & 0xc0) == 0x40) SPI_SendData(data[spi_cmd&0x3f]); else if((spi_cmd & 0xc0) == 0x80) { switch(buffer_s) { case 0: SPI_SendData(Rx_Buffer[spi_cmd&0x3f]); break; #if defined(NEED_RESOLVE_INFO) case 1: SPI_SendData(RxGGA[spi_cmd&0x3f]); break; #endif // defined(NEED_RESOLVE_INFO) case 2: SPI_SendData(DataP[spi_cmd&0x3f]); break; case 3: SPI_SendData(DataQ[spi_cmd&0x3f]); break; default: SPI_SendData(data[spi_cmd&0x3f]); break; } } else if((spi_cmd & 0xf0) == 0x30) buffer_s = spi_cmd & 0xf; else if((spi_cmd & 0xfc) == 0x14) { switch(spi_cmd & 0x03) { case 0: BEEP_Cmd(DISABLE); SPI_SendData(spi_cmd); break; case 1: BEEP_DeInit(); BEEP_Init(BEEP_FREQUENCY_1KHZ); BEEP_Cmd(ENABLE); SPI_SendData(spi_cmd); break; case 2: BEEP_DeInit(); BEEP_Init(BEEP_FREQUENCY_2KHZ); BEEP_Cmd(ENABLE); SPI_SendData(spi_cmd); break; case 3: BEEP_DeInit(); BEEP_Init(BEEP_FREQUENCY_4KHZ); BEEP_Cmd(ENABLE); SPI_SendData(spi_cmd); break; default: BEEP_Cmd(DISABLE); SPI_SendData(data[spi_cmd]); break; } } else SPI_SendData(0x66); cnt ++; SPI_ClearITPendingBit(SPI_IT_TXE); } }