HPM APP
HPMicro Application solution
adc16.c File Reference
#include "board.h"
#include "hpm_debug_console.h"
#include "hpm_adc16_drv.h"
#include "hpm_pwm_drv.h"
#include "adc16.h"
#include "hpm_trgm_drv.h"
#include "hpm_trgmmux_src.h"
#include "hpm_dmamux_drv.h"
#include "hpm_dma_drv.h"
#include "hpm_spi_drv.h"
#include "hpm_misc.h"

Macros

#define APP_SPI_BASE   HPM_SPI3
 
#define APP_SPI_CLK_NAME   clock_spi3
 
#define APP_SPI_IRQ   IRQn_SPI3
 
#define APP_SPI_SCLK_FREQ   (20000000UL)
 
#define BOARD_APP_SPI_ADDR_LEN_IN_BYTES   (1U)
 
#define BOARD_APP_SPI_DATA_LEN_IN_BITS   (8U)
 
#define APP_SPI_RX_DMA   HPM_DMA_SRC_SPI3_RX
 
#define APP_SPI_TX_DMA   HPM_DMA_SRC_SPI3_TX
 
#define SPI_CS_GPIO_CTRL   HPM_GPIO0
 
#define SPI_CS_PIN   IOC_PAD_PA00
 
#define SPI_CS_ACTIVE_LEVEL   (0U)
 
#define APP_ADC16_CORE   HPM_CORE0
 
#define APP_ADC16_SEQ_START_POS   (0U)
 
#define APP_ADC16_SEQ_IRQ_EVENT   adc16_event_seq_single_complete
 
#define APP_ADC16_SEQ_DMA_BUFF_LEN_IN_4BYTES   (1024U)
 
#define BOARD_APP_ADC16_PMT_PWM   HPM_PWM0
 
#define BOARD_APP_ADC16_PMT_TRGM   HPM_TRGM0
 
#define BOARD_APP_ADC16_PMT_TRGM_IN   HPM_TRGM0_INPUT_SRC_PWM0_CH8REF
 
#define BOARD_APP_ADC16_PMT_TRGM_OUT   TRGM_TRGOCFG_ADCX_PTRGI0A
 
#define APP_ADC16_PMT_PWM_REFCH_A   (8U)
 
#define APP_ADC16_PMT_PWM   BOARD_APP_ADC16_PMT_PWM
 
#define APP_ADC16_PMT_TRGM   BOARD_APP_ADC16_PMT_TRGM
 
#define APP_ADC16_PMT_TRGM_IN   BOARD_APP_ADC16_PMT_TRGM_IN
 
#define APP_ADC16_PMT_TRGM_OUT   BOARD_APP_ADC16_PMT_TRGM_OUT
 
#define APP_ADC16_PMT_TRIG_CH   BOARD_APP_ADC16_PMT_TRIG_CH
 
#define APP_ADC16_PMT_IRQ_EVENT   adc16_event_trig_complete
 
#define APP_ADC16_PMT_DMA_BUFF_LEN_IN_4BYTES   ADC_SOC_PMT_MAX_DMA_BUFF_LEN_IN_4BYTES
 
#define PWM_FREQUENCY   (20000)
 
#define PWM_RELOAD   (clock_get_frequency(clock_mot0) / PWM_FREQUENCY - 1) /*20K hz = 200 000 000/PWM_RELOAD */
 

Functions

void board_init_spi_pins_test (SPI_Type *ptr)
 
static uint8_t get_adc_conv_mode (void)
 
void isr_adc16 (void)
 
hpm_stat_t process_pmt_data (uint32_t *buff, int32_t start_pos, uint32_t len)
 
void init_trigger_source (PWM_Type *ptr)
 Initialize trigger source ;初始化触发源PWM. More...
 
void init_trigger_mux (TRGM_Type *ptr)
 Initialize TRGM ;初始化互联管理器 More...
 
