LibDriver PCF8575
Loading...
Searching...
No Matches
driver_pcf8575_read_write_test.c
Go to the documentation of this file.
1
36
38
39static pcf8575_handle_t gs_handle;
40
50uint8_t pcf8575_read_write_test(pcf8575_address_t addr, uint32_t times)
51{
52 uint8_t res;
53 uint32_t i;
54 pcf8575_info_t info;
56
57 /* link functions */
65
66 /* pcf8575 info */
67 res = pcf8575_info(&info);
68 if (res != 0)
69 {
70 pcf8575_interface_debug_print("pcf8575: get info failed.\n");
71
72 return 1;
73 }
74 else
75 {
76 /* print chip information */
77 pcf8575_interface_debug_print("pcf8575: chip is %s.\n", info.chip_name);
78 pcf8575_interface_debug_print("pcf8575: manufacturer is %s.\n", info.manufacturer_name);
79 pcf8575_interface_debug_print("pcf8575: interface is %s.\n", info.interface);
80 pcf8575_interface_debug_print("pcf8575: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
81 pcf8575_interface_debug_print("pcf8575: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
82 pcf8575_interface_debug_print("pcf8575: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
83 pcf8575_interface_debug_print("pcf8575: max current is %0.2fmA.\n", info.max_current_ma);
84 pcf8575_interface_debug_print("pcf8575: max temperature is %0.1fC.\n", info.temperature_max);
85 pcf8575_interface_debug_print("pcf8575: min temperature is %0.1fC.\n", info.temperature_min);
86 }
87
88 /* set addr pin */
89 res = pcf8575_set_addr_pin(&gs_handle, addr);
90 if (res != 0)
91 {
92 pcf8575_interface_debug_print("pcf8575: set addr pin failed.\n");
93
94 return 1;
95 }
96
97 /* pcf8575 init */
98 res = pcf8575_init(&gs_handle);
99 if (res != 0)
100 {
101 pcf8575_interface_debug_print("pcf8575: init failed.\n");
102
103 return 1;
104 }
105
106 /* start read test */
107 pcf8575_interface_debug_print("pcf8575: start read write test.\n");
108
109 for (i = 0; i < times; i++)
110 {
111 /* read pin 00 */
112 res = pcf8575_read(&gs_handle, PCF8575_PIN_00, &level);
113 if (res != 0)
114 {
115 pcf8575_interface_debug_print("pcf8575: read failed.\n");
116 (void)pcf8575_deinit(&gs_handle);
117
118 return 1;
119 }
120 pcf8575_interface_debug_print("pcf8575: read PIN 00 is %d.\n", level);
121
122 /* read pin 01 */
123 res = pcf8575_read(&gs_handle, PCF8575_PIN_01, &level);
124 if (res != 0)
125 {
126 pcf8575_interface_debug_print("pcf8575: read failed.\n");
127 (void)pcf8575_deinit(&gs_handle);
128
129 return 1;
130 }
131 pcf8575_interface_debug_print("pcf8575: read PIN 01 is %d.\n", level);
132
133 /* read pin 02 */
134 res = pcf8575_read(&gs_handle, PCF8575_PIN_02, &level);
135 if (res != 0)
136 {
137 pcf8575_interface_debug_print("pcf8575: read failed.\n");
138 (void)pcf8575_deinit(&gs_handle);
139
140 return 1;
141 }
142 pcf8575_interface_debug_print("pcf8575: read PIN 02 is %d.\n", level);
143
144 /* read pin 03 */
145 res = pcf8575_read(&gs_handle, PCF8575_PIN_03, &level);
146 if (res != 0)
147 {
148 pcf8575_interface_debug_print("pcf8575: read failed.\n");
149 (void)pcf8575_deinit(&gs_handle);
150
151 return 1;
152 }
153 pcf8575_interface_debug_print("pcf8575: read PIN 03 is %d.\n", level);
154
155 /* write pin 04 */
157 if (res != 0)
158 {
159 pcf8575_interface_debug_print("pcf8575: write failed.\n");
160 (void)pcf8575_deinit(&gs_handle);
161
162 return 1;
163 }
164 pcf8575_interface_debug_print("pcf8575: write PIN 04 low.\n");
165
166 /* write pin 05 */
168 if (res != 0)
169 {
170 pcf8575_interface_debug_print("pcf8575: write failed.\n");
171 (void)pcf8575_deinit(&gs_handle);
172
173 return 1;
174 }
175 pcf8575_interface_debug_print("pcf8575: write PIN 05 high.\n");
176
177 /* write pin 06 */
179 if (res != 0)
180 {
181 pcf8575_interface_debug_print("pcf8575: write failed.\n");
182 (void)pcf8575_deinit(&gs_handle);
183
184 return 1;
185 }
186 pcf8575_interface_debug_print("pcf8575: write PIN 06 low.\n");
187
188 /* write pin 07 */
190 if (res != 0)
191 {
192 pcf8575_interface_debug_print("pcf8575: write failed.\n");
193 (void)pcf8575_deinit(&gs_handle);
194
195 return 1;
196 }
197 pcf8575_interface_debug_print("pcf8575: write PIN 07 high.\n");
198
199 /* read pin 10 */
200 res = pcf8575_read(&gs_handle, PCF8575_PIN_10, &level);
201 if (res != 0)
202 {
203 pcf8575_interface_debug_print("pcf8575: read failed.\n");
204 (void)pcf8575_deinit(&gs_handle);
205
206 return 1;
207 }
208 pcf8575_interface_debug_print("pcf8575: read PIN 10 is %d.\n", level);
209
210 /* read pin 11 */
211 res = pcf8575_read(&gs_handle, PCF8575_PIN_11, &level);
212 if (res != 0)
213 {
214 pcf8575_interface_debug_print("pcf8575: read failed.\n");
215 (void)pcf8575_deinit(&gs_handle);
216
217 return 1;
218 }
219 pcf8575_interface_debug_print("pcf8575: read PIN 11 is %d.\n", level);
220
221 /* read pin 12 */
222 res = pcf8575_read(&gs_handle, PCF8575_PIN_12, &level);
223 if (res != 0)
224 {
225 pcf8575_interface_debug_print("pcf8575: read failed.\n");
226 (void)pcf8575_deinit(&gs_handle);
227
228 return 1;
229 }
230 pcf8575_interface_debug_print("pcf8575: read PIN 12 is %d.\n", level);
231
232 /* read pin 13 */
233 res = pcf8575_read(&gs_handle, PCF8575_PIN_13, &level);
234 if (res != 0)
235 {
236 pcf8575_interface_debug_print("pcf8575: read failed.\n");
237 (void)pcf8575_deinit(&gs_handle);
238
239 return 1;
240 }
241 pcf8575_interface_debug_print("pcf8575: read PIN 13 is %d.\n", level);
242
243 /* write pin 14 */
245 if (res != 0)
246 {
247 pcf8575_interface_debug_print("pcf8575: write failed.\n");
248 (void)pcf8575_deinit(&gs_handle);
249
250 return 1;
251 }
252 pcf8575_interface_debug_print("pcf8575: write PIN 14 low.\n");
253
254 /* write pin 15 */
256 if (res != 0)
257 {
258 pcf8575_interface_debug_print("pcf8575: write failed.\n");
259 (void)pcf8575_deinit(&gs_handle);
260
261 return 1;
262 }
263 pcf8575_interface_debug_print("pcf8575: write PIN 15 high.\n");
264
265 /* write pin 16 */
267 if (res != 0)
268 {
269 pcf8575_interface_debug_print("pcf8575: write failed.\n");
270 (void)pcf8575_deinit(&gs_handle);
271
272 return 1;
273 }
274 pcf8575_interface_debug_print("pcf8575: write PIN 16 low.\n");
275
276 /* write pin 17 */
278 if (res != 0)
279 {
280 pcf8575_interface_debug_print("pcf8575: write failed.\n");
281 (void)pcf8575_deinit(&gs_handle);
282
283 return 1;
284 }
285 pcf8575_interface_debug_print("pcf8575: write PIN 17 high.\n");
286
287 /* delay 1000 ms */
289 }
290
291 /* finish read test */
292 pcf8575_interface_debug_print("pcf8575: finish read write test.\n");
293 (void)pcf8575_deinit(&gs_handle);
294
295 return 0;
296}
driver pcf8575 read write test header file
uint8_t pcf8575_deinit(pcf8575_handle_t *handle)
close the chip
struct pcf8575_handle_s pcf8575_handle_t
pcf8575 handle structure definition
uint8_t pcf8575_set_addr_pin(pcf8575_handle_t *handle, pcf8575_address_t addr_pin)
set the address pin
uint8_t pcf8575_write(pcf8575_handle_t *handle, pcf8575_pin_t pin, pcf8575_pin_level_t level)
write the pin
uint8_t pcf8575_read(pcf8575_handle_t *handle, pcf8575_pin_t pin, pcf8575_pin_level_t *level)
read the pin
uint8_t pcf8575_init(pcf8575_handle_t *handle)
initialize the chip
pcf8575_address_t
pcf8575 address enumeration definition
pcf8575_pin_level_t
pcf8575 pin enumeration definition
struct pcf8575_info_s pcf8575_info_t
pcf8575 information structure definition
uint8_t pcf8575_info(pcf8575_info_t *info)
get chip's information
@ PCF8575_PIN_06
@ PCF8575_PIN_17
@ PCF8575_PIN_04
@ PCF8575_PIN_16
@ PCF8575_PIN_02
@ PCF8575_PIN_03
@ PCF8575_PIN_07
@ PCF8575_PIN_01
@ PCF8575_PIN_10
@ PCF8575_PIN_05
@ PCF8575_PIN_00
@ PCF8575_PIN_14
@ PCF8575_PIN_12
@ PCF8575_PIN_13
@ PCF8575_PIN_15
@ PCF8575_PIN_11
@ PCF8575_PIN_LEVEL_LOW
@ PCF8575_PIN_LEVEL_HIGH
void pcf8575_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t pcf8575_interface_iic_write_cmd(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus write command
uint8_t pcf8575_interface_iic_init(void)
interface iic bus init
void pcf8575_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t pcf8575_interface_iic_deinit(void)
interface iic bus deinit
uint8_t pcf8575_interface_iic_read_cmd(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus read command
uint8_t pcf8575_read_write_test(pcf8575_address_t addr, uint32_t times)
read write test
uint32_t driver_version
char manufacturer_name[32]