mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
Diff: targets/TARGET_Cypress/TARGET_PSOC6/objects.h
- Revision:
- 188:bcfe06ba3d64
- Child:
- 189:f392fc9709a3
diff -r 0387e8f68319 -r bcfe06ba3d64 targets/TARGET_Cypress/TARGET_PSOC6/objects.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/targets/TARGET_Cypress/TARGET_PSOC6/objects.h Thu Nov 08 11:46:34 2018 +0000 @@ -0,0 +1,227 @@ +/* + * mbed Microcontroller Library + * Copyright (c) 2017-2018 Future Electronics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBED_OBJECTS_H +#define MBED_OBJECTS_H + +#include "cmsis.h" +#include "PeripheralNames.h" +#include "PinNames.h" +#include "PortNames.h" + +#include "gpio_irq_api.h" +#include "gpio_object.h" +#include "drivers/peripheral/sysclk/cy_sysclk.h" +#include "drivers/peripheral/syspm/cy_syspm.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#if DEVICE_INTERRUPTIN +struct gpio_irq_s { + GPIO_PRT_Type* port; + uint32_t port_id; + uint32_t pin; + gpio_irq_event mode; + gpio_irq_handler handler; + uint32_t id_arg; +#if defined (TARGET_MCU_PSOC6_M0) + cy_en_intr_t cm0p_irq_src; +#endif +}; +#endif // DEVICE_INTERRUPTIN + +struct port_s { + GPIO_PRT_Type *port; + + uint32_t port_id; + uint32_t mask; + PinDirection direction; + PinMode mode; +// __IO uint32_t *reg_in; +// __IO uint32_t *reg_out; +}; + +// struct analogin_s { +// ADCName adc; +// PinName pin; +// uint32_t channel; +// }; + +#if DEVICE_SERIAL +#include "cy_scb_uart.h" + +struct serial_s { + CySCB_Type *base; + uint32_t serial_id; + PinName pin_rx; + PinName pin_tx; + PinName pin_cts; + PinName pin_rts; + en_clk_dst_t clock; + cy_en_divider_types_t div_type; + uint8_t div_num; + uint8_t data_width; + cy_en_scb_uart_stop_bits_t stop_bits; + cy_en_scb_uart_parity_t parity; +#if DEVICE_SERIAL_ASYNCH + uint32_t rx_events; + bool rx_pending; + uint32_t tx_events; + bool tx_pending; + cy_israddress async_handler; +#endif // DEVICE_SERIAL_ASYNCH +#if DEVICE_SLEEP && DEVICE_LOWPOWERTIMER + cy_stc_syspm_callback_params_t pm_callback_params; + cy_stc_syspm_callback_t pm_callback_handler; +#endif +}; +#endif // DEVICE_SERIAL + +#if DEVICE_SPI +#include "cy_scb_spi.h" + +struct spi_s { + CySCB_Type *base; + uint32_t spi_id; + PinName pin_miso; + PinName pin_mosi; + PinName pin_sclk; + PinName pin_ssel; + en_clk_dst_t clock; + uint32_t div_num; + cy_en_divider_types_t div_type; + uint32_t clk_frequency; + cy_en_scb_spi_mode_t ms_mode; + cy_en_scb_spi_sclk_mode_t clk_mode; + uint8_t data_bits; + cy_stc_scb_spi_context_t context; +#if DEVICE_SPI_ASYNCH + IRQn_Type irqn; +#if defined (TARGET_MCU_PSOC6_M0) + cy_en_intr_t cm0p_irq_src; +#endif + uint16_t pending; + uint16_t events; + uint32_t handler; + void *rx_buffer; + uint32_t rx_buffer_size; + void *tx_buffer; + uint32_t tx_buffer_size; +#endif // DEVICE_SPI_ASYNCH +#if DEVICE_SLEEP && DEVICE_LOWPOWERTIMER + cy_stc_syspm_callback_params_t pm_callback_params; + cy_stc_syspm_callback_t pm_callback_handler; +#endif +}; +#endif // DEVICE_SPI + +#if DEVICE_I2C +#include "cy_scb_i2c.h" + +struct i2c_s { + CySCB_Type *base; + uint32_t i2c_id; + PinName pin_sda; + PinName pin_scl; + en_clk_dst_t clock; + uint32_t divider; + uint32_t actual_speed; + cy_en_scb_i2c_mode_t mode; + uint32_t timeout; +#if DEVICE_I2C_SLAVE + uint16_t ADDRESS; + uint16_t is_setAddress; +#endif + cy_stc_scb_i2c_context_t context; +#if DEVICE_I2C_ASYNCH + cy_stc_scb_i2c_master_xfer_config_t rx_config; + cy_stc_scb_i2c_master_xfer_config_t tx_config; + IRQn_Type irqn; +#if defined (TARGET_MCU_PSOC6_M0) + cy_en_intr_t cm0p_irq_src; +#endif + uint16_t pending; + uint16_t events; + uint32_t handler; +#endif // DEVICE_I2C_ASYNCH +#if DEVICE_SLEEP && DEVICE_LOWPOWERTIMER + cy_stc_syspm_callback_params_t pm_callback_params; + cy_stc_syspm_callback_t pm_callback_handler; +#endif +}; +#endif // DEVICE_I2C + +#if DEVICE_PWMOUT +#include "cy_tcpwm.h" + +struct pwmout_s { + TCPWM_Type *base; + PinName pin; + uint32_t counter_id; + uint32_t clock; + uint32_t period; + uint32_t pulse_width; + uint32_t prescaler; +#if DEVICE_SLEEP && DEVICE_LOWPOWERTIMER + cy_stc_syspm_callback_params_t pm_callback_params; + cy_stc_syspm_callback_t pm_callback_handler; +#endif +}; +#endif // DEVICE_PWMOUT + +#ifdef DEVICE_ANALOGIN +#include "cy_sar.h" + +struct analogin_s { + SAR_Type *base; + PinName pin; + uint32_t channel_mask; + uint32_t clock; +}; +#endif // DEVICE_ANALOGIN + +#ifdef DEVICE_ANALOGOUT +#include "cy_ctdac.h" + +struct dac_s { + CTDAC_Type *base; + PinName pin; + uint32_t clock; +}; +#endif // DEVICE_ANALOGOUT + +#ifdef DEVICE_FLASH +struct flash_s { + /* nothing to be stored for now */ + void *dummy; +}; +#endif // DEVICE_FLASH + +#if DEVICE_TRNG +struct trng_s { + /* nothing to be stored for now */ + void *dummy; +}; +#endif // DEVICE_TRNG + +#ifdef __cplusplus +} +#endif + +#endif