mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
Parent:
188:bcfe06ba3d64
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 188:bcfe06ba3d64 1 /*
AnnaBridge 188:bcfe06ba3d64 2 * mbed Microcontroller Library
AnnaBridge 188:bcfe06ba3d64 3 * Copyright (c) 2017-2018 Future Electronics
AnnaBridge 189:f392fc9709a3 4 * Copyright (c) 2018-2019 Cypress Semiconductor Corporation
AnnaBridge 189:f392fc9709a3 5 * SPDX-License-Identifier: Apache-2.0
AnnaBridge 188:bcfe06ba3d64 6 *
AnnaBridge 188:bcfe06ba3d64 7 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 188:bcfe06ba3d64 8 * you may not use this file except in compliance with the License.
AnnaBridge 188:bcfe06ba3d64 9 * You may obtain a copy of the License at
AnnaBridge 188:bcfe06ba3d64 10 *
AnnaBridge 188:bcfe06ba3d64 11 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 188:bcfe06ba3d64 12 *
AnnaBridge 188:bcfe06ba3d64 13 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 188:bcfe06ba3d64 14 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 188:bcfe06ba3d64 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 188:bcfe06ba3d64 16 * See the License for the specific language governing permissions and
AnnaBridge 188:bcfe06ba3d64 17 * limitations under the License.
AnnaBridge 188:bcfe06ba3d64 18 */
AnnaBridge 188:bcfe06ba3d64 19
AnnaBridge 188:bcfe06ba3d64 20 #ifndef MBED_OBJECTS_H
AnnaBridge 188:bcfe06ba3d64 21 #define MBED_OBJECTS_H
AnnaBridge 188:bcfe06ba3d64 22
AnnaBridge 188:bcfe06ba3d64 23 #include "cmsis.h"
AnnaBridge 188:bcfe06ba3d64 24 #include "PeripheralNames.h"
AnnaBridge 188:bcfe06ba3d64 25 #include "PinNames.h"
AnnaBridge 188:bcfe06ba3d64 26 #include "PortNames.h"
AnnaBridge 188:bcfe06ba3d64 27
AnnaBridge 188:bcfe06ba3d64 28 #include "gpio_irq_api.h"
AnnaBridge 188:bcfe06ba3d64 29 #include "gpio_object.h"
AnnaBridge 189:f392fc9709a3 30 #include "cy_sysclk.h"
AnnaBridge 189:f392fc9709a3 31 #include "cy_syspm.h"
AnnaBridge 188:bcfe06ba3d64 32
AnnaBridge 188:bcfe06ba3d64 33 #ifdef __cplusplus
AnnaBridge 188:bcfe06ba3d64 34 extern "C" {
AnnaBridge 188:bcfe06ba3d64 35 #endif
AnnaBridge 188:bcfe06ba3d64 36
AnnaBridge 188:bcfe06ba3d64 37 #if DEVICE_INTERRUPTIN
AnnaBridge 188:bcfe06ba3d64 38 struct gpio_irq_s {
AnnaBridge 189:f392fc9709a3 39 GPIO_PRT_Type *port;
AnnaBridge 188:bcfe06ba3d64 40 uint32_t port_id;
AnnaBridge 188:bcfe06ba3d64 41 uint32_t pin;
AnnaBridge 188:bcfe06ba3d64 42 gpio_irq_event mode;
AnnaBridge 188:bcfe06ba3d64 43 gpio_irq_handler handler;
AnnaBridge 188:bcfe06ba3d64 44 uint32_t id_arg;
AnnaBridge 188:bcfe06ba3d64 45 #if defined (TARGET_MCU_PSOC6_M0)
AnnaBridge 188:bcfe06ba3d64 46 cy_en_intr_t cm0p_irq_src;
AnnaBridge 188:bcfe06ba3d64 47 #endif
AnnaBridge 188:bcfe06ba3d64 48 };
AnnaBridge 188:bcfe06ba3d64 49 #endif // DEVICE_INTERRUPTIN
AnnaBridge 188:bcfe06ba3d64 50
AnnaBridge 188:bcfe06ba3d64 51 struct port_s {
AnnaBridge 188:bcfe06ba3d64 52 GPIO_PRT_Type *port;
AnnaBridge 188:bcfe06ba3d64 53
AnnaBridge 188:bcfe06ba3d64 54 uint32_t port_id;
AnnaBridge 188:bcfe06ba3d64 55 uint32_t mask;
AnnaBridge 188:bcfe06ba3d64 56 PinDirection direction;
AnnaBridge 188:bcfe06ba3d64 57 PinMode mode;
AnnaBridge 188:bcfe06ba3d64 58 // __IO uint32_t *reg_in;
AnnaBridge 188:bcfe06ba3d64 59 // __IO uint32_t *reg_out;
AnnaBridge 188:bcfe06ba3d64 60 };
AnnaBridge 188:bcfe06ba3d64 61
AnnaBridge 188:bcfe06ba3d64 62 // struct analogin_s {
AnnaBridge 188:bcfe06ba3d64 63 // ADCName adc;
AnnaBridge 188:bcfe06ba3d64 64 // PinName pin;
AnnaBridge 188:bcfe06ba3d64 65 // uint32_t channel;
AnnaBridge 188:bcfe06ba3d64 66 // };
AnnaBridge 188:bcfe06ba3d64 67
AnnaBridge 188:bcfe06ba3d64 68 #if DEVICE_SERIAL
AnnaBridge 188:bcfe06ba3d64 69 #include "cy_scb_uart.h"
AnnaBridge 188:bcfe06ba3d64 70
AnnaBridge 188:bcfe06ba3d64 71 struct serial_s {
AnnaBridge 188:bcfe06ba3d64 72 CySCB_Type *base;
AnnaBridge 188:bcfe06ba3d64 73 uint32_t serial_id;
AnnaBridge 189:f392fc9709a3 74 bool already_reserved;
AnnaBridge 188:bcfe06ba3d64 75 PinName pin_rx;
AnnaBridge 188:bcfe06ba3d64 76 PinName pin_tx;
AnnaBridge 188:bcfe06ba3d64 77 PinName pin_cts;
AnnaBridge 188:bcfe06ba3d64 78 PinName pin_rts;
AnnaBridge 188:bcfe06ba3d64 79 en_clk_dst_t clock;
AnnaBridge 188:bcfe06ba3d64 80 cy_en_divider_types_t div_type;
AnnaBridge 188:bcfe06ba3d64 81 uint8_t div_num;
AnnaBridge 188:bcfe06ba3d64 82 uint8_t data_width;
AnnaBridge 188:bcfe06ba3d64 83 cy_en_scb_uart_stop_bits_t stop_bits;
AnnaBridge 188:bcfe06ba3d64 84 cy_en_scb_uart_parity_t parity;
AnnaBridge 188:bcfe06ba3d64 85 #if DEVICE_SERIAL_ASYNCH
AnnaBridge 188:bcfe06ba3d64 86 uint32_t rx_events;
AnnaBridge 188:bcfe06ba3d64 87 bool rx_pending;
AnnaBridge 188:bcfe06ba3d64 88 uint32_t tx_events;
AnnaBridge 188:bcfe06ba3d64 89 bool tx_pending;
AnnaBridge 188:bcfe06ba3d64 90 cy_israddress async_handler;
AnnaBridge 188:bcfe06ba3d64 91 #endif // DEVICE_SERIAL_ASYNCH
AnnaBridge 189:f392fc9709a3 92 #if DEVICE_SLEEP && DEVICE_LPTICKER
AnnaBridge 188:bcfe06ba3d64 93 cy_stc_syspm_callback_params_t pm_callback_params;
AnnaBridge 188:bcfe06ba3d64 94 cy_stc_syspm_callback_t pm_callback_handler;
AnnaBridge 188:bcfe06ba3d64 95 #endif
AnnaBridge 188:bcfe06ba3d64 96 };
AnnaBridge 188:bcfe06ba3d64 97 #endif // DEVICE_SERIAL
AnnaBridge 188:bcfe06ba3d64 98
AnnaBridge 188:bcfe06ba3d64 99 #if DEVICE_SPI
AnnaBridge 188:bcfe06ba3d64 100 #include "cy_scb_spi.h"
AnnaBridge 188:bcfe06ba3d64 101
AnnaBridge 188:bcfe06ba3d64 102 struct spi_s {
AnnaBridge 188:bcfe06ba3d64 103 CySCB_Type *base;
AnnaBridge 188:bcfe06ba3d64 104 uint32_t spi_id;
AnnaBridge 189:f392fc9709a3 105 bool already_reserved;
AnnaBridge 188:bcfe06ba3d64 106 PinName pin_miso;
AnnaBridge 188:bcfe06ba3d64 107 PinName pin_mosi;
AnnaBridge 188:bcfe06ba3d64 108 PinName pin_sclk;
AnnaBridge 188:bcfe06ba3d64 109 PinName pin_ssel;
AnnaBridge 188:bcfe06ba3d64 110 en_clk_dst_t clock;
AnnaBridge 188:bcfe06ba3d64 111 uint32_t div_num;
AnnaBridge 188:bcfe06ba3d64 112 cy_en_divider_types_t div_type;
AnnaBridge 188:bcfe06ba3d64 113 uint32_t clk_frequency;
AnnaBridge 188:bcfe06ba3d64 114 cy_en_scb_spi_mode_t ms_mode;
AnnaBridge 188:bcfe06ba3d64 115 cy_en_scb_spi_sclk_mode_t clk_mode;
AnnaBridge 188:bcfe06ba3d64 116 uint8_t data_bits;
AnnaBridge 188:bcfe06ba3d64 117 cy_stc_scb_spi_context_t context;
AnnaBridge 188:bcfe06ba3d64 118 #if DEVICE_SPI_ASYNCH
AnnaBridge 188:bcfe06ba3d64 119 IRQn_Type irqn;
AnnaBridge 188:bcfe06ba3d64 120 #if defined (TARGET_MCU_PSOC6_M0)
AnnaBridge 188:bcfe06ba3d64 121 cy_en_intr_t cm0p_irq_src;
AnnaBridge 188:bcfe06ba3d64 122 #endif
AnnaBridge 188:bcfe06ba3d64 123 uint16_t pending;
AnnaBridge 188:bcfe06ba3d64 124 uint16_t events;
AnnaBridge 188:bcfe06ba3d64 125 uint32_t handler;
AnnaBridge 188:bcfe06ba3d64 126 void *rx_buffer;
AnnaBridge 188:bcfe06ba3d64 127 uint32_t rx_buffer_size;
AnnaBridge 188:bcfe06ba3d64 128 void *tx_buffer;
AnnaBridge 188:bcfe06ba3d64 129 uint32_t tx_buffer_size;
AnnaBridge 188:bcfe06ba3d64 130 #endif // DEVICE_SPI_ASYNCH
AnnaBridge 189:f392fc9709a3 131 #if DEVICE_SLEEP && DEVICE_LPTICKER
AnnaBridge 188:bcfe06ba3d64 132 cy_stc_syspm_callback_params_t pm_callback_params;
AnnaBridge 188:bcfe06ba3d64 133 cy_stc_syspm_callback_t pm_callback_handler;
AnnaBridge 188:bcfe06ba3d64 134 #endif
AnnaBridge 188:bcfe06ba3d64 135 };
AnnaBridge 188:bcfe06ba3d64 136 #endif // DEVICE_SPI
AnnaBridge 188:bcfe06ba3d64 137
AnnaBridge 188:bcfe06ba3d64 138 #if DEVICE_I2C
AnnaBridge 188:bcfe06ba3d64 139 #include "cy_scb_i2c.h"
AnnaBridge 188:bcfe06ba3d64 140
AnnaBridge 188:bcfe06ba3d64 141 struct i2c_s {
AnnaBridge 188:bcfe06ba3d64 142 CySCB_Type *base;
AnnaBridge 188:bcfe06ba3d64 143 uint32_t i2c_id;
AnnaBridge 189:f392fc9709a3 144 bool already_reserved;
AnnaBridge 188:bcfe06ba3d64 145 PinName pin_sda;
AnnaBridge 188:bcfe06ba3d64 146 PinName pin_scl;
AnnaBridge 188:bcfe06ba3d64 147 en_clk_dst_t clock;
AnnaBridge 188:bcfe06ba3d64 148 uint32_t divider;
AnnaBridge 188:bcfe06ba3d64 149 uint32_t actual_speed;
AnnaBridge 188:bcfe06ba3d64 150 cy_en_scb_i2c_mode_t mode;
AnnaBridge 188:bcfe06ba3d64 151 uint32_t timeout;
AnnaBridge 188:bcfe06ba3d64 152 #if DEVICE_I2C_SLAVE
AnnaBridge 188:bcfe06ba3d64 153 uint16_t ADDRESS;
AnnaBridge 188:bcfe06ba3d64 154 uint16_t is_setAddress;
AnnaBridge 188:bcfe06ba3d64 155 #endif
AnnaBridge 188:bcfe06ba3d64 156 cy_stc_scb_i2c_context_t context;
AnnaBridge 188:bcfe06ba3d64 157 #if DEVICE_I2C_ASYNCH
AnnaBridge 188:bcfe06ba3d64 158 cy_stc_scb_i2c_master_xfer_config_t rx_config;
AnnaBridge 188:bcfe06ba3d64 159 cy_stc_scb_i2c_master_xfer_config_t tx_config;
AnnaBridge 188:bcfe06ba3d64 160 IRQn_Type irqn;
AnnaBridge 188:bcfe06ba3d64 161 #if defined (TARGET_MCU_PSOC6_M0)
AnnaBridge 188:bcfe06ba3d64 162 cy_en_intr_t cm0p_irq_src;
AnnaBridge 188:bcfe06ba3d64 163 #endif
AnnaBridge 188:bcfe06ba3d64 164 uint16_t pending;
AnnaBridge 188:bcfe06ba3d64 165 uint16_t events;
AnnaBridge 188:bcfe06ba3d64 166 uint32_t handler;
AnnaBridge 188:bcfe06ba3d64 167 #endif // DEVICE_I2C_ASYNCH
AnnaBridge 189:f392fc9709a3 168 #if DEVICE_SLEEP && DEVICE_LPTICKER
AnnaBridge 188:bcfe06ba3d64 169 cy_stc_syspm_callback_params_t pm_callback_params;
AnnaBridge 188:bcfe06ba3d64 170 cy_stc_syspm_callback_t pm_callback_handler;
AnnaBridge 188:bcfe06ba3d64 171 #endif
AnnaBridge 188:bcfe06ba3d64 172 };
AnnaBridge 188:bcfe06ba3d64 173 #endif // DEVICE_I2C
AnnaBridge 188:bcfe06ba3d64 174
AnnaBridge 188:bcfe06ba3d64 175 #if DEVICE_PWMOUT
AnnaBridge 188:bcfe06ba3d64 176 #include "cy_tcpwm.h"
AnnaBridge 188:bcfe06ba3d64 177
AnnaBridge 188:bcfe06ba3d64 178 struct pwmout_s {
AnnaBridge 189:f392fc9709a3 179 TCPWM_Type *base;
AnnaBridge 189:f392fc9709a3 180 PinName pin;
AnnaBridge 189:f392fc9709a3 181 uint32_t counter_id;
AnnaBridge 189:f392fc9709a3 182 en_clk_dst_t clock;
AnnaBridge 189:f392fc9709a3 183 uint32_t period;
AnnaBridge 189:f392fc9709a3 184 uint32_t pulse_width;
AnnaBridge 189:f392fc9709a3 185 uint32_t prescaler;
AnnaBridge 189:f392fc9709a3 186 #if DEVICE_SLEEP && DEVICE_LPTICKER
AnnaBridge 189:f392fc9709a3 187 cy_stc_syspm_callback_params_t pm_callback_params;
AnnaBridge 189:f392fc9709a3 188 cy_stc_syspm_callback_t pm_callback_handler;
AnnaBridge 188:bcfe06ba3d64 189 #endif
AnnaBridge 188:bcfe06ba3d64 190 };
AnnaBridge 188:bcfe06ba3d64 191 #endif // DEVICE_PWMOUT
AnnaBridge 188:bcfe06ba3d64 192
AnnaBridge 189:f392fc9709a3 193 #if DEVICE_ANALOGIN
AnnaBridge 188:bcfe06ba3d64 194 #include "cy_sar.h"
AnnaBridge 188:bcfe06ba3d64 195
AnnaBridge 188:bcfe06ba3d64 196 struct analogin_s {
AnnaBridge 188:bcfe06ba3d64 197 SAR_Type *base;
AnnaBridge 188:bcfe06ba3d64 198 PinName pin;
AnnaBridge 188:bcfe06ba3d64 199 uint32_t channel_mask;
AnnaBridge 189:f392fc9709a3 200 en_clk_dst_t clock;
AnnaBridge 188:bcfe06ba3d64 201 };
AnnaBridge 188:bcfe06ba3d64 202 #endif // DEVICE_ANALOGIN
AnnaBridge 188:bcfe06ba3d64 203
AnnaBridge 189:f392fc9709a3 204 #if DEVICE_ANALOGOUT
AnnaBridge 188:bcfe06ba3d64 205 #include "cy_ctdac.h"
AnnaBridge 188:bcfe06ba3d64 206
AnnaBridge 188:bcfe06ba3d64 207 struct dac_s {
AnnaBridge 188:bcfe06ba3d64 208 CTDAC_Type *base;
AnnaBridge 188:bcfe06ba3d64 209 PinName pin;
AnnaBridge 189:f392fc9709a3 210 en_clk_dst_t clock;
AnnaBridge 188:bcfe06ba3d64 211 };
AnnaBridge 188:bcfe06ba3d64 212 #endif // DEVICE_ANALOGOUT
AnnaBridge 188:bcfe06ba3d64 213
AnnaBridge 189:f392fc9709a3 214 #if DEVICE_FLASH
AnnaBridge 188:bcfe06ba3d64 215 struct flash_s {
AnnaBridge 188:bcfe06ba3d64 216 /* nothing to be stored for now */
AnnaBridge 188:bcfe06ba3d64 217 void *dummy;
AnnaBridge 188:bcfe06ba3d64 218 };
AnnaBridge 188:bcfe06ba3d64 219 #endif // DEVICE_FLASH
AnnaBridge 188:bcfe06ba3d64 220
AnnaBridge 188:bcfe06ba3d64 221 #if DEVICE_TRNG
AnnaBridge 188:bcfe06ba3d64 222 struct trng_s {
AnnaBridge 188:bcfe06ba3d64 223 /* nothing to be stored for now */
AnnaBridge 188:bcfe06ba3d64 224 void *dummy;
AnnaBridge 188:bcfe06ba3d64 225 };
AnnaBridge 188:bcfe06ba3d64 226 #endif // DEVICE_TRNG
AnnaBridge 188:bcfe06ba3d64 227
AnnaBridge 188:bcfe06ba3d64 228 #ifdef __cplusplus
AnnaBridge 188:bcfe06ba3d64 229 }
AnnaBridge 188:bcfe06ba3d64 230 #endif
AnnaBridge 188:bcfe06ba3d64 231
AnnaBridge 188:bcfe06ba3d64 232 #endif