Files
hm fc10ef2e10 Initial commit: LSPi (LiangShanPi) project
GD32F470ZGT6 based project with full peripheral support:
- SDRAM (W9825G6KH) via EXMC
- LCD NT35510 (480x800) via EXMC NOR/PSRAM
- Flash (W25Q64) via SPI
- UART (USART0) debug console
- LED indicators
- CMSIS-DAP debug interface
- CMake + ARM GCC toolchain build system
2026-04-26 16:24:42 +08:00

45 lines
831 B
C++

#ifndef __ADC_DRIVER_H__
#define __ADC_DRIVER_H__
#include <cstdint>
#include "bus_core.h"
enum class AdcPort : uint8_t {
_0 = 0,
_1, _2,
MAX
};
struct AdcConfig {
uint32_t clock_prescaler = 0;
uint32_t resolution = 0;
uint32_t sample_time = 0;
bool use_dma = false;
bool use_interrupt = false;
};
class AdcBus {
public:
explicit AdcBus(AdcPort port);
~AdcBus();
AdcBus(const AdcBus &) = delete;
AdcBus &operator=(const AdcBus &) = delete;
RetCode init(const AdcConfig &config);
RetCode deinit();
RetCode channel_config(uint8_t channel, uint8_t rank);
RetCode start_conversion(uint8_t channel);
uint16_t read();
float read_voltage();
private:
AdcPort port_;
AdcConfig config_;
bool initialized_ = false;
};
void adc_irq_handler();
#endif