libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
ch32_spi_def.hpp
1#pragma once
2
3#include "libxr.hpp"
4#include DEF2STR(LIBXR_CH32_CONFIG_FILE)
5
9typedef enum
10{
11#if defined(SPI1)
12 CH32_SPI1,
13#endif
14#if defined(SPI2)
15 CH32_SPI2,
16#endif
17#if defined(SPI3)
18 CH32_SPI3,
19#endif
20 CH32_SPI_NUMBER,
21 CH32_SPI_ID_ERROR
22} ch32_spi_id_t;
23
24static constexpr uint8_t CH32_SPI_APB_MAP[] = {
25#if defined(SPI1)
26 2,
27#endif
28#if defined(SPI2)
29 1,
30#endif
31#if defined(SPI3)
32 1,
33#endif
34};
35
36static constexpr uint32_t CH32_SPI_RCC_PERIPH_MAP[] = {
37#if defined(SPI1)
38 RCC_APB2Periph_SPI1,
39#endif
40#if defined(SPI2)
41 RCC_APB1Periph_SPI2,
42#endif
43#if defined(SPI3)
44 RCC_APB1Periph_SPI3,
45#endif
46};
47
48static constexpr uint32_t CH32_SPI_RCC_PERIPH_MAP_DMA[] = {
49#if defined(SPI1)
50 RCC_AHBPeriph_DMA1,
51#endif
52#if defined(SPI2)
53 RCC_AHBPeriph_DMA1,
54#endif
55#if defined(SPI3)
56 RCC_AHBPeriph_DMA2,
57#endif
58};
59
60static constexpr uint32_t CH32_SPI_TX_DMA_IT_MAP[] = {
61#if defined(SPI1)
62 DMA1_IT_TC3,
63#endif
64#if defined(SPI2)
65 DMA1_IT_TC5,
66#endif
67#if defined(SPI3)
68 DMA2_IT_TC2,
69#endif
70};
71
72static constexpr uint32_t CH32_SPI_RX_DMA_IT_MAP[] = {
73#if defined(SPI1)
74 DMA1_IT_TC2,
75#endif
76#if defined(SPI2)
77 DMA1_IT_TC4,
78#endif
79#if defined(SPI3)
80 DMA2_IT_TC1,
81#endif
82};
83
84static DMA_Channel_TypeDef* const CH32_SPI_TX_DMA_CHANNEL_MAP[] = {
85#if defined(SPI1)
86 DMA1_Channel3,
87#endif
88#if defined(SPI2)
89 DMA1_Channel5,
90#endif
91#if defined(SPI3)
92 DMA2_Channel2,
93#endif
94};
95
96static DMA_Channel_TypeDef* const CH32_SPI_RX_DMA_CHANNEL_MAP[] = {
97#if defined(SPI1)
98 DMA1_Channel2,
99#endif
100#if defined(SPI2)
101 DMA1_Channel4,
102#endif
103#if defined(SPI3)
104 DMA2_Channel1,
105#endif
106};
107
108static constexpr IRQn_Type CH32_SPI_IRQ_MAP[] = {
109#if defined(SPI1)
110 SPI1_IRQn,
111#endif
112#if defined(SPI2)
113 SPI2_IRQn,
114#endif
115#if defined(SPI3)
116 SPI3_IRQn,
117#endif
118};
119
120ch32_spi_id_t ch32_spi_get_id(SPI_TypeDef* addr);
121SPI_TypeDef* ch32_spi_get_instance_id(ch32_spi_id_t);