@@ -208,6 +208,26 @@ int MXC_ADC_RevB_StartConversionAsync(mxc_adc_revb_regs_t *adc, mxc_adc_complete
208208 return E_NO_ERROR ;
209209}
210210
211+ int MXC_ADC_RevB_StartConversionAsyncStream (mxc_adc_revb_regs_t * adc ,
212+ mxc_adc_complete_cb_t callback )
213+ {
214+ if (callback == NULL ) {
215+ return E_BAD_PARAM ;
216+ }
217+
218+ adc -> fifodmactrl |= MXC_F_ADC_REVB_FIFODMACTRL_FLUSH ; //Flush data FIFO
219+
220+ MXC_ADC_RevB_ClearFlags (adc , ADC_IF_MASK );
221+
222+ while (MXC_GetLock ((uint32_t * )& async_callback , (uint32_t )callback ) != E_NO_ERROR ) {}
223+
224+ MXC_ADC_RevB_EnableInt (adc , MXC_F_ADC_REVB_INTEN_FIFO_LVL );
225+
226+ adc -> ctrl1 |= MXC_F_ADC_REVB_CTRL1_START | MXC_F_ADC_REVB_CTRL1_CNV_MODE ;
227+
228+ return E_NO_ERROR ;
229+ }
230+
211231int MXC_ADC_RevB_StartConversionDMA (mxc_adc_revb_regs_t * adc , mxc_adc_conversion_req_t * req ,
212232 int * data , void (* callback )(int , int ))
213233{
@@ -304,6 +324,17 @@ int MXC_ADC_RevB_Handler(mxc_adc_revb_regs_t *adc)
304324 return E_NO_ERROR ;
305325}
306326
327+ void MXC_ADC_RevB_Free (mxc_adc_revb_regs_t * adc )
328+ {
329+ if ((adc -> ctrl1 & MXC_F_ADC_REVB_CTRL1_CNV_MODE )) {
330+ MXC_ADC_RevB_DisableInt (adc ,
331+ (MXC_F_ADC_REVB_INTFL_SEQ_DONE | MXC_F_ADC_REVB_INTFL_CONV_DONE |
332+ MXC_F_ADC_REVB_INTEN_FIFO_LVL ));
333+
334+ MXC_FreeLock ((uint32_t * )& async_callback );
335+ }
336+ }
337+
307338int MXC_ADC_RevB_GetData (mxc_adc_revb_regs_t * adc , int * outdata )
308339{
309340 uint32_t loop_counter , length ;
0 commit comments