LibDriver DS3231
Loading...
Searching...
No Matches
driver_ds3231_output_test.c
Go to the documentation of this file.
1
37
39#include <stdlib.h>
40
41static ds3231_handle_t gs_handle;
42
51uint8_t ds3231_output_test(uint32_t times)
52{
53 uint8_t res;
54 uint32_t i;
55 int8_t reg;
56 ds3231_info_t info;
57
58 /* link functions */
67
68 /* get ds3231 info */
69 res = ds3231_info(&info);
70 if (res != 0)
71 {
72 ds3231_interface_debug_print("ds3231: get info failed.\n");
73
74 return 1;
75 }
76 else
77 {
78 /* print ds3231 info */
79 ds3231_interface_debug_print("ds3231: chip is %s.\n", info.chip_name);
80 ds3231_interface_debug_print("ds3231: manufacturer is %s.\n", info.manufacturer_name);
81 ds3231_interface_debug_print("ds3231: interface is %s.\n", info.interface);
82 ds3231_interface_debug_print("ds3231: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
83 ds3231_interface_debug_print("ds3231: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
84 ds3231_interface_debug_print("ds3231: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
85 ds3231_interface_debug_print("ds3231: max current is %0.2fmA.\n", info.max_current_ma);
86 ds3231_interface_debug_print("ds3231: max temperature is %0.1fC.\n", info.temperature_max);
87 ds3231_interface_debug_print("ds3231: min temperature is %0.1fC.\n", info.temperature_min);
88 }
89
90 /* start output test */
91 ds3231_interface_debug_print("ds3231: start output test.\n");
92
93 /* init ds3231 */
94 res = ds3231_init(&gs_handle);
95 if (res != 0)
96 {
97 ds3231_interface_debug_print("ds3231: init failed.\n");
98
99 return 1;
100 }
101
102 /* set oscillator */
103 res = ds3231_set_oscillator(&gs_handle, DS3231_BOOL_TRUE);
104 if (res != 0)
105 {
106 ds3231_interface_debug_print("ds3231: set oscillator failed.\n");
107 (void)ds3231_deinit(&gs_handle);
108
109 return 1;
110 }
111
112 /* disable alarm1 */
114 if (res != 0)
115 {
116 ds3231_interface_debug_print("ds3231: set alarm1 interrupt failed.\n");
117 (void)ds3231_deinit(&gs_handle);
118
119 return 1;
120 }
121
122 /* disable alarm2 */
124 if (res != 0)
125 {
126 ds3231_interface_debug_print("ds3231: set alarm2 interrupt failed.\n");
127 (void)ds3231_deinit(&gs_handle);
128
129 return 1;
130 }
131
132 /* set square wave */
133 res = ds3231_set_pin(&gs_handle, DS3231_PIN_SQUARE_WAVE);
134 if (res != 0)
135 {
136 ds3231_interface_debug_print("ds3231: set pin failed.\n");
137 (void)ds3231_deinit(&gs_handle);
138
139 return 1;
140 }
141
142 /* disable square wave */
143 res = ds3231_set_square_wave(&gs_handle, DS3231_BOOL_FALSE);
144 if (res != 0)
145 {
146 ds3231_interface_debug_print("ds3231: set square wave failed.\n");
147 (void)ds3231_deinit(&gs_handle);
148
149 return 1;
150 }
151
152 /* disable 32khz output */
154 if (res != 0)
155 {
156 ds3231_interface_debug_print("ds3231: set 32khz output failed.\n");
157 (void)ds3231_deinit(&gs_handle);
158
159 return 1;
160 }
161
162 /* convert to register */
163 res = ds3231_aging_offset_convert_to_register(&gs_handle, 0, (int8_t *)&reg);
164 if (res != 0)
165 {
166 ds3231_interface_debug_print("ds3231: convert to register failed.\n");
167 (void)ds3231_deinit(&gs_handle);
168
169 return 1;
170 }
171
172 /* set aging offset */
173 res = ds3231_set_aging_offset(&gs_handle, reg);
174 if (res != 0)
175 {
176 ds3231_interface_debug_print("ds3231: set aging offset failed.\n");
177 (void)ds3231_deinit(&gs_handle);
178
179 return 1;
180 }
181 ds3231_interface_debug_print("ds3231: enable square wave.\n");
182
183 /* enable square wave */
184 res = ds3231_set_square_wave(&gs_handle, DS3231_BOOL_TRUE);
185 if (res != 0)
186 {
187 ds3231_interface_debug_print("ds3231: set square wave failed.\n");
188 (void)ds3231_deinit(&gs_handle);
189
190 return 1;
191 }
192 for (i = 0; i < times; i++)
193 {
195 ds3231_interface_debug_print("ds3231: run %ds.\n", i+1);
196 }
197
198 /* disable square wave */
199 res = ds3231_set_square_wave(&gs_handle, DS3231_BOOL_FALSE);
200 if (res != 0)
201 {
202 ds3231_interface_debug_print("ds3231: set square wave failed.\n");
203 (void)ds3231_deinit(&gs_handle);
204
205 return 1;
206 }
207 ds3231_interface_debug_print("ds3231: disable square wave.\n");
208 ds3231_interface_debug_print("ds3231: enable 32khz output.\n");
209
210 /* enable 32khz output */
211 res = ds3231_set_32khz_output(&gs_handle, DS3231_BOOL_TRUE);
212 if (res != 0)
213 {
214 ds3231_interface_debug_print("ds3231: set 32khz output failed.\n");
215 (void)ds3231_deinit(&gs_handle);
216
217 return 1;
218 }
219 for (i = 0; i < times; i++)
220 {
222 ds3231_interface_debug_print("ds3231: run %ds.\n", i+1);
223 }
224
225 /* disable 32khz output */
227 if (res != 0)
228 {
229 ds3231_interface_debug_print("ds3231: set 32khz output failed.\n");
230 (void)ds3231_deinit(&gs_handle);
231
232 return 1;
233 }
234 ds3231_interface_debug_print("ds3231: disable 32khz output.\n");
235
236 /* finish output test */
237 ds3231_interface_debug_print("ds3231: finish output test.\n");
238 (void)ds3231_deinit(&gs_handle);
239
240 return 0;
241}
driver ds3231 output test header file
uint8_t ds3231_set_aging_offset(ds3231_handle_t *handle, int8_t offset)
set the chip aging offset
uint8_t ds3231_set_pin(ds3231_handle_t *handle, ds3231_pin_t pin)
set the chip pin function
uint8_t ds3231_aging_offset_convert_to_register(ds3231_handle_t *handle, float offset, int8_t *reg)
convert a aging offset value to a register raw data
uint8_t ds3231_set_32khz_output(ds3231_handle_t *handle, ds3231_bool_t enable)
enable or disable the 32KHz output
uint8_t ds3231_set_square_wave(ds3231_handle_t *handle, ds3231_bool_t enable)
enable or disable the square wave output
uint8_t ds3231_set_alarm_interrupt(ds3231_handle_t *handle, ds3231_alarm_t alarm, ds3231_bool_t enable)
enable or disable the alarm interrupt
uint8_t ds3231_set_oscillator(ds3231_handle_t *handle, ds3231_bool_t enable)
enable or disable the oscillator
uint8_t ds3231_info(ds3231_info_t *info)
get chip's information
struct ds3231_handle_s ds3231_handle_t
ds3231 handle structure definition
uint8_t ds3231_init(ds3231_handle_t *handle)
initialize the chip
struct ds3231_info_s ds3231_info_t
ds3231 information structure definition
uint8_t ds3231_deinit(ds3231_handle_t *handle)
close the chip
@ DS3231_ALARM_2
@ DS3231_ALARM_1
@ DS3231_PIN_SQUARE_WAVE
@ DS3231_BOOL_TRUE
@ DS3231_BOOL_FALSE
uint8_t ds3231_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t ds3231_interface_iic_init(void)
interface iic bus init
uint8_t ds3231_interface_iic_deinit(void)
interface iic bus deinit
void ds3231_interface_delay_ms(uint32_t ms)
interface delay ms
void ds3231_interface_debug_print(const char *const fmt,...)
interface print format data
void ds3231_interface_receive_callback(uint8_t type)
interface receive callback
uint8_t ds3231_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
uint8_t ds3231_output_test(uint32_t times)
output test
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]