2025-06-27 00:32:57 +08:00
|
|
|
|
#ifndef DAC_H__
|
|
|
|
|
|
#define DAC_H__
|
|
|
|
|
|
|
2025-10-18 13:58:40 +08:00
|
|
|
|
#include "stdint.h"
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-10-18 13:58:40 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD>Ӧ<EFBFBD>Ķ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
// <20><>ʱ<EFBFBD><CAB1>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>90Mhzʱ
|
|
|
|
|
|
#define RATE11025 8163
|
|
|
|
|
|
#define RATE22050 4081
|
|
|
|
|
|
#define RATE44100 2041
|
|
|
|
|
|
#define RATE48000 1875 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
// dac <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
#define DAC_VOL_MAX 10
|
|
|
|
|
|
|
2025-10-18 13:58:40 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD>õĶ<C3B5>ʱ<EFBFBD><CAB1>
|
|
|
|
|
|
#define DAC_TIMER TIM4
|
2025-06-27 00:32:57 +08:00
|
|
|
|
#define DAC_TIMER_RCC RCC_APB1Periph_TIM4
|
|
|
|
|
|
|
2025-10-18 13:58:40 +08:00
|
|
|
|
typedef struct _DAC_UserStruct {
|
|
|
|
|
|
uint32_t *buff1; // buff<66>ĸ<EFBFBD>16λ<36><CEBB><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>16λ<36><CEBB><EFBFBD><EFBFBD>2
|
|
|
|
|
|
uint32_t *buff2;
|
|
|
|
|
|
int buff_size;
|
|
|
|
|
|
int buff_useing; // <09><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ĸ<EFBFBD>buff
|
|
|
|
|
|
int buff_Invalid; // 1,<2C>п<EFBFBD><D0BF><EFBFBD>buff<66><66>0<EFBFBD><30><EFBFBD><EFBFBD><DEBF><EFBFBD>buff
|
|
|
|
|
|
int rate; // <20><><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD>Ӧ<EFBFBD>Ķ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void (*call_back)(struct _DAC_UserStruct *u);
|
|
|
|
|
|
} DAC_UserStruct;
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
// <20><>˫<EFBFBD><CBAB><EFBFBD>巽ʽ<E5B7BD><CABD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ɹ<EFBFBD>
|
2025-10-18 13:58:40 +08:00
|
|
|
|
int DAC_NormalInit(DAC_UserStruct *dac);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-10-18 13:58:40 +08:00
|
|
|
|
void DAC_NormalDeInit(DAC_UserStruct *dac);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-10-18 13:58:40 +08:00
|
|
|
|
// <20><>ȡDAC<41><43><EFBFBD><EFBFBD>
|
|
|
|
|
|
DAC_UserStruct *DAC_GetDacHander(void);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-10-18 13:58:40 +08:00
|
|
|
|
// <20><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>ʱ<EFBFBD><CAB1>Ƶ<EFBFBD><C6B5>
|
|
|
|
|
|
uint16_t DAC_GetRate(uint16_t rate);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
// <20><><EFBFBD>仺<EFBFBD><E4BBBA><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>0<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>-1<><31>ʧ<EFBFBD><CAA7>
|
2025-10-18 13:58:40 +08:00
|
|
|
|
int DAC_FillBuff(int16_t *buf, int size, int nch);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
// <20><>fifo<66><6F>ʽ<EFBFBD><CABD>ʼ<EFBFBD><CABC>,<2C><><EFBFBD><EFBFBD>0<EFBFBD>ɹ<EFBFBD>
|
2025-10-18 13:58:40 +08:00
|
|
|
|
int DAC_FifolInit(void);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-10-18 13:58:40 +08:00
|
|
|
|
void DAC_FifoDeInit(void);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
// <20><><EFBFBD>û<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
int DAC_SetSetValuwFun(int (*fun)(uint16_t *));
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>0<EFBFBD>ɹ<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
int DAC_SaveValue(uint16_t value);
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|