matrixr  2.0.0.0
matrixr.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 
34 // ----------------------------------------------------------------------------
35 
36 #ifndef MATRIXR_H
37 #define MATRIXR_H
38 
43 #ifdef PREINIT_SUPPORTED
44 #include "preinit.h"
45 #endif
46 
47 #ifdef MikroCCoreVersion
48  #if MikroCCoreVersion >= 1
49  #include "delays.h"
50  #endif
51 #endif
52 
53 #include "drv_digital_out.h"
54 #include "drv_digital_in.h"
55 #include "drv_spi_master.h"
56 
57 
58 // -------------------------------------------------------------- PUBLIC MACROS
59 
70 #define MATRIXR_MAP_MIKROBUS( cfg, mikrobus ) \
71  cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
72  cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
73  cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
74  cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
75  cfg.csn = MIKROBUS( mikrobus, MIKROBUS_AN );
76 
82 #define MATRIXR_RETVAL uint8_t
83 
84 #define MATRIXR_OK 0x00
85 #define MATRIXR_INIT_ERROR 0xFF
86 
92 #define MATRIXR_DECODE_MODE_REG 0x09
93 #define MATRIXR_INTENSITY_REG 0x0A
94 #define MATRIXR_SCAN_LIMIT_REG 0x0B
95 #define MATRIXR_SHUTDOWN_REG 0x0C
96 #define MATRIXR_DISPLAY_TEST_REG 0x0F
97 
103 #define MATRIXR_NO_DECODE 0x00
104 #define MATRIXR_DECODE_DIGIT_0 0x01
105 #define MATRIXR_DECODE_DIGIT_3_0 0x0F
106 #define MATRIXR_DECODE_DIGIT_7 0xFF
107 
113 #define MATRIXR_INTEN_LVL_0 0x00
114 #define MATRIXR_INTEN_LVL_1 0x03
115 #define MATRIXR_INTEN_LVL_2 0x06
116 #define MATRIXR_INTEN_LVL_3 0x09
117 #define MATRIXR_INTEN_LVL_4 0x0C
118 #define MATRIXR_INTEN_LVL_5 0x0F
119 
125 #define MATRIXR_DISPLAY_DIGIT_0 0x00
126 #define MATRIXR_DISPLAY_DIGIT_0_1 0x01
127 #define MATRIXR_DISPLAY_DIGIT_0_2 0x02
128 #define MATRIXR_DISPLAY_DIGIT_0_3 0x03
129 #define MATRIXR_DISPLAY_DIGIT_0_4 0x04
130 #define MATRIXR_DISPLAY_DIGIT_0_5 0x05
131 #define MATRIXR_DISPLAY_DIGIT_0_6 0x06
132 #define MATRIXR_DISPLAY_DIGIT_0_7 0x07
133 
139 #define MATRIXR_SHUTDOWN_MODE 0x00
140 #define MATRIXR_NORMAL_OPERATION 0x01
141 
146 #define MATRIXR_DISPLAY_NORMAL_OPERATION 0x00
147 #define MATRIXR_DISPLAY_TEST_MODE 0X01
148  // End group macro
151 
152 // --------------------------------------------------------------- PUBLIC TYPES
153 
162 typedef struct
163 {
164  // Output pins
165 
166  digital_out_t csn;
167  digital_out_t cs;
168 
169  // Modules
170 
171  spi_master_t spi;
172  pin_name_t chip_select;
173 
174 } matrixr_t;
175 
179 typedef struct
180 {
181  // Communication gpio pins
182 
183  pin_name_t miso;
184  pin_name_t mosi;
185  pin_name_t sck;
186  pin_name_t cs;
187 
188  // Additional gpio pins
189 
190  pin_name_t csn;
191 
192  // static variable
193 
194  uint32_t spi_speed;
195  spi_master_mode_t spi_mode;
196  spi_master_chip_select_polarity_t cs_polarity;
197 
198 
199 } matrixr_cfg_t;
200  // End types group
202 
203 // ----------------------------------------------- PUBLIC FUNCTION DECLARATIONS
204 
209 #ifdef __cplusplus
210 extern "C"{
211 #endif
212 
222 
231 
240 
250 void matrixr_display_characters ( matrixr_t *ctx, uint8_t left_char, uint8_t right_char );
251 
261 void matrixr_write_reg ( matrixr_t *ctx, uint8_t address, uint8_t input_data );
262 
271 
280 
281 #ifdef __cplusplus
282 }
283 #endif
284 #endif // _MATRIXR_H_
285  // End public_function group
288 
289 // ------------------------------------------------------------------------- END
matrixr_cfg_t::mosi
pin_name_t mosi
Definition: matrixr.h:184
MATRIXR_RETVAL
#define MATRIXR_RETVAL
Definition: matrixr.h:82
matrixr_cfg_t::cs
pin_name_t cs
Definition: matrixr.h:186
matrixr_cfg_t::cs_polarity
spi_master_chip_select_polarity_t cs_polarity
Definition: matrixr.h:196
matrixr_cfg_t
Click configuration structure definition.
Definition: matrixr.h:180
matrixr_cfg_setup
void matrixr_cfg_setup(matrixr_cfg_t *cfg)
Config Object Initialization function.
matrixr_default_cfg
void matrixr_default_cfg(matrixr_t *ctx)
Click Default Configuration function.
matrixr_cfg_t::miso
pin_name_t miso
Definition: matrixr.h:183
matrixr_t::chip_select
pin_name_t chip_select
Definition: matrixr.h:172
matrixr_cfg_t::csn
pin_name_t csn
Definition: matrixr.h:190
matrixr_init
MATRIXR_RETVAL matrixr_init(matrixr_t *ctx, matrixr_cfg_t *cfg)
Initialization function.
matrixr_t::csn
digital_out_t csn
Definition: matrixr.h:166
matrixr_write_reg
void matrixr_write_reg(matrixr_t *ctx, uint8_t address, uint8_t input_data)
Register write function.
matrixr_t
Click ctx object definition.
Definition: matrixr.h:163
matrixr_set_csn_high
void matrixr_set_csn_high(matrixr_t *ctx)
Set CSN pin to high function.
matrixr_cfg_t::spi_mode
spi_master_mode_t spi_mode
Definition: matrixr.h:195
matrixr_t::cs
digital_out_t cs
Definition: matrixr.h:167
matrixr_display_characters
void matrixr_display_characters(matrixr_t *ctx, uint8_t left_char, uint8_t right_char)
Display characters function.
matrixr_t::spi
spi_master_t spi
Definition: matrixr.h:171
matrixr_cfg_t::spi_speed
uint32_t spi_speed
Definition: matrixr.h:194
matrixr_set_csn_low
void matrixr_set_csn_low(matrixr_t *ctx)
Set CSN pin to low function.
matrixr_cfg_t::sck
pin_name_t sck
Definition: matrixr.h:185