api_rt_adc.c 1.7 KB

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