api_rt_adc.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include "api_rt_adc.h"
  2. #include "gd32f30x.h"
  3. Adc_Handle Adcs[3];
  4. void iRtAdc_Init(void)
  5. {
  6. // ADC0 Regular
  7. Adcs[0].AdcBase = ADC0;
  8. Adcs[0].DmaBase = DMA0;
  9. Adcs[0].DmaChannelBase = DMA_CH0;
  10. for (int i = 0; i < ADC_RESULT_SIZE; i++)
  11. {
  12. Adcs[0].Results[i] = 0;
  13. }
  14. // ADC0 Injected
  15. Adcs[1].AdcBase = ADC0;
  16. for (int i = 1; i < ADC_RESULT_SIZE; i++)
  17. {
  18. Adcs[1].Results[i] = 0;
  19. }
  20. // ADC1 Injected
  21. Adcs[2].AdcBase = ADC1;
  22. for (int i = 0; i < ADC_RESULT_SIZE; i++)
  23. {
  24. Adcs[2].Results[i] = 0;
  25. }
  26. };
  27. //void AdcLow_CompleteIsr(uint8_t devIndex);
  28. uint16_t iAdc_GetResult(uint8_t devIndex, uint8_t channelIndex)
  29. {
  30. // ASSERT_LESS(devIndex, 1);
  31. return Adcs[devIndex].Results[channelIndex];
  32. }
  33. uint16_t* iAdc_GetResultPointer(uint8_t devIndex)
  34. {
  35. // ASSERT_LESS(devIndex, 1);
  36. return Adcs[devIndex].Results;
  37. }
  38. void iAdc_Enable(uint8_t devIndex)
  39. {
  40. // ASSERT_LESS(devIndex, 1);
  41. if(RESET == (ADC_CTL1(Adcs[devIndex].AdcBase) & ADC_CTL1_ADCON)){
  42. ADC_CTL1(Adcs[devIndex].AdcBase) |= (uint32_t)ADC_CTL1_ADCON;
  43. }
  44. }
  45. void iAdc_Disable(uint8_t devIndex)
  46. {
  47. // ASSERT_LESS(devIndex, 1);
  48. ADC_CTL1(Adcs[devIndex].AdcBase) &= ~((uint32_t)ADC_CTL1_ADCON);
  49. }
  50. ApiAdc_Status iAdc_GetStatus(uint8_t devIndex)
  51. {
  52. if (ADC_STAT(Adcs[devIndex].AdcBase) & ADC_STAT_EOC != 0)
  53. {
  54. return ApiAdc_End;
  55. }
  56. else
  57. {
  58. return ApiAdc_Converting;
  59. }
  60. }
  61. void iAdc_Convert(uint8_t devIndex)
  62. {
  63. //for regular only
  64. ADC_CTL1(Adcs[devIndex].AdcBase) |= ADC_CTL1_SWRCST;
  65. }
  66. void iAdc_ChannelGroupSwitch(uint8_t devIndex, uint8_t groupIndex)
  67. {
  68. }
  69. void iAdc_EnableConversionInterrupt(uint8_t devIndex)
  70. {
  71. }
  72. void iAdc_EnableHardwareTrigger(uint8_t devIndex);
  73. void iAdc_DisableHardwareTrigger(uint8_t devIndex);