LibDriver TM1638  1.0.0
TM1638 full-featured driver
driver_tm1638.h
Go to the documentation of this file.
1 
37 #ifndef DRIVER_TM1638_H
38 #define DRIVER_TM1638_H
39 
40 #include <stdio.h>
41 #include <stdint.h>
42 #include <string.h>
43 
44 #ifdef __cplusplus
45 extern "C"{
46 #endif
47 
62 typedef enum
63 {
67 
71 typedef enum
72 {
76 
80 typedef enum
81 {
91 
95 typedef enum
96 {
97  TM1638_NUMBER_0 = 0x003F,
98  TM1638_NUMBER_1 = 0x0006,
99  TM1638_NUMBER_2 = 0x005B,
100  TM1638_NUMBER_3 = 0x004F,
101  TM1638_NUMBER_4 = 0x0066,
102  TM1638_NUMBER_5 = 0x006D,
103  TM1638_NUMBER_6 = 0x007D,
104  TM1638_NUMBER_7 = 0x0007,
105  TM1638_NUMBER_8 = 0x007F,
106  TM1638_NUMBER_9 = 0x006F,
108 
112 typedef struct tm1638_handle_s
113 {
114  uint8_t (*spi_init)(void);
115  uint8_t (*spi_deinit)(void);
116  uint8_t (*spi_write)(uint8_t addr, uint8_t *buf, uint16_t len);
117  uint8_t (*spi_read)(uint8_t addr, uint8_t *buf, uint16_t len);
118  void (*delay_ms)(uint32_t ms);
119  void (*debug_print)(const char *const fmt, ...);
120  uint8_t inited;
121  uint8_t display_conf;
122  uint8_t data_conf;
124 
128 typedef struct tm1638_info_s
129 {
130  char chip_name[32];
131  char manufacturer_name[32];
132  char interface[8];
138  uint32_t driver_version;
140 
158 #define DRIVER_TM1638_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
159 
166 #define DRIVER_TM1638_LINK_SPI_INIT(HANDLE, FUC) (HANDLE)->spi_init = FUC
167 
174 #define DRIVER_TM1638_LINK_SPI_DEINIT(HANDLE, FUC) (HANDLE)->spi_deinit = FUC
175 
182 #define DRIVER_TM1638_LINK_SPI_WRITE(HANDLE, FUC) (HANDLE)->spi_write = FUC
183 
190 #define DRIVER_TM1638_LINK_SPI_READ(HANDLE, FUC) (HANDLE)->spi_read = FUC
191 
198 #define DRIVER_TM1638_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
199 
206 #define DRIVER_TM1638_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
207 
227 uint8_t tm1638_info(tm1638_info_t *info);
228 
239 uint8_t tm1638_init(tm1638_handle_t *handle);
240 
251 uint8_t tm1638_clear_segment(tm1638_handle_t *handle);
252 
264 uint8_t tm1638_deinit(tm1638_handle_t *handle);
265 
280 uint8_t tm1638_write_segment(tm1638_handle_t *handle, uint8_t addr, uint16_t *data, uint8_t len);
281 
293 uint8_t tm1638_read_segment(tm1638_handle_t *handle, uint8_t segk[4]);
294 
307 
319 
331 uint8_t tm1638_set_display(tm1638_handle_t *handle, tm1638_bool_t enable);
332 
343 uint8_t tm1638_get_display(tm1638_handle_t *handle, tm1638_bool_t *enable);
344 
357 
369 
381 uint8_t tm1638_set_test_mode(tm1638_handle_t *handle, tm1638_bool_t enable);
382 
393 uint8_t tm1638_get_test_mode(tm1638_handle_t *handle, tm1638_bool_t *enable);
394 
419 uint8_t tm1638_set_reg(tm1638_handle_t *handle, uint8_t cmd, uint8_t *data, uint8_t len);
420 
434 uint8_t tm1638_get_reg(tm1638_handle_t *handle, uint8_t cmd, uint8_t *data, uint8_t len);
435 
444 #ifdef __cplusplus
445 }
446 #endif
447 
448 #endif
uint8_t tm1638_get_test_mode(tm1638_handle_t *handle, tm1638_bool_t *enable)
get test mode status
uint8_t tm1638_write_segment(tm1638_handle_t *handle, uint8_t addr, uint16_t *data, uint8_t len)
write segment
tm1638_bool_t
tm1638 bool enumeration definition
Definition: driver_tm1638.h:72
struct tm1638_handle_s tm1638_handle_t
tm1638 handle structure definition
uint8_t tm1638_set_address_mode(tm1638_handle_t *handle, tm1638_address_mode_t mode)
set address mode
tm1638_address_mode_t
tm1638 address mode enumeration definition
Definition: driver_tm1638.h:63
uint8_t tm1638_set_pulse_width(tm1638_handle_t *handle, tm1638_pulse_width_t width)
set pulse width
tm1638_number_t
tm1638 number enumeration definition
Definition: driver_tm1638.h:96
uint8_t tm1638_deinit(tm1638_handle_t *handle)
close the chip
uint8_t tm1638_clear_segment(tm1638_handle_t *handle)
clear segment
uint8_t tm1638_init(tm1638_handle_t *handle)
initialize the chip
uint8_t tm1638_read_segment(tm1638_handle_t *handle, uint8_t segk[4])
read segment
uint8_t tm1638_set_display(tm1638_handle_t *handle, tm1638_bool_t enable)
enable or disable display
tm1638_pulse_width_t
tm1638 pulse width enumeration definition
Definition: driver_tm1638.h:81
uint8_t tm1638_get_display(tm1638_handle_t *handle, tm1638_bool_t *enable)
get display status
uint8_t tm1638_get_address_mode(tm1638_handle_t *handle, tm1638_address_mode_t *mode)
get address mode
uint8_t tm1638_set_test_mode(tm1638_handle_t *handle, tm1638_bool_t enable)
enable or disable test mode
struct tm1638_info_s tm1638_info_t
tm1638 information structure definition
uint8_t tm1638_info(tm1638_info_t *info)
get chip's information
uint8_t tm1638_get_pulse_width(tm1638_handle_t *handle, tm1638_pulse_width_t *width)
get pulse width
@ TM1638_BOOL_FALSE
Definition: driver_tm1638.h:73
@ TM1638_BOOL_TRUE
Definition: driver_tm1638.h:74
@ TM1638_ADDRESS_MODE_FIX
Definition: driver_tm1638.h:65
@ TM1638_ADDRESS_MODE_INC
Definition: driver_tm1638.h:64
@ TM1638_NUMBER_4
@ TM1638_NUMBER_2
Definition: driver_tm1638.h:99
@ TM1638_NUMBER_9
@ TM1638_NUMBER_3
@ TM1638_NUMBER_8
@ TM1638_NUMBER_5
@ TM1638_NUMBER_7
@ TM1638_NUMBER_6
@ TM1638_NUMBER_0
Definition: driver_tm1638.h:97
@ TM1638_NUMBER_1
Definition: driver_tm1638.h:98
@ TM1638_PULSE_WIDTH_14_DIV_16
Definition: driver_tm1638.h:89
@ TM1638_PULSE_WIDTH_12_DIV_16
Definition: driver_tm1638.h:87
@ TM1638_PULSE_WIDTH_1_DIV_16
Definition: driver_tm1638.h:82
@ TM1638_PULSE_WIDTH_4_DIV_16
Definition: driver_tm1638.h:84
@ TM1638_PULSE_WIDTH_13_DIV_16
Definition: driver_tm1638.h:88
@ TM1638_PULSE_WIDTH_2_DIV_16
Definition: driver_tm1638.h:83
@ TM1638_PULSE_WIDTH_11_DIV_16
Definition: driver_tm1638.h:86
@ TM1638_PULSE_WIDTH_10_DIV_16
Definition: driver_tm1638.h:85
uint8_t tm1638_set_reg(tm1638_handle_t *handle, uint8_t cmd, uint8_t *data, uint8_t len)
set the chip register
uint8_t tm1638_get_reg(tm1638_handle_t *handle, uint8_t cmd, uint8_t *data, uint8_t len)
get the chip register
tm1638 handle structure definition
uint8_t(* spi_init)(void)
void(* delay_ms)(uint32_t ms)
uint8_t display_conf
void(* debug_print)(const char *const fmt,...)
uint8_t(* spi_deinit)(void)
uint8_t(* spi_write)(uint8_t addr, uint8_t *buf, uint16_t len)
uint8_t(* spi_read)(uint8_t addr, uint8_t *buf, uint16_t len)
tm1638 information structure definition
float temperature_max
float supply_voltage_max_v
uint32_t driver_version
float temperature_min
float max_current_ma
char manufacturer_name[32]
float supply_voltage_min_v
char interface[8]
char chip_name[32]