1 /*
2  *  Change Logs:
3  *  Date            Author          Notes
4  *  2021-04-20      liuhy          the first version
5  *
6  * Copyright (C) 2021 Shanghai Eastsoft Microelectronics Co., Ltd. All rights reserved.
7  *
8  * SPDX-License-Identifier: Apache-2.0
9  *
10  * Licensed under the Apache License, Version 2.0 (the License); you may
11  * not use this file except in compliance with the License.
12  * You may obtain a copy of the License at
13  *
14  * www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing, software
17  * distributed under the License is distributed on an AS IS BASIS, WITHOUT
18  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  * See the License for the specific language governing permissions and
20  * limitations under the License.
21  *
22  */
23 
24 #ifndef __ES_CONF_INFO_SPI_H__
25 #define __ES_CONF_INFO_SPI_H__
26 
27 #include "es_conf_info_map.h"
28 #include <ald_spi.h>
29 #include <ald_gpio.h>
30 #include <ald_cmu.h>
31 
32 /* SPI 配置 */
33 
34 #define SPI_BUS_CONFIG(_CONF_,_I_)       do{_CONF_.mode = 0U;                                         \
35                                             _CONF_.mode |= ( ES_SPI##_I_##_MASTER_SLAVE |             \
36                                                              ES_SPI##_I_##_WIRE_3_4     |             \
37                                                              ES_SPI##_I_##_CPHA_1_2     |             \
38                                                              ES_SPI##_I_##_CPOL_H_L     |             \
39                                                              ES_SPI##_I_##_CS           |             \
40                                                              ES_SPI##_I_##_M_L_SB          );         \
41                                             _CONF_.data_width = ES_SPI##_I_##_DATA_W;                 \
42                                             _CONF_.max_hz = ES_SPI##_I_##_MAX_HZ;                     \
43                                             }while(0)
44 
45 
46 //    spi_config.mode &= ~RT_SPI_SLAVE; /* 主机模式 */
47 //    spi_config.mode &= ~RT_SPI_3WIRE; /* 4线,双向传输 */
48 //    spi_config.mode |= RT_SPI_CPHA;   /* 第二边沿采样 */
49 //    spi_config.mode |= RT_SPI_CPOL;   /* 空闲高电平 */
50 //    spi_config.mode |= RT_SPI_NO_CS;  /* 禁用软件从机选择管理 */
51 //    spi_config.mode |= RT_SPI_MSB;    /* 高位在前 */
52 //    spi_config.data_width = 8;        /* 数据长度:8 */
53 //    spi_config.max_hz = 2000000;      /* 最快时钟频率 */
54 
55 #define ES_C_SPI_CLK_POL_HIGH            RT_SPI_CPOL
56 #define ES_C_SPI_CLK_POL_LOW             !RT_SPI_CPOL
57 
58 #define ES_C_SPI_CLK_PHA_FIRST            !RT_SPI_CPHA
59 #define ES_C_SPI_CLK_PHA_SECOND           RT_SPI_CPHA
60 
61 #define ES_C_SPI_MSB                      RT_SPI_MSB
62 #define ES_C_SPI_LSB                      RT_SPI_LSB
63 
64 #define ES_C_SPI_CS_LOW_LEVEL             0
65 #define ES_C_SPI_CS_HIGH_LEVEL            1
66 
67 /* codes_main */
68 
69 
70 #ifndef  ES_DEVICE_NAME_SPI0_BUS
71 #define  ES_DEVICE_NAME_SPI0_BUS     "spi0"
72 #endif
73 #ifndef  ES_DEVICE_NAME_SPI0_DEV0
74 #define  ES_DEVICE_NAME_SPI0_DEV0     "spi00"
75 #endif
76 
77 #ifndef  ES_DEVICE_NAME_SPI1_BUS
78 #define  ES_DEVICE_NAME_SPI1_BUS     "spi1"
79 #endif
80 #ifndef  ES_DEVICE_NAME_SPI1_DEV0
81 #define  ES_DEVICE_NAME_SPI1_DEV0     "spi10"
82 #endif
83 
84 #ifndef  ES_DEVICE_NAME_SPI2_BUS
85 #define  ES_DEVICE_NAME_SPI2_BUS     "spi2"
86 #endif
87 #ifndef  ES_DEVICE_NAME_SPI2_DEV0
88 #define  ES_DEVICE_NAME_SPI2_DEV0     "spi20"
89 #endif
90 
91 
92 #define ES_SPI_CS_LEVEL               ES_C_SPI_CS_LOW_LEVEL
93 
94 #ifndef   ES_SPI0_CPHA_1_2
95 #define   ES_SPI0_CPHA_1_2               ES_C_SPI_CLK_PHA_SECOND
96 #endif
97 #ifndef   ES_SPI0_CPOL_H_L
98 #define   ES_SPI0_CPOL_H_L               ES_C_SPI_CLK_POL_HIGH
99 #endif
100 #ifndef   ES_SPI0_M_L_SB
101 #define   ES_SPI0_M_L_SB                 RT_SPI_MSB
102 #endif
103 #ifndef   ES_SPI0_MAX_HZ
104 #define   ES_SPI0_MAX_HZ                 2000000
105 #endif
106 #ifndef   ES_SPI0_NSS_PIN
107 #define ES_SPI0_NSS_PIN 0xFFFFFFFF
108 #endif
109 
110 #ifndef   ES_SPI1_CPHA_1_2
111 #define   ES_SPI1_CPHA_1_2               ES_C_SPI_CLK_PHA_SECOND
112 #endif
113 #ifndef   ES_SPI1_CPOL_H_L
114 #define   ES_SPI1_CPOL_H_L               ES_C_SPI_CLK_POL_HIGH
115 #endif
116 #ifndef   ES_SPI1_M_L_SB
117 #define   ES_SPI1_M_L_SB                 RT_SPI_MSB
118 #endif
119 #ifndef   ES_SPI1_MAX_HZ
120 #define   ES_SPI1_MAX_HZ                 2000000
121 #endif
122 #ifndef   ES_SPI1_NSS_PIN
123 #define ES_SPI1_NSS_PIN 0xFFFFFFFF
124 #endif
125 
126 #ifndef   ES_SPI2_CPHA_1_2
127 #define   ES_SPI2_CPHA_1_2               ES_C_SPI_CLK_PHA_SECOND
128 #endif
129 #ifndef   ES_SPI2_CPOL_H_L
130 #define   ES_SPI2_CPOL_H_L               ES_C_SPI_CLK_POL_HIGH
131 #endif
132 #ifndef   ES_SPI2_M_L_SB
133 #define   ES_SPI2_M_L_SB                 RT_SPI_MSB
134 #endif
135 #ifndef   ES_SPI2_MAX_HZ
136 #define   ES_SPI2_MAX_HZ                 2000000
137 #endif
138 #ifndef   ES_SPI2_NSS_PIN
139 #define ES_SPI2_NSS_PIN 0xFFFFFFFF
140 #endif
141 
142 
143 #define   ES_SPI0_MASTER_SLAVE           !RT_SPI_SLAVE
144 #define   ES_SPI0_WIRE_3_4               !RT_SPI_3WIRE
145 #define   ES_SPI0_CS                     RT_SPI_NO_CS
146 #define   ES_SPI0_DATA_W                 8
147 
148 #define   ES_SPI1_MASTER_SLAVE           !RT_SPI_SLAVE
149 #define   ES_SPI1_WIRE_3_4               !RT_SPI_3WIRE
150 #define   ES_SPI1_CS                     RT_SPI_NO_CS
151 #define   ES_SPI1_DATA_W                 8
152 
153 #define   ES_SPI2_MASTER_SLAVE           !RT_SPI_SLAVE
154 #define   ES_SPI2_WIRE_3_4               !RT_SPI_3WIRE
155 #define   ES_SPI2_CS                     RT_SPI_NO_CS
156 #define   ES_SPI2_DATA_W                 8
157 
158 
159 #endif
160