LibDriver MCP4725
Loading...
Searching...
No Matches
driver_mcp4725_register_test.c
Go to the documentation of this file.
1
37
39#include <math.h>
40
41static mcp4725_handle_t gs_handle;
42
52{
53 uint8_t res;
54 float ref_voltage;
55 mcp4725_mode_t mode;
56 mcp4725_power_down_mode_t power_down_mode;
57 mcp4725_info_t info;
58 mcp4725_address_t addr_pin;
59
60 /* link interface function */
68
69 /* get mcp4725 information */
70 res = mcp4725_info(&info);
71 if (res != 0)
72 {
73 mcp4725_interface_debug_print("mcp4725: get info failed.\n");
74
75 return 1;
76 }
77 else
78 {
79 /* print chip information */
80 mcp4725_interface_debug_print("mcp4725: chip is %s.\n", info.chip_name);
81 mcp4725_interface_debug_print("mcp4725: manufacturer is %s.\n", info.manufacturer_name);
82 mcp4725_interface_debug_print("mcp4725: interface is %s.\n", info.interface);
83 mcp4725_interface_debug_print("mcp4725: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
84 mcp4725_interface_debug_print("mcp4725: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
85 mcp4725_interface_debug_print("mcp4725: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
86 mcp4725_interface_debug_print("mcp4725: max current is %0.2fmA.\n", info.max_current_ma);
87 mcp4725_interface_debug_print("mcp4725: max temperature is %0.1fC.\n", info.temperature_max);
88 mcp4725_interface_debug_print("mcp4725: min temperature is %0.1fC.\n", info.temperature_min);
89 }
90
91 /* start register */
92 mcp4725_interface_debug_print("mcp4725: start register test.\n");
93
94 /* mcp4725_set_addr_pin/mcp4725_get_addr_pin test */
95 mcp4725_interface_debug_print("mcp4725: mcp4725_set_addr_pin/mcp4725_get_addr_pin test.\n");
96
97 /* set A0_GND */
99 if (res != 0)
100 {
101 mcp4725_interface_debug_print("mcp4725: set addr pin failed.\n");
102
103 return 1;
104 }
105 mcp4725_interface_debug_print("mcp4725: set addr pin A0_GND.\n");
106 res = mcp4725_get_addr_pin(&gs_handle, &addr_pin);
107 if (res != 0)
108 {
109 mcp4725_interface_debug_print("mcp4725: get addr pin failed.\n");
110
111 return 1;
112 }
113 mcp4725_interface_debug_print("mcp4725: check addr pin %s.\n", addr_pin==MCP4725_ADDR_A0_GND?"ok":"error");
114
115 /* set A0_VCC */
116 res = mcp4725_set_addr_pin(&gs_handle, MCP4725_ADDR_A0_VCC);
117 if (res != 0)
118 {
119 mcp4725_interface_debug_print("mcp4725: set addr pin failed.\n");
120
121 return 1;
122 }
123 mcp4725_interface_debug_print("mcp4725: set addr pin A0_VCC.\n");
124 res = mcp4725_get_addr_pin(&gs_handle, &addr_pin);
125 if (res != 0)
126 {
127 mcp4725_interface_debug_print("mcp4725: get addr pin failed.\n");
128
129 return 1;
130 }
131 mcp4725_interface_debug_print("mcp4725: check addr pin %s.\n", addr_pin==MCP4725_ADDR_A0_VCC?"ok":"error");
132
133 /* set addr pin */
134 res = mcp4725_set_addr_pin(&gs_handle, addr);
135 if (res != 0)
136 {
137 mcp4725_interface_debug_print("mcp4725: set addr pin failed.\n");
138
139 return 1;
140 }
141
142 /* mcp4725 init */
143 res = mcp4725_init(&gs_handle);
144 if (res != 0)
145 {
146 mcp4725_interface_debug_print("mcp4725: init failed.\n");
147
148 return 1;
149 }
150
151 /* mcp4725_set_reference_voltage/mcp4725_get_reference_voltage */
152 mcp4725_interface_debug_print("mcp4725: mcp4725_set_reference_voltage/mcp4725_get_reference_voltage test.\n");
153 res = mcp4725_set_reference_voltage(&gs_handle, 3.3f);
154 if (res != 0)
155 {
156 mcp4725_interface_debug_print("mcp4725: set reference voltage failed.\n");
157 (void)mcp4725_deinit(&gs_handle);
158
159 return 1;
160 }
161 mcp4725_interface_debug_print("mcp4725: set reference voltage 3.3v.\n");
162 res = mcp4725_get_reference_voltage(&gs_handle, (float *)&ref_voltage);
163 if (res != 0)
164 {
165 mcp4725_interface_debug_print("mcp4725: get reference voltage failed.\n");
166 (void)mcp4725_deinit(&gs_handle);
167
168 return 1;
169 }
170 mcp4725_interface_debug_print("mcp4725: check reference voltage %s.\n", fabsf(3.3f - ref_voltage) < 1e-6f ? "ok " :"error");
171
172 /* mcp4725_set_mode/mcp4725_get_mode test */
173 mcp4725_interface_debug_print("mcp4725: mcp4725_set_mode/mcp4725_get_mode test.\n");
174
175 /* set DAC mode */
176 res = mcp4725_set_mode(&gs_handle, MCP4725_MODE_DAC);
177 if (res != 0)
178 {
179 mcp4725_interface_debug_print("mcp4725: set mode failed.\n");
180 (void)mcp4725_deinit(&gs_handle);
181
182 return 1;
183 }
184 mcp4725_interface_debug_print("mcp4725: set dac mode.\n");
185 res = mcp4725_get_mode(&gs_handle, &mode);
186 if (res != 0)
187 {
188 mcp4725_interface_debug_print("mcp4725: get mode failed.\n");
189 (void)mcp4725_deinit(&gs_handle);
190
191 return 1;
192 }
193 mcp4725_interface_debug_print("mcp4725: check mode %s.\n", mode==MCP4725_MODE_DAC?"ok":"error");
194
195 /* set EEPROM mode */
196 res = mcp4725_set_mode(&gs_handle, MCP4725_MODE_EEPROM);
197 if (res != 0)
198 {
199 mcp4725_interface_debug_print("mcp4725: set mode failed.\n");
200 (void)mcp4725_deinit(&gs_handle);
201
202 return 1;
203 }
204 mcp4725_interface_debug_print("mcp4725: set eeprom mode.\n");
205 res = mcp4725_get_mode(&gs_handle, &mode);
206 if (res != 0)
207 {
208 mcp4725_interface_debug_print("mcp4725: get mode failed.\n");
209 (void)mcp4725_deinit(&gs_handle);
210
211 return 1;
212 }
213 mcp4725_interface_debug_print("mcp4725: check mode %s.\n", mode==MCP4725_MODE_EEPROM?"ok":"error");
214
215 /* mcp4725_set_power_mode/mcp4725_get_power_mode */
216 mcp4725_interface_debug_print("mcp4725: mcp4725_set_power_mode/mcp4725_get_power_mode test.\n");
217
218 /* set power down normal */
220 if (res != 0)
221 {
222 mcp4725_interface_debug_print("mcp4725: set power mode failed.\n");
223 (void)mcp4725_deinit(&gs_handle);
224
225 return 1;
226 }
227 mcp4725_interface_debug_print("mcp4725: set normal power down.\n");
228 res = mcp4725_get_power_mode(&gs_handle, &power_down_mode);
229 if (res != 0)
230 {
231 mcp4725_interface_debug_print("mcp4725: get power mode failed.\n");
232 (void)mcp4725_deinit(&gs_handle);
233
234 return 1;
235 }
236 mcp4725_interface_debug_print("mcp4725: check power mode %s.\n", power_down_mode==MCP4725_POWER_DOWN_MODE_NORMAL?"ok":"error");
237
238 /* set power down 1K */
240 if (res != 0)
241 {
242 mcp4725_interface_debug_print("mcp4725: set power mode failed.\n");
243 (void)mcp4725_deinit(&gs_handle);
244
245 return 1;
246 }
247 mcp4725_interface_debug_print("mcp4725: set 1K power down.\n");
248 res = mcp4725_get_power_mode(&gs_handle, &power_down_mode);
249 if (res != 0)
250 {
251 mcp4725_interface_debug_print("mcp4725: get power mode failed.\n");
252 (void)mcp4725_deinit(&gs_handle);
253
254 return 1;
255 }
256 mcp4725_interface_debug_print("mcp4725: check power mode %s.\n", power_down_mode==MCP4725_POWER_DOWN_MODE_1K_GND?"ok":"error");
257
258 /* set power down 100K */
260 if (res != 0)
261 {
262 mcp4725_interface_debug_print("mcp4725: set power mode failed.\n");
263 (void)mcp4725_deinit(&gs_handle);
264
265 return 1;
266 }
267 mcp4725_interface_debug_print("mcp4725: set 100K power down.\n");
268 res = mcp4725_get_power_mode(&gs_handle, &power_down_mode);
269 if (res != 0)
270 {
271 mcp4725_interface_debug_print("mcp4725: get power mode failed.\n");
272 (void)mcp4725_deinit(&gs_handle);
273
274 return 1;
275 }
276 mcp4725_interface_debug_print("mcp4725: check power mode %s.\n", power_down_mode==MCP4725_POWER_DOWN_MODE_100K_GND?"ok":"error");
277
278 /* set power down 500K */
280 if (res != 0)
281 {
282 mcp4725_interface_debug_print("mcp4725: set power mode failed.\n");
283 (void)mcp4725_deinit(&gs_handle);
284
285 return 1;
286 }
287 mcp4725_interface_debug_print("mcp4725: set 500K power down.\n");
288 res = mcp4725_get_power_mode(&gs_handle, &power_down_mode);
289 if (res != 0)
290 {
291 mcp4725_interface_debug_print("mcp4725: get power mode failed.\n");
292 (void)mcp4725_deinit(&gs_handle);
293
294 return 1;
295 }
296 mcp4725_interface_debug_print("mcp4725: check power mode %s.\n", power_down_mode==MCP4725_POWER_DOWN_MODE_500K_GND?"ok":"error");
297
298 /* finish register test */
299 mcp4725_interface_debug_print("mcp4725: finish register test.\n");
300 (void)mcp4725_deinit(&gs_handle);
301
302 return 0;
303}
driver mcp4725 register test header file
struct mcp4725_handle_s mcp4725_handle_t
mcp4725 handle structure definition
uint8_t mcp4725_get_reference_voltage(mcp4725_handle_t *handle, float *ref_voltage)
get the chip reference voltage
mcp4725_power_down_mode_t
mcp4725 power down enumeration definition
uint8_t mcp4725_deinit(mcp4725_handle_t *handle)
close the chip
uint8_t mcp4725_info(mcp4725_info_t *info)
get chip's information
uint8_t mcp4725_set_power_mode(mcp4725_handle_t *handle, mcp4725_power_down_mode_t mode)
set the chip power mode
uint8_t mcp4725_get_power_mode(mcp4725_handle_t *handle, mcp4725_power_down_mode_t *mode)
get the chip power mode
mcp4725_address_t
mcp4725 address enumeration definition
struct mcp4725_info_s mcp4725_info_t
mcp4725 information structure definition
uint8_t mcp4725_get_addr_pin(mcp4725_handle_t *handle, mcp4725_address_t *addr_pin)
get the chip address pin
uint8_t mcp4725_init(mcp4725_handle_t *handle)
initialize the chip
uint8_t mcp4725_set_reference_voltage(mcp4725_handle_t *handle, float ref_voltage)
set the chip reference voltage
uint8_t mcp4725_set_mode(mcp4725_handle_t *handle, mcp4725_mode_t mode)
set the chip mode
mcp4725_mode_t
mcp4725 mode enumeration definition
uint8_t mcp4725_get_mode(mcp4725_handle_t *handle, mcp4725_mode_t *mode)
get the chip mode
uint8_t mcp4725_set_addr_pin(mcp4725_handle_t *handle, mcp4725_address_t addr_pin)
set the chip address pin
@ MCP4725_POWER_DOWN_MODE_NORMAL
@ MCP4725_POWER_DOWN_MODE_500K_GND
@ MCP4725_POWER_DOWN_MODE_1K_GND
@ MCP4725_POWER_DOWN_MODE_100K_GND
@ MCP4725_ADDR_A0_GND
@ MCP4725_ADDR_A0_VCC
@ MCP4725_MODE_DAC
@ MCP4725_MODE_EEPROM
uint8_t mcp4725_interface_iic_read_cmd(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus read command
void mcp4725_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t mcp4725_interface_iic_write_cmd(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus write command
void mcp4725_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t mcp4725_interface_iic_init(void)
interface iic bus init
uint8_t mcp4725_interface_iic_deinit(void)
interface iic bus deinit
uint8_t mcp4725_register_test(mcp4725_address_t addr)
register test
uint32_t driver_version
char manufacturer_name[32]