driver_sddac.h 977 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #ifndef _DRIVER_SDDAC_H
  2. #define _DRIVER_SDDAC_H
  3. #include "driver_com.h"
  4. enum {
  5. SDDAC_NORMAL_SPR_48k = 0x00,
  6. SDDAC_NORMAL_SPR_24k,
  7. SDDAC_NORMAL_SPR_16k,
  8. SDDAC_NORMAL_SPR_12k,
  9. SDDAC_NORMAL_SPR_8k,
  10. SDDAC_HIGH_SPR_240k,
  11. SDDAC_HIGH_SPR_120k,
  12. SDDAC_HIGH_SPR_80k,
  13. SDDAC_HIGH_SPR_60k,
  14. SDDAC_HIGH_SPR_48k,
  15. };
  16. typedef enum {
  17. SDDAC_IT_ALL_DONE = BIT(0),
  18. SDDAC_IT_HALF_DONE = BIT(1),
  19. } SDDAC_IT_TYPEDEF;
  20. typedef struct{
  21. u8 sample_rate;
  22. u8 *dma_buf;
  23. u16 dma_size;
  24. } sddac_init_typedef;
  25. void sddac_init(sddac_init_typedef *config);
  26. void sddac_clk_init(void);
  27. void sddac_pic_config(isr_t isr, int pr, SDDAC_IT_TYPEDEF interrupt_type, FUNCTIONAL_STATE state);
  28. void sddac_cmd(FUNCTIONAL_STATE state);
  29. FLAG_STATE sddac_get_flag(SDDAC_IT_TYPEDEF interrupt_type);
  30. void sddac_clear_flag(SDDAC_IT_TYPEDEF interrupt_type);
  31. void sddac_dma_kick_start(uint8_t *buf, uint16_t size);
  32. void sddac_deinit(void);
  33. #endif