void hdma_spi_tx_chain_config (void)
 HDMA chain transmission configuration;HDMA链式传输配置 task 1:SPI->TRANSCTRL configuration; ;SPI数据格式配置 task 2:SPI->CMD configuration;SPI命令寄存器配置 task 3:SPI->DATA write;SPI数据寄存器写入 task 4:dummy buff copy;空字节buff拷贝 task 5:SPI->DATA read;SPI->DATA读取 Each task is connected through a linked list adc_descriptors1 and executed in a sequential loop ;各任务通过链表adc_descriptors1连接起来,按照顺序循环执行 More...
 
void hdma_spi_config (void)
 
void prepare_spi_sent_data (void)
 
void spi_init (void)
 set SPI sclk frequency, format config, control config for master ;配置成主模式传输,SPI时钟频率,数据格式,传输控制,控制配置 More...
 
void init_trigger_target (ADC16_Type *ptr, uint8_t trig_ch, bool inten)
 Initialize trigger target ;初始化触发目标 More...
 
hpm_stat_t init_common_config (adc16_conversion_mode_t conv_mode)
 Initialize ADC common configuration ;初始化ADC通用配置 More...
 
void init_preemption_config (void)
 Initialize preemption conversion mode.Including trigger source initialization, trigger target initialization, TRGM initialization, and DMA initialization ;ADC抢占转换模式初始化,包括触发源初始化、触发目标初始化、互联管理器初始化和DMA初始化 More...
 
void preemption_handler (void)
 
int main (void)
 

Variables

uint32_t seq_buff [(1024U)]
 
uint32_t pmt_buff [ADC_SOC_PMT_MAX_DMA_BUFF_LEN_IN_4BYTES]
 
uint8_t seq_adc_channel [] = {BOARD_APP_ADC16_CH_1}
 
uint8_t trig_adc_channel [] = {BOARD_APP_ADC16_CH_1}
 
__IO uint8_t seq_full_complete_flag
 
__IO uint8_t trig_complete_flag
 
uint8_t sendbuff [2]
 
uint8_t spi_buf [4]
 
uint8_t test_buff3 [2]
 
uint8_t test_buff4 [2]
 
dma_linked_descriptor_t adc_descriptors1 [6]
 
static uint32_t spi_transctrl [5]
 
spi_control_config_t control_config = {0}
 

Macro Definition Documentation

◆ APP_ADC16_CORE

#define APP_ADC16_CORE   HPM_CORE0

◆ APP_ADC16_PMT_DMA_BUFF_LEN_IN_4BYTES

#define APP_ADC16_PMT_DMA_BUFF_LEN_IN_4BYTES   ADC_SOC_PMT_MAX_DMA_BUFF_LEN_IN_4BYTES

◆ APP_ADC16_PMT_IRQ_EVENT

#define APP_ADC16_PMT_IRQ_EVENT   adc16_event_trig_complete

◆ APP_ADC16_PMT_PWM

#define APP_ADC16_PMT_PWM   BOARD_APP_ADC16_PMT_PWM

◆ APP_ADC16_PMT_PWM_REFCH_A

#define APP_ADC16_PMT_PWM_REFCH_A   (8U)

◆ APP_ADC16_PMT_TRGM

#define APP_ADC16_PMT_TRGM   BOARD_APP_ADC16_PMT_TRGM

◆ APP_ADC16_PMT_TRGM_IN

#define APP_ADC16_PMT_TRGM_IN   BOARD_APP_ADC16_PMT_TRGM_IN

◆ APP_ADC16_PMT_TRGM_OUT

#define APP_ADC16_PMT_TRGM_OUT   BOARD_APP_ADC16_PMT_TRGM_OUT

◆ APP_ADC16_PMT_TRIG_CH

#define APP_ADC16_PMT_TRIG_CH   BOARD_APP_ADC16_PMT_TRIG_CH

◆ APP_ADC16_SEQ_DMA_BUFF_LEN_IN_4BYTES

#define APP_ADC16_SEQ_DMA_BUFF_LEN_IN_4BYTES   (1024U)

◆ APP_ADC16_SEQ_IRQ_EVENT

#define APP_ADC16_SEQ_IRQ_EVENT   adc16_event_seq_single_complete

◆ APP_ADC16_SEQ_START_POS

#define APP_ADC16_SEQ_START_POS   (0U)

◆ APP_SPI_BASE

