LibDriver MAX7219
Loading...
Searching...
No Matches
driver_max7219_cascade.c
Go to the documentation of this file.
1
37
39
40static max7219_handle_t gs_handle;
43
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 {
77 gs_cascade[i].command = MAX7219_CASCADE_COMMAND_DECODE;
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 {
92 gs_cascade[i].command = MAX7219_CASCADE_COMMAND_SHUT_DOWN;
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 {
107 gs_cascade[i].command = MAX7219_CASCADE_COMMAND_DISPLAY_TEST;
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 {
122 gs_cascade[i].command = MAX7219_CASCADE_COMMAND_INTENSITY;
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 {
137 gs_cascade[i].command = MAX7219_CASCADE_COMMAND_SCAN_LIMIT;
138 gs_cascade[i].data = MAX7219_CASCADE_DEFAULT_SCAN_LIMIT;
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 {
198 gs_cascade[i].command = MAX7219_CASCADE_COMMAND_SHUT_DOWN;
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
struct max7219_handle_s max7219_handle_t
max7219 handle structure definition
@ 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
struct max7219_cascade_s max7219_cascade_t
max7219 cascade structure 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