ismrx 2.0.0.0
ismrx.h
Go to the documentation of this file.
1/****************************************************************************
2** Copyright (C) 2020 MikroElektronika d.o.o.
3** Contact: https://www.mikroe.com/contact
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11** The above copyright notice and this permission notice shall be
12** included in all copies or substantial portions of the Software.
13**
14** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20** USE OR OTHER DEALINGS IN THE SOFTWARE.
21****************************************************************************/
22
28#ifndef ISMRX_H
29#define ISMRX_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
39#ifdef PREINIT_SUPPORTED
40#include "preinit.h"
41#endif
42
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
45 #include "delays.h"
46 #endif
47#endif
48
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_spi_master.h"
52
73#define ISMRX_REG_POWER_CFG 0x00
74#define ISMRX_REG_CFG 0x01
75#define ISMRX_REG_CTRL 0x02
76#define ISMRX_REG_OSC_FREQ 0x03
77#define ISMRX_REG_OFF_TIMER_MSB 0x04
78#define ISMRX_REG_OFF_TIMER_LSB 0x05
79#define ISMRX_REG_CPU_RECOVERY_TIME 0x06
80#define ISMRX_REG_RF_SETTLE_TIMER_MSB 0x07
81#define ISMRX_REG_RF_SETTLE_TIMER_LSB 0x08
82#define ISMRX_REG_STATUS 0x09
83#define ISMRX_REG_AGC_DWELL_TIMER 0x0A
84
85 // ismrx_reg
86
101#define ISMRX_MODULATION_NULL 0
102#define ISMRX_MODULATION_ASK 1
103#define ISMRX_MODULATION_FSK 2
104
105#define ISMRX_RECEIVE_MODE_NULL 0
106#define ISMRX_RECEIVE_MODE_RX 3
107#define ISMRX_RECEIVE_MODE_DRX 4
108
109 // ismrx_set
110
125#define ISMRX_MAP_MIKROBUS( cfg, mikrobus ) \
126 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
127 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
128 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
129 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS );
130
131 // ismrx_map
132 // ismrx
133
138typedef struct
139{
140 // Output pins
141 digital_out_t mosi;
143 // Input pins
144 digital_in_t miso;
146 // Modules
147 spi_master_t spi;
148 pin_name_t chip_select;
150 uint8_t modulation;
152
153} ismrx_t;
154
159typedef struct
160{
161 // Communication gpio pins
162 pin_name_t miso;
163 pin_name_t mosi;
164 pin_name_t sck;
165 pin_name_t cs;
167 // static variable
168 uint32_t spi_speed;
169 spi_master_mode_t spi_mode;
170 spi_master_chip_select_polarity_t cs_polarity;
173
186
203
216err_t ismrx_init ( ismrx_t *ctx, ismrx_cfg_t *cfg );
217
231
245
259err_t ismrx_generic_write ( ismrx_t *ctx, uint8_t reg, uint8_t data_in );
260
275err_t ismrx_generic_read ( ismrx_t *ctx, uint8_t reg, uint8_t *data_out );
276
289
298
307
315uint8_t ismrx_get_data ( ismrx_t *ctx );
316
317#ifdef __cplusplus
318}
319#endif
320#endif // ISMRX_H
321
322 // ismrx
323
324// ------------------------------------------------------------------------ END
err_t ismrx_generic_read(ismrx_t *ctx, uint8_t reg, uint8_t *data_out)
ISM RX data reading function.
err_t ismrx_generic_write(ismrx_t *ctx, uint8_t reg, uint8_t data_in)
ISM RX data writing function.
void ismrx_start_drx(ismrx_t *ctx)
ISM RX start receiving signal.
err_t ismrx_init(ismrx_t *ctx, ismrx_cfg_t *cfg)
ISM RX initialization function.
err_t ismrx_task_init(ismrx_t *ctx, ismrx_cfg_t *cfg)
ISM RX initialization function.
err_t ismrx_default_cfg(ismrx_t *ctx)
ISM RX default configuration function.
void ismrx_stop_drx(ismrx_t *ctx)
ISM RX stop receiving signal.
uint8_t ismrx_get_data(ismrx_t *ctx)
ISM RX get miso pin state.
err_t ismrx_master_reset(ismrx_t *ctx)
ISM RX software reset.
void ismrx_cfg_setup(ismrx_cfg_t *cfg)
ISM RX configuration object setup function.
ismtx_return_value_t
ISM RX Click return value data.
Definition ismrx.h:179
@ ISMRX_CONTEXT_RECEIVE_MODE_ERROR
Definition ismrx.h:183
@ ISMRX_CONTEXT_MODULATION_ERROR
Definition ismrx.h:182
@ ISMRX_ERROR
Definition ismrx.h:181
@ ISMRX_OK
Definition ismrx.h:180
ISM RX Click configuration object.
Definition ismrx.h:160
spi_master_chip_select_polarity_t cs_polarity
Definition ismrx.h:170
pin_name_t sck
Definition ismrx.h:164
spi_master_mode_t spi_mode
Definition ismrx.h:169
pin_name_t mosi
Definition ismrx.h:163
uint32_t spi_speed
Definition ismrx.h:168
pin_name_t miso
Definition ismrx.h:162
pin_name_t cs
Definition ismrx.h:165
ISM RX Click context object.
Definition ismrx.h:139
spi_master_t spi
Definition ismrx.h:147
uint8_t modulation
Definition ismrx.h:150
digital_out_t mosi
Definition ismrx.h:141
digital_in_t miso
Definition ismrx.h:144
uint8_t receive_mode
Definition ismrx.h:151
pin_name_t chip_select
Definition ismrx.h:148