#define APP_SPI_BASE   HPM_SPI3

◆ APP_SPI_CLK_NAME

#define APP_SPI_CLK_NAME   clock_spi3

◆ APP_SPI_IRQ

#define APP_SPI_IRQ   IRQn_SPI3

◆ APP_SPI_RX_DMA

#define APP_SPI_RX_DMA   HPM_DMA_SRC_SPI3_RX

◆ APP_SPI_SCLK_FREQ

#define APP_SPI_SCLK_FREQ   (20000000UL)

◆ APP_SPI_TX_DMA

#define APP_SPI_TX_DMA   HPM_DMA_SRC_SPI3_TX

◆ BOARD_APP_ADC16_PMT_PWM

#define BOARD_APP_ADC16_PMT_PWM   HPM_PWM0

◆ BOARD_APP_ADC16_PMT_TRGM

#define BOARD_APP_ADC16_PMT_TRGM   HPM_TRGM0

◆ BOARD_APP_ADC16_PMT_TRGM_IN

#define BOARD_APP_ADC16_PMT_TRGM_IN   HPM_TRGM0_INPUT_SRC_PWM0_CH8REF

◆ BOARD_APP_ADC16_PMT_TRGM_OUT

#define BOARD_APP_ADC16_PMT_TRGM_OUT   TRGM_TRGOCFG_ADCX_PTRGI0A

◆ BOARD_APP_SPI_ADDR_LEN_IN_BYTES

#define BOARD_APP_SPI_ADDR_LEN_IN_BYTES   (1U)

◆ BOARD_APP_SPI_DATA_LEN_IN_BITS

#define BOARD_APP_SPI_DATA_LEN_IN_BITS   (8U)

◆ PWM_FREQUENCY

#define PWM_FREQUENCY   (20000)

◆ PWM_RELOAD

#define PWM_RELOAD   (clock_get_frequency(clock_mot0) / PWM_FREQUENCY - 1) /*20K hz = 200 000 000/PWM_RELOAD */

◆ SPI_CS_ACTIVE_LEVEL

#define SPI_CS_ACTIVE_LEVEL   (0U)

◆ SPI_CS_GPIO_CTRL

#define SPI_CS_GPIO_CTRL   HPM_GPIO0

◆ SPI_CS_PIN

#define SPI_CS_PIN   IOC_PAD_PA00

Function Documentation

◆ board_init_spi_pins_test()

void board_init_spi_pins_test ( SPI_Type *  ptr)

◆ get_adc_conv_mode()

static uint8_t get_adc_conv_mode ( void  )
static

◆ hdma_spi_config()

void hdma_spi_config ( void  )

◆ isr_adc16()

void isr_adc16 ( void  )

◆ main()

int main ( void  )

◆ preemption_handler()

void preemption_handler ( void  )

◆ prepare_spi_sent_data()

void prepare_spi_sent_data ( void  )

◆ process_pmt_data()

hpm_stat_t process_pmt_data ( uint32_t *  buff,
int32_t  start_pos,
uint32_t  len 
)

Variable Documentation

◆ adc_descriptors1

dma_linked_descriptor_t adc_descriptors1[6]

◆ control_config

spi_control_config_t control_config = {0}

◆ pmt_buff

uint32_t pmt_buff[ADC_SOC_PMT_MAX_DMA_BUFF_LEN_IN_4BYTES]

◆ sendbuff

uint8_t sendbuff[2]

◆ seq_adc_channel

uint8_t seq_adc_channel[] = {BOARD_APP_ADC16_CH_1}

◆ seq_buff

uint32_t seq_buff[(1024U)]

◆ seq_full_complete_flag

__IO uint8_t seq_full_complete_flag

◆ spi_buf

uint8_t spi_buf[4]

◆ spi_transctrl

uint32_t spi_transctrl[5]
static

◆ test_buff3

uint8_t test_buff3[2]

◆ test_buff4

uint8_t test_buff4[2]

◆ trig_adc_channel

uint8_t trig_adc_channel[] = {BOARD_APP_ADC16_CH_1}

◆ trig_complete_flag

__IO uint8_t trig_complete_flag