MAX32665 SDK Documentation  0.2
Software Development Kit Overview and API Documentation
spixf.h
1 
6 /* *****************************************************************************
7  * Copyright (C) 2015 Maxim Integrated Products, Inc., All Rights Reserved.
8  *
9  * Permission is hereby granted, free of charge, to any person obtaining a
10  * copy of this software and associated documentation files (the "Software"),
11  * to deal in the Software without restriction, including without limitation
12  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13  * and/or sell copies of the Software, and to permit persons to whom the
14  * Software is furnished to do so, subject to the following conditions:
15  *
16  * The above copyright notice and this permission notice shall be included
17  * in all copies or substantial portions of the Software.
18  *
19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22  * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
23  * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
24  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25  * OTHER DEALINGS IN THE SOFTWARE.
26  *
27  * Except as contained in this notice, the name of Maxim Integrated
28  * Products, Inc. shall not be used except as stated in the Maxim Integrated
29  * Products, Inc. Branding Policy.
30  *
31  * The mere transfer of this software does not imply any licenses
32  * of trade secrets, proprietary technology, copyrights, patents,
33  * trademarks, maskwork rights, or any other form of intellectual
34  * property whatsoever. Maxim Integrated Products, Inc. retains all
35  * ownership rights.
36  *
37  * $Date: 2018-10-31 10:32:51 -0500 (Wed, 31 Oct 2018) $
38  * $Revision: 38826 $
39  *
40  **************************************************************************** */
41 
42 
43 #include "mxc_config.h"
44 #include "mxc_sys.h"
45 #include "spixf_regs.h"
46 
47 #ifndef _SPIXF_H_
48 #define _SPIXF_H_
49 
50 #ifdef __cplusplus
51 extern "C" {
52 #endif
53 
60 /***** Definitions *****/
61 
66 typedef enum {
71 
73 typedef enum {
74  SSPOL_ACTIVE_HI = 0,
75  SSPOL_ACTIVE_LO = MXC_F_SPIXF_CFG_SSPOL,
77 
79 typedef enum {
80  SYS_CLOCKS_0 = MXC_S_SPIXF_CFG_SSACT_OFF,
85 
87 typedef enum {
93 
98 typedef enum {
100  SINGLE_SDIO_CMD = MXC_S_SPIXF_FETCH_CTRL_CMD_WIDTH_SINGLE,
105 
107 typedef enum {
108  SINGLE_SDIO_ADDR = MXC_S_SPIXF_FETCH_CTRL_ADDR_WIDTH_SINGLE,
113 
115 typedef enum {
116  SINGLE_SDIO_DATA = MXC_S_SPIXF_FETCH_CTRL_DATA_WIDTH_SINGLE,
121 
123 typedef enum {
124  THREE_BYTE_ADDR_MODE = 0,
125  FOUR_BYTE_ADDR_MODE = MXC_F_SPIXF_FETCH_CTRL_FOUR_BYTE_ADDR,
127 
132 typedef enum {
134  SND_RDCMD_EVRYTIME = 0,
135  SND_RDCMD_ONLYONCE = MXC_F_SPIXF_MODE_CTRL_NO_CMD,
137 
142 typedef enum {
144  DISABLE_SCLK_FB = 0,
145  ENABLE_SCLK_FB = MXC_F_SPIXF_SCLK_FB_CTRL_FB_EN,
147 
149 typedef enum {
150  DISABLE_FBCLK_INV = 0,
151  ENABLE_FBCLK_INV = MXC_F_SPIXF_SCLK_FB_CTRL_INVERT_EN,
153 
158 typedef enum {
160  LO_DRIVE_STRENGTH_SCLK = 0,
161  HI_DRIVE_STRENGTH_SCLK = MXC_F_SPIXF_IO_CTRL_SCLK_DS,
163 
165 typedef enum {
166  LO_DRIVE_STRENGTH_SS = 0,
167  HI_DRIVE_STRENGTH_SS = MXC_F_SPIXF_IO_CTRL_SS_DS,
169 
171 typedef enum {
172  LO_DRIVE_STRENGTH_SDIO = 0,
173  HI_DRIVE_STRENGTH_SDIO = MXC_F_SPIXF_IO_CTRL_SDIO_DS,
175 
177 typedef enum {
182 
183 
185 typedef struct {
186  spixf_cfg_mode_t mode; //cfg
187  spixf_cfg_sspol_t sspol;
188  uint32_t baud;
189  spixf_cfg_ssact_t ssact;
190  spixf_cfg_ssiact_t ssiact;
191 
192  uint8_t cmdval; //fetch_cntl
193  spixf_fctl_cmdwth_t cmdwth;
194  spixf_fctl_adrwth_t adrwth;
195  spixf_fctl_datwth_t datwth;
196  spixf_fctl_addr4_t addr4;
197 
198  uint8_t mdclk; //mode_ctrl
199  spixf_mctl_nocmd_t nocmd;
200 
201  uint16_t mddata; //mod_data
202  uint16_t mdoe;
203 
204  spixf_fctrl_fbmd_t fbmd; //fb_ctrl
205  spixf_fctrl_finv_t finv;
206 
207  uint32_t busidle;
208 } spixf_req_t;
209 
210 
211 
212 /***** Globals *****/
213 
214 /***** Function Prototypes *****/
215 
222 void SPIXF_setup(mxc_spixf_regs_t *spixf, spixf_req_t *req);
223 
224 
232 void SPIXF_ioctrl(spixf_ioctl_sclk_t sclk_ds, spixf_ioctl_ss_t ss_ds,
233  spixf_ioctl_sdio_t sdio_ds, spixf_ioctl_pup_t pupdctrl);
234 
235 #ifdef __cplusplus
236 }
237 #endif
238 
240 #endif /* _SPIXF_H_ */
1 system clocks
Definition: spixf.h:88
#define MXC_S_SPIXF_FETCH_CTRL_DATA_WIDTH_INVALID
FETCH_CTRL_DATA_WIDTH_INVALID Setting.
Definition: spixf_regs.h:204
void SPIXF_ioctrl(spixf_ioctl_sclk_t sclk_ds, spixf_ioctl_ss_t ss_ds, spixf_ioctl_sdio_t sdio_ds, spixf_ioctl_pup_t pupdctrl)
Setup Drive Strength on the I/O pins.
#define MXC_S_SPIXF_CFG_MODE_SCLK_HI_SAMPLE_RISING
CFG_MODE_SCLK_HI_SAMPLE_RISING Setting.
Definition: spixf_regs.h:124
#define MXC_S_SPIXF_FETCH_CTRL_CMD_WIDTH_INVALID
FETCH_CTRL_CMD_WIDTH_INVALID Setting.
Definition: spixf_regs.h:182
#define MXC_S_SPIXF_FETCH_CTRL_ADDR_WIDTH_DUAL_IO
FETCH_CTRL_ADDR_WIDTH_DUAL_IO Setting.
Definition: spixf_regs.h:189
spixf_fctl_cmdwth_t
SPIXF_FETCH_CTRL.
Definition: spixf.h:99
#define MXC_F_SPIXF_SCLK_FB_CTRL_FB_EN
SCLK_FB_CTRL_FB_EN Mask.
Definition: spixf_regs.h:246
#define MXC_S_SPIXF_IO_CTRL_PU_PD_CTRL_TRI_STATE
IO_CTRL_PU_PD_CTRL_TRI_STATE Setting.
Definition: spixf_regs.h:277
spixf_fctrl_fbmd_t
SPIXF_FB_CTRL.
Definition: spixf.h:143
SPIXF Transaction request.
Definition: spixf.h:185
spixf_fctl_adrwth_t
Addr Width, # of data I/O used to send addr and mode/dummy clks.
Definition: spixf.h:107
#define MXC_S_SPIXF_CFG_SSACT_FOR_2_MOD_CLK
CFG_SSACT_FOR_2_MOD_CLK Setting.
Definition: spixf_regs.h:145
spixf_cfg_ssiact_t
Slave select Inactive timing.
Definition: spixf.h:87
#define MXC_F_SPIXF_SCLK_FB_CTRL_INVERT_EN
SCLK_FB_CTRL_INVERT_EN Mask.
Definition: spixf_regs.h:249
spixf_ioctl_sclk_t
SPIXF_IOCTRL.
Definition: spixf.h:159
void SPIXF_setup(mxc_spixf_regs_t *spixf, spixf_req_t *req)
Setup SPIXF for Execute in Place.
#define MXC_S_SPIXF_IO_CTRL_PU_PD_CTRL_PULL_DOWN
IO_CTRL_PU_PD_CTRL_PULL_DOWN Setting.
Definition: spixf_regs.h:281
#define MXC_F_SPIXF_FETCH_CTRL_FOUR_BYTE_ADDR
FETCH_CTRL_FOUR_BYTE_ADDR Mask.
Definition: spixf_regs.h:207
spixf_ioctl_pup_t
IO pullup/pulldown Control.
Definition: spixf.h:177
#define MXC_S_SPIXF_FETCH_CTRL_DATA_WIDTH_SINGLE
FETCH_CTRL_DATA_WIDTH_SINGLE Setting.
Definition: spixf_regs.h:198
#define MXC_S_SPIXF_CFG_SSIACT_FOR_3_MOD_CLK
CFG_SSIACT_FOR_3_MOD_CLK Setting.
Definition: spixf_regs.h:156
#define MXC_F_SPIXF_IO_CTRL_SCLK_DS
IO_CTRL_SCLK_DS Mask.
Definition: spixf_regs.h:266
#define MXC_S_SPIXF_FETCH_CTRL_CMD_WIDTH_DUAL_IO
FETCH_CTRL_CMD_WIDTH_DUAL_IO Setting.
Definition: spixf_regs.h:178
#define MXC_S_SPIXF_FETCH_CTRL_CMD_WIDTH_SINGLE
FETCH_CTRL_CMD_WIDTH_SINGLE Setting.
Definition: spixf_regs.h:176
#define MXC_S_SPIXF_FETCH_CTRL_CMD_WIDTH_QUAD_IO
FETCH_CTRL_CMD_WIDTH_QUAD_IO Setting.
Definition: spixf_regs.h:180
#define MXC_S_SPIXF_FETCH_CTRL_DATA_WIDTH_DUAL_IO
FETCH_CTRL_DATA_WIDTH_DUAL_IO Setting.
Definition: spixf_regs.h:200
#define MXC_F_SPIXF_CFG_SSPOL
CFG_SSPOL Mask.
Definition: spixf_regs.h:129
#define MXC_F_SPIXF_MODE_CTRL_NO_CMD
MODE_CTRL_NO_CMD Mask.
Definition: spixf_regs.h:221
#define MXC_S_SPIXF_IO_CTRL_PU_PD_CTRL_PULL_UP
IO_CTRL_PU_PD_CTRL_PULL_UP Setting.
Definition: spixf_regs.h:279
spixf_cfg_sspol_t
Polarity of slave select.
Definition: spixf.h:73
#define MXC_S_SPIXF_FETCH_CTRL_ADDR_WIDTH_INVALID
FETCH_CTRL_ADDR_WIDTH_INVALID Setting.
Definition: spixf_regs.h:193
spixf_cfg_ssact_t
Slave select active timing.
Definition: spixf.h:79
#define MXC_F_SPIXF_IO_CTRL_SDIO_DS
IO_CTRL_SDIO_DS Mask.
Definition: spixf_regs.h:272
3 system clocks
Definition: spixf.h:89
#define MXC_S_SPIXF_FETCH_CTRL_ADDR_WIDTH_SINGLE
FETCH_CTRL_ADDR_WIDTH_SINGLE Setting.
Definition: spixf_regs.h:187
spixf_cfg_mode_t
SPIXF_CFG.
Definition: spixf.h:67
Structure type to access the SPIXF Registers.
Definition: spixf_regs.h:88
spixf_mctl_nocmd_t
SPIXF_MODE_CTRL.
Definition: spixf.h:133
spixf_fctl_datwth_t
Data Width, # of data I/O used to rcv data.
Definition: spixf.h:115
#define MXC_S_SPIXF_CFG_SSIACT_FOR_5_MOD_CLK
CFG_SSIACT_FOR_5_MOD_CLK Setting.
Definition: spixf_regs.h:158
#define MXC_S_SPIXF_CFG_MODE_SCLK_LO_SAMPLE_FAILLING
CFG_MODE_SCLK_LO_SAMPLE_FAILLING Setting.
Definition: spixf_regs.h:126
spixf_fctl_addr4_t
3 or 4 byte address mode flash
Definition: spixf.h:123
#define MXC_S_SPIXF_FETCH_CTRL_ADDR_WIDTH_QUAD_IO
FETCH_CTRL_ADDR_WIDTH_QUAD_IO Setting.
Definition: spixf_regs.h:191
#define MXC_S_SPIXF_FETCH_CTRL_DATA_WIDTH_QUAD_IO
FETCH_CTRL_DATA_WIDTH_QUAD_IO Setting.
Definition: spixf_regs.h:202
spixf_ioctl_ss_t
Slave Sel. Drive Strength.
Definition: spixf.h:165
#define MXC_S_SPIXF_CFG_SSACT_FOR_4_MOD_CLK
CFG_SSACT_FOR_4_MOD_CLK Setting.
Definition: spixf_regs.h:147
9 system clocks
Definition: spixf.h:91
spixf_fctrl_finv_t
Feedback clock invert.
Definition: spixf.h:149
#define MXC_S_SPIXF_CFG_SSACT_OFF
CFG_SSACT_OFF Setting.
Definition: spixf_regs.h:143
#define MXC_F_SPIXF_IO_CTRL_SS_DS
IO_CTRL_SS_DS Mask.
Definition: spixf_regs.h:269
5 system clocks
Definition: spixf.h:90
#define MXC_S_SPIXF_CFG_SSACT_FOR_8_MOD_CLK
CFG_SSACT_FOR_8_MOD_CLK Setting.
Definition: spixf_regs.h:149
#define MXC_S_SPIXF_CFG_SSIACT_FOR_1_MOD_CLK
CFG_SSIACT_FOR_1_MOD_CLK Setting.
Definition: spixf_regs.h:154
spixf_ioctl_sdio_t
SDIO Drive Strength.
Definition: spixf.h:171
#define MXC_S_SPIXF_CFG_SSIACT_FOR_9_MOD_CLK
CFG_SSIACT_FOR_9_MOD_CLK Setting.
Definition: spixf_regs.h:160