LibDriver MAX7219  2.0.0
MAX7219 full-featured driver
driver_max7219_cascade.c
Go to the documentation of this file.
1 
38 #include "driver_max7219_cascade.h"
39 
40 static max7219_handle_t gs_handle;
41 static max7219_cascade_t gs_cascade[MATRIX_CASCADE_LENGTH];
51 uint8_t max7219_cascade_init(void)
52 {
53  uint8_t res;
54  uint32_t i;
55 
56  /* link functions */
64 
65  /* max7219 init */
66  res = max7219_init(&gs_handle);
67  if (res != 0)
68  {
69  max7219_interface_debug_print("max7219: init failed.\n");
70 
71  return 1;
72  }
73 
74  /* max7219 set default decode */
75  for (i = 0; i < MATRIX_CASCADE_LENGTH; i++)
76  {
78  gs_cascade[i].data = MAX7219_CASCADE_DEFAULT_DECODE;
79  }
80  res = max7219_set_cascade(&gs_handle, (max7219_cascade_t *)gs_cascade, MATRIX_CASCADE_LENGTH);
81  if (res != 0)
82  {
83  max7219_interface_debug_print("max7219: set cascade failed.\n");
84  (void)max7219_deinit(&gs_handle);
85 
86  return 1;
87  }
88 
89  /* max7219 set default mode */
90  for (i = 0; i < MATRIX_CASCADE_LENGTH; i++)
91  {
93  gs_cascade[i].data = MAX7219_CASCADE_DEFAULT_MODE;
94  }
95  res = max7219_set_cascade(&gs_handle, (max7219_cascade_t *)gs_cascade, MATRIX_CASCADE_LENGTH);
96  if (res != 0)
97  {
98  max7219_interface_debug_print("max7219: set cascade failed.\n");
99  (void)max7219_deinit(&gs_handle);
100 
101  return 1;
102  }
103 
104  /* max7219 set default display test */
105  for (i = 0; i < MATRIX_CASCADE_LENGTH; i++)
106  {
108  gs_cascade[i].data = MAX7219_CASCADE_DEFAULT_TEST_MODE;
109  }
110  res = max7219_set_cascade(&gs_handle, (max7219_cascade_t *)gs_cascade, MATRIX_CASCADE_LENGTH);
111  if (res != 0)
112  {
113  max7219_interface_debug_print("max7219: set cascade failed.\n");
114  (void)max7219_deinit(&gs_handle);
115 
116  return 1;
117  }
118 
119  /* max7219 set default intensity */
120  for (i = 0; i < MATRIX_CASCADE_LENGTH; i++)
121  {
123  gs_cascade[i].data = MAX7219_CASCADE_DEFAULT_INTENSITY;
124  }
125  res = max7219_set_cascade(&gs_handle, (max7219_cascade_t *)gs_cascade, MATRIX_CASCADE_LENGTH);
126  if (res != 0)
127  {
128  max7219_interface_debug_print("max7219: set cascade failed.\n");
129  (void)max7219_deinit(&gs_handle);
130 
131  return 1;
132  }
133 
134  /* max7219 set default scan limit */
135  for (i = 0; i < MATRIX_CASCADE_LENGTH; i++)
136  {
139  }
140  res = max7219_set_cascade(&gs_handle, (max7219_cascade_t *)gs_cascade, MATRIX_CASCADE_LENGTH);
141  if (res != 0)
142  {
143  max7219_interface_debug_print("max7219: set cascade failed.\n");
144  (void)max7219_deinit(&gs_handle);
145 
146  return 1;
147  }
148 
149  return 0;
150 }
151 
160 {
161  uint8_t res;
162  uint32_t i, j;
163 
164  for (j = 0; j < 8; j++)
165  {
166  for (i = 0; i < MATRIX_CASCADE_LENGTH; i++)
167  {
168  gs_cascade[i].command = (max7219_cascade_command_t)(j + 1);
169  gs_cascade[i].data = g_matrix[i][j];
170  }
171 
172  /* set cascade */
173  res = max7219_set_cascade(&gs_handle, (max7219_cascade_t *)gs_cascade, MATRIX_CASCADE_LENGTH);
174  if (res != 0)
175  {
176  return 1;
177  }
178  }
179 
180  return 0;
181 }
182 
191 {
192  uint8_t res;
193  uint32_t i;
194 
195  /* max7219 set default mode */
196  for (i = 0; i < MATRIX_CASCADE_LENGTH; i++)
197  {
199  gs_cascade[i].data = MAX7219_MODE_SHUT_DOWN;
200  }
201  res = max7219_set_cascade(&gs_handle, (max7219_cascade_t *)gs_cascade, MATRIX_CASCADE_LENGTH);
202  if (res != 0)
203  {
204  return 1;
205  }
206  res = max7219_deinit(&gs_handle);
207  if (res != 0)
208  {
209  return 1;
210  }
211 
212  return 0;
213 }
214 
driver max7219 cascade header file
uint8_t max7219_init(max7219_handle_t *handle)
initialize the chip
uint8_t max7219_deinit(max7219_handle_t *handle)
close the chip
@ MAX7219_MODE_SHUT_DOWN
uint8_t max7219_set_cascade(max7219_handle_t *handle, max7219_cascade_t *cascade, uint16_t len)
set the cascade data
max7219_cascade_command_t
max7219 cascade command enumeration definition
@ MAX7219_CASCADE_COMMAND_DECODE
@ MAX7219_CASCADE_COMMAND_SCAN_LIMIT
@ MAX7219_CASCADE_COMMAND_SHUT_DOWN
@ MAX7219_CASCADE_COMMAND_DISPLAY_TEST
@ MAX7219_CASCADE_COMMAND_INTENSITY
#define MAX7219_CASCADE_DEFAULT_TEST_MODE
#define MATRIX_CASCADE_LENGTH
max7219 cascade example matrix cascade length definition
uint8_t max7219_cascade_deinit(void)
cascade example deinit
uint8_t g_matrix[MATRIX_CASCADE_LENGTH][8]
#define MAX7219_CASCADE_DEFAULT_MODE
#define MAX7219_CASCADE_DEFAULT_SCAN_LIMIT
uint8_t max7219_cascade_init(void)
cascade example init
uint8_t max7219_cascade_update(void)
cascade example update
#define MAX7219_CASCADE_DEFAULT_DECODE
max7219 cascade example default definition
#define MAX7219_CASCADE_DEFAULT_INTENSITY
uint8_t max7219_interface_spi_init(void)
interface spi bus init
uint8_t max7219_interface_spi_deinit(void)
interface spi bus deinit
uint8_t max7219_interface_spi_write(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus write
uint8_t max7219_interface_spi_write_cmd(uint8_t *buf, uint16_t len)
interface spi bus write command
void max7219_interface_delay_ms(uint32_t ms)
interface delay ms
void max7219_interface_debug_print(const char *const fmt,...)
interface print format data
max7219 cascade structure definition
max7219_cascade_command_t command
max7219 handle structure definition