LibDriver PCF8574
Loading...
Searching...
No Matches
driver_pcf8574_read_write_test.c
Go to the documentation of this file.
1
36
38
39static pcf8574_handle_t gs_handle;
40
50uint8_t pcf8574_read_write_test(pcf8574_address_t addr, uint32_t times)
51{
52 uint8_t res;
53 uint32_t i;
54 pcf8574_info_t info;
56
57 /* link functions */
65
66 /* pcf8574 info */
67 res = pcf8574_info(&info);
68 if (res != 0)
69 {
70 pcf8574_interface_debug_print("pcf8574: get info failed.\n");
71
72 return 1;
73 }
74 else
75 {
76 /* print chip information */
77 pcf8574_interface_debug_print("pcf8574: chip is %s.\n", info.chip_name);
78 pcf8574_interface_debug_print("pcf8574: manufacturer is %s.\n", info.manufacturer_name);
79 pcf8574_interface_debug_print("pcf8574: interface is %s.\n", info.interface);
80 pcf8574_interface_debug_print("pcf8574: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
81 pcf8574_interface_debug_print("pcf8574: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
82 pcf8574_interface_debug_print("pcf8574: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
83 pcf8574_interface_debug_print("pcf8574: max current is %0.2fmA.\n", info.max_current_ma);
84 pcf8574_interface_debug_print("pcf8574: max temperature is %0.1fC.\n", info.temperature_max);
85 pcf8574_interface_debug_print("pcf8574: min temperature is %0.1fC.\n", info.temperature_min);
86 }
87
88 /* set addr pin */
89 res = pcf8574_set_addr_pin(&gs_handle, addr);
90 if (res != 0)
91 {
92 pcf8574_interface_debug_print("pcf8574: set addr pin failed.\n");
93
94 return 1;
95 }
96
97 /* pcf8574 init */
98 res = pcf8574_init(&gs_handle);
99 if (res != 0)
100 {
101 pcf8574_interface_debug_print("pcf8574: init failed.\n");
102
103 return 1;
104 }
105
106 /* start read test */
107 pcf8574_interface_debug_print("pcf8574: start read write test.\n");
108
109 for (i = 0; i < times; i++)
110 {
111 /* read pin 0 */
112 res = pcf8574_read(&gs_handle, PCF8574_PIN_0, &level);
113 if (res != 0)
114 {
115 pcf8574_interface_debug_print("pcf8574: read failed.\n");
116 (void)pcf8574_deinit(&gs_handle);
117
118 return 1;
119 }
120 pcf8574_interface_debug_print("pcf8574: read PIN 0 is %d.\n", level);
121
122 /* read pin 1 */
123 res = pcf8574_read(&gs_handle, PCF8574_PIN_1, &level);
124 if (res != 0)
125 {
126 pcf8574_interface_debug_print("pcf8574: read failed.\n");
127 (void)pcf8574_deinit(&gs_handle);
128
129 return 1;
130 }
131 pcf8574_interface_debug_print("pcf8574: read PIN 1 is %d.\n", level);
132
133 /* read pin 2 */
134 res = pcf8574_read(&gs_handle, PCF8574_PIN_2, &level);
135 if (res != 0)
136 {
137 pcf8574_interface_debug_print("pcf8574: read failed.\n");
138 (void)pcf8574_deinit(&gs_handle);
139
140 return 1;
141 }
142 pcf8574_interface_debug_print("pcf8574: read PIN 2 is %d.\n", level);
143
144 /* read pin 3 */
145 res = pcf8574_read(&gs_handle, PCF8574_PIN_3, &level);
146 if (res != 0)
147 {
148 pcf8574_interface_debug_print("pcf8574: read failed.\n");
149 (void)pcf8574_deinit(&gs_handle);
150
151 return 1;
152 }
153 pcf8574_interface_debug_print("pcf8574: read PIN 3 is %d.\n", level);
154
155 /* write pin 4 */
157 if (res != 0)
158 {
159 pcf8574_interface_debug_print("pcf8574: write failed.\n");
160 (void)pcf8574_deinit(&gs_handle);
161
162 return 1;
163 }
164 pcf8574_interface_debug_print("pcf8574: write PIN 4 low.\n");
165
166 /* write pin 5 */
168 if (res != 0)
169 {
170 pcf8574_interface_debug_print("pcf8574: write failed.\n");
171 (void)pcf8574_deinit(&gs_handle);
172
173 return 1;
174 }
175 pcf8574_interface_debug_print("pcf8574: write PIN 5 high.\n");
176
177 /* write pin 6 */
179 if (res != 0)
180 {
181 pcf8574_interface_debug_print("pcf8574: write failed.\n");
182 (void)pcf8574_deinit(&gs_handle);
183
184 return 1;
185 }
186 pcf8574_interface_debug_print("pcf8574: write PIN 6 low.\n");
187
188 /* write pin 7 */
190 if (res != 0)
191 {
192 pcf8574_interface_debug_print("pcf8574: write failed.\n");
193 (void)pcf8574_deinit(&gs_handle);
194
195 return 1;
196 }
197 pcf8574_interface_debug_print("pcf8574: write PIN 7 high.\n");
198
199 /* delay 1000 ms */
201 }
202
203 /* finish read test */
204 pcf8574_interface_debug_print("pcf8574: finish read write test.\n");
205 (void)pcf8574_deinit(&gs_handle);
206
207 return 0;
208}
driver pcf8574 read write test header file
uint8_t pcf8574_info(pcf8574_info_t *info)
get chip's information
struct pcf8574_info_s pcf8574_info_t
pcf8574 information structure definition
uint8_t pcf8574_deinit(pcf8574_handle_t *handle)
close the chip
uint8_t pcf8574_write(pcf8574_handle_t *handle, pcf8574_pin_t pin, pcf8574_pin_level_t level)
write the pin
struct pcf8574_handle_s pcf8574_handle_t
pcf8574 handle structure definition
pcf8574_pin_level_t
pcf8574 pin enumeration definition
uint8_t pcf8574_read(pcf8574_handle_t *handle, pcf8574_pin_t pin, pcf8574_pin_level_t *level)
read the pin
uint8_t pcf8574_init(pcf8574_handle_t *handle)
initialize the chip
pcf8574_address_t
pcf8574 address enumeration definition
uint8_t pcf8574_set_addr_pin(pcf8574_handle_t *handle, pcf8574_address_t addr_pin)
set the address pin
@ PCF8574_PIN_LEVEL_HIGH
@ PCF8574_PIN_LEVEL_LOW
@ PCF8574_PIN_0
@ PCF8574_PIN_3
@ PCF8574_PIN_4
@ PCF8574_PIN_6
@ PCF8574_PIN_7
@ PCF8574_PIN_5
@ PCF8574_PIN_1
@ PCF8574_PIN_2
void pcf8574_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t pcf8574_interface_iic_init(void)
interface iic bus init
void pcf8574_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t pcf8574_interface_iic_deinit(void)
interface iic bus deinit
uint8_t pcf8574_interface_iic_read_cmd(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus read command
uint8_t pcf8574_interface_iic_write_cmd(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus write command
uint8_t pcf8574_read_write_test(pcf8574_address_t addr, uint32_t times)
read write test
uint32_t driver_version
char manufacturer_name[32]