LibDriver W25QXX
Loading...
Searching...
No Matches
driver_w25qxx_advance.c
Go to the documentation of this file.
1
36
38
39static w25qxx_handle_t gs_handle;
40
51uint8_t w25qxx_advance_init(w25qxx_type_t type, w25qxx_interface_t interface, w25qxx_bool_t dual_quad_spi_enable)
52{
53 uint8_t res;
54
55 /* link interface function */
63
64 /* set chip type */
65 res = w25qxx_set_type(&gs_handle, type);
66 if (res != 0)
67 {
68 w25qxx_interface_debug_print("w25qxx: set type failed.\n");
69
70 return 1;
71 }
72
73 /* set chip interface */
74 res = w25qxx_set_interface(&gs_handle, interface);
75 if (res != 0)
76 {
77 w25qxx_interface_debug_print("w25qxx: set interface failed.\n");
78
79 return 1;
80 }
81
82 /* set dual quad spi */
83 res = w25qxx_set_dual_quad_spi(&gs_handle, dual_quad_spi_enable);
84 if (res != 0)
85 {
86 w25qxx_interface_debug_print("w25qxx: set dual quad spi failed.\n");
87 (void)w25qxx_deinit(&gs_handle);
88
89 return 1;
90 }
91
92 /* chip init */
93 res = w25qxx_init(&gs_handle);
94 if (res != 0)
95 {
96 w25qxx_interface_debug_print("w25qxx: init failed.\n");
97
98 return 1;
99 }
100 else
101 {
102 if (type >= W25Q256)
103 {
105 if (res != 0)
106 {
107 w25qxx_interface_debug_print("w25qxx: set address mode failed.\n");
108 (void)w25qxx_deinit(&gs_handle);
109
110 return 1;
111 }
112 }
113
114 return 0;
115 }
116}
117
126{
127 if (w25qxx_deinit(&gs_handle) != 0)
128 {
129 return 1;
130 }
131 else
132 {
133 return 0;
134 }
135}
136
147uint8_t w25qxx_advance_write(uint32_t addr, uint8_t *data, uint32_t len)
148{
149 if (w25qxx_write(&gs_handle, addr, data, len) != 0)
150 {
151 return 1;
152 }
153 else
154 {
155 return 0;
156 }
157}
158
169uint8_t w25qxx_advance_read(uint32_t addr, uint8_t *data, uint32_t len)
170{
171 if (w25qxx_read(&gs_handle, addr, data, len) != 0)
172 {
173 return 1;
174 }
175 else
176 {
177 return 0;
178 }
179}
180
189{
190 if (w25qxx_power_down(&gs_handle) != 0)
191 {
192 return 1;
193 }
194 else
195 {
196 return 0;
197 }
198}
199
208{
209 if (w25qxx_release_power_down(&gs_handle) != 0)
210 {
211 return 1;
212 }
213 else
214 {
215 return 0;
216 }
217}
218
227{
228 if (w25qxx_chip_erase(&gs_handle) != 0)
229 {
230 return 1;
231 }
232 else
233 {
234 return 0;
235 }
236}
237
247uint8_t w25qxx_advance_get_id(uint8_t *manufacturer, uint8_t *device_id)
248{
249 if (w25qxx_get_manufacturer_device_id(&gs_handle, manufacturer, device_id) != 0)
250 {
251 return 1;
252 }
253 else
254 {
255 return 0;
256 }
257}
258
269uint8_t w25qxx_advance_page_program(uint32_t addr, uint8_t *data, uint16_t len)
270{
271 if (w25qxx_page_program(&gs_handle, addr, data, len) != 0)
272 {
273 return 1;
274 }
275 else
276 {
277 return 0;
278 }
279}
280
289uint8_t w25qxx_advance_sector_erase_4k(uint32_t addr)
290{
291 if (w25qxx_sector_erase_4k(&gs_handle, addr) != 0)
292 {
293 return 1;
294 }
295 else
296 {
297 return 0;
298 }
299}
300
309uint8_t w25qxx_advance_block_erase_32k(uint32_t addr)
310{
311 if (w25qxx_block_erase_32k(&gs_handle, addr) != 0)
312 {
313 return 1;
314 }
315 else
316 {
317 return 0;
318 }
319}
320
329uint8_t w25qxx_advance_block_erase_64k(uint32_t addr)
330{
331 if (w25qxx_block_erase_64k(&gs_handle, addr) != 0)
332 {
333 return 1;
334 }
335 else
336 {
337 return 0;
338 }
339}
340
351uint8_t w25qxx_advance_fast_read(uint32_t addr, uint8_t *data, uint32_t len)
352{
353 if (w25qxx_fast_read(&gs_handle, addr, data, len) != 0)
354 {
355 return 1;
356 }
357 else
358 {
359 return 0;
360 }
361}
362
373uint8_t w25qxx_advance_only_spi_read(uint32_t addr, uint8_t *data, uint32_t len)
374{
375 if (w25qxx_only_spi_read(&gs_handle, addr, data, len) != 0)
376 {
377 return 1;
378 }
379 else
380 {
381 return 0;
382 }
383}
384
395uint8_t w25qxx_advance_only_spi_fast_read_dual_output(uint32_t addr, uint8_t *data, uint32_t len)
396{
397 if (w25qxx_fast_read_dual_output(&gs_handle, addr, data, len) != 0)
398 {
399 return 1;
400 }
401 else
402 {
403 return 0;
404 }
405}
406
417uint8_t w25qxx_advance_only_spi_fast_read_quad_output(uint32_t addr, uint8_t *data, uint32_t len)
418{
419 if (w25qxx_fast_read_quad_output(&gs_handle, addr, data, len) != 0)
420 {
421 return 1;
422 }
423 else
424 {
425 return 0;
426 }
427}
428
439uint8_t w25qxx_advance_only_spi_fast_read_dual_io(uint32_t addr, uint8_t *data, uint32_t len)
440{
441 if (w25qxx_fast_read_dual_io(&gs_handle, addr, data, len) != 0)
442 {
443 return 1;
444 }
445 else
446 {
447 return 0;
448 }
449}
450
461uint8_t w25qxx_advance_only_spi_fast_read_quad_io(uint32_t addr, uint8_t *data, uint32_t len)
462{
463 if (w25qxx_fast_read_quad_io(&gs_handle, addr, data, len) != 0)
464 {
465 return 1;
466 }
467 else
468 {
469 return 0;
470 }
471}
472
483uint8_t w25qxx_advance_only_spi_word_read_quad_io(uint32_t addr, uint8_t *data, uint32_t len)
484{
485 if (w25qxx_word_read_quad_io(&gs_handle, addr, data, len) != 0)
486 {
487 return 1;
488 }
489 else
490 {
491 return 0;
492 }
493}
494
505uint8_t w25qxx_advance_only_spi_octal_word_read_quad_io(uint32_t addr, uint8_t *data, uint32_t len)
506{
507 if (w25qxx_octal_word_read_quad_io(&gs_handle, addr, data, len) != 0)
508 {
509 return 1;
510 }
511 else
512 {
513 return 0;
514 }
515}
516
527uint8_t w25qxx_advance_only_spi_page_program_quad_input(uint32_t addr, uint8_t *data, uint16_t len)
528{
529 if (w25qxx_page_program_quad_input(&gs_handle, addr, data, len) != 0)
530 {
531 return 1;
532 }
533 else
534 {
535 return 0;
536 }
537}
538
547uint8_t w25qxx_advance_get_status1(uint8_t *status)
548{
549 if (w25qxx_get_status1(&gs_handle, status) != 0)
550 {
551 return 1;
552 }
553 else
554 {
555 return 0;
556 }
557}
558
567uint8_t w25qxx_advance_get_status2(uint8_t *status)
568{
569 if (w25qxx_get_status2(&gs_handle, status) != 0)
570 {
571 return 1;
572 }
573 else
574 {
575 return 0;
576 }
577}
578
587uint8_t w25qxx_advance_get_status3(uint8_t *status)
588{
589 if (w25qxx_get_status3(&gs_handle, status) != 0)
590 {
591 return 1;
592 }
593 else
594 {
595 return 0;
596 }
597}
598
607uint8_t w25qxx_advance_set_status1(uint8_t status)
608{
609 if (w25qxx_set_status1(&gs_handle, status) != 0)
610 {
611 return 1;
612 }
613 else
614 {
615 return 0;
616 }
617}
618
627uint8_t w25qxx_advance_set_status2(uint8_t status)
628{
629 if (w25qxx_set_status2(&gs_handle, status) != 0)
630 {
631 return 1;
632 }
633 else
634 {
635 return 0;
636 }
637}
638
647uint8_t w25qxx_advance_set_status3(uint8_t status)
648{
649 if (w25qxx_set_status3(&gs_handle, status) != 0)
650 {
651 return 1;
652 }
653 else
654 {
655 return 0;
656 }
657}
658
668uint8_t w25qxx_advance_only_spi_get_manufacturer_device_id_dual_io(uint8_t *manufacturer, uint8_t *device_id)
669{
670 if (w25qxx_get_manufacturer_device_id_dual_io(&gs_handle, manufacturer, device_id) != 0)
671 {
672 return 1;
673 }
674 else
675 {
676 return 0;
677 }
678}
679
689uint8_t w25qxx_advance_only_spi_get_manufacturer_device_id_quad_io(uint8_t *manufacturer, uint8_t *device_id)
690{
691 if (w25qxx_get_manufacturer_device_id_quad_io(&gs_handle, manufacturer, device_id) != 0)
692 {
693 return 1;
694 }
695 else
696 {
697 return 0;
698 }
699}
700
710uint8_t w25qxx_advance_get_get_jedec_id(uint8_t *manufacturer, uint8_t device_id[2])
711{
712 if (w25qxx_get_jedec_id(&gs_handle, manufacturer, device_id) != 0)
713 {
714 return 1;
715 }
716 else
717 {
718 return 0;
719 }
720}
721
730{
731 if (w25qxx_global_block_lock(&gs_handle) != 0)
732 {
733 return 1;
734 }
735 else
736 {
737 return 0;
738 }
739}
740
749{
750 if (w25qxx_global_block_unlock(&gs_handle) != 0)
751 {
752 return 1;
753 }
754 else
755 {
756 return 0;
757 }
758}
759
769{
770 if (w25qxx_individual_block_lock(&gs_handle, addr) != 0)
771 {
772 return 1;
773 }
774 else
775 {
776 return 0;
777 }
778}
779
789{
790 if (w25qxx_individual_block_unlock(&gs_handle, addr) != 0)
791 {
792 return 1;
793 }
794 else
795 {
796 return 0;
797 }
798}
799
809uint8_t w25qxx_advance_read_block_lock(uint32_t addr, uint8_t *value)
810{
811 if (w25qxx_read_block_lock(&gs_handle, addr, value) != 0)
812 {
813 return 1;
814 }
815 else
816 {
817 return 0;
818 }
819}
820
829{
830 if (w25qxx_enable_reset(&gs_handle) != 0)
831 {
832 return 1;
833 }
834 if (w25qxx_reset_device(&gs_handle) != 0)
835 {
836 return 1;
837 }
838 else
839 {
840 return 0;
841 }
842}
843
854{
855 if (w25qxx_set_read_parameters(&gs_handle, dummy, length) != 0)
856 {
857 return 1;
858 }
859 else
860 {
861 return 0;
862 }
863}
864
874{
875 if (w25qxx_get_unique_id(&gs_handle, id) != 0)
876 {
877 return 1;
878 }
879 else
880 {
881 return 0;
882 }
883}
884
893uint8_t w25qxx_advance_only_spi_get_sfdp(uint8_t sfdp[256])
894{
895 if (w25qxx_get_sfdp(&gs_handle, sfdp) != 0)
896 {
897 return 1;
898 }
899 else
900 {
901 return 0;
902 }
903}
904
915{
916 if (w25qxx_erase_security_register(&gs_handle, num) != 0)
917 {
918 return 1;
919 }
920 if (w25qxx_program_security_register(&gs_handle, num, data) != 0)
921 {
922 return 1;
923 }
924 else
925 {
926 return 0;
927 }
928}
929
940{
941 if (w25qxx_read_security_register(&gs_handle, num, data) != 0)
942 {
943 return 1;
944 }
945 else
946 {
947 return 0;
948 }
949}
950
960{
961 if (w25qxx_set_burst_with_wrap(&gs_handle, wrap) != 0)
962 {
963 return 1;
964 }
965 else
966 {
967 return 0;
968 }
969}
driver w25qxx advance header file
uint8_t w25qxx_get_unique_id(w25qxx_handle_t *handle, uint8_t id[8])
get the unique id
uint8_t w25qxx_get_manufacturer_device_id_dual_io(w25qxx_handle_t *handle, uint8_t *manufacturer, uint8_t *device_id)
get the manufacturer && device id information with dual io
uint8_t w25qxx_page_program_quad_input(w25qxx_handle_t *handle, uint32_t addr, uint8_t *data, uint16_t len)
quad page program with quad input
uint8_t w25qxx_get_sfdp(w25qxx_handle_t *handle, uint8_t sfdp[256])
get the sfdp
uint8_t w25qxx_set_status1(w25qxx_handle_t *handle, uint8_t status)
set the status 1
uint8_t w25qxx_reset_device(w25qxx_handle_t *handle)
reset the device
w25qxx_qspi_read_wrap_length_t
w25qxx qspi read wrap length enumeration definition
uint8_t w25qxx_read_security_register(w25qxx_handle_t *handle, w25qxx_security_register_t num, uint8_t data[256])
read the security register
uint8_t w25qxx_program_security_register(w25qxx_handle_t *handle, w25qxx_security_register_t num, uint8_t data[256])
program the security register
uint8_t w25qxx_individual_block_lock(w25qxx_handle_t *handle, uint32_t addr)
lock the individual block
uint8_t w25qxx_read_block_lock(w25qxx_handle_t *handle, uint32_t addr, uint8_t *value)
read the block lock
uint8_t w25qxx_get_manufacturer_device_id_quad_io(w25qxx_handle_t *handle, uint8_t *manufacturer, uint8_t *device_id)
get the manufacturer && device id information with quad io
uint8_t w25qxx_global_block_unlock(w25qxx_handle_t *handle)
unlock the whole block
w25qxx_qspi_read_dummy_t
w25qxx qspi read dummy enumeration definition
uint8_t w25qxx_fast_read_dual_output(w25qxx_handle_t *handle, uint32_t addr, uint8_t *data, uint32_t len)
read with dual output in the fast mode
uint8_t w25qxx_individual_block_unlock(w25qxx_handle_t *handle, uint32_t addr)
unlock the individual block
w25qxx_security_register_t
w25qxx security register enumeration definition
uint8_t w25qxx_octal_word_read_quad_io(w25qxx_handle_t *handle, uint32_t addr, uint8_t *data, uint32_t len)
octal word read with quad io
uint8_t w25qxx_get_jedec_id(w25qxx_handle_t *handle, uint8_t *manufacturer, uint8_t device_id[2])
get the jedec id information
w25qxx_burst_wrap_t
w25qxx burst wrap enumeration definition
uint8_t w25qxx_get_status3(w25qxx_handle_t *handle, uint8_t *status)
get the status 3
uint8_t w25qxx_set_read_parameters(w25qxx_handle_t *handle, w25qxx_qspi_read_dummy_t dummy, w25qxx_qspi_read_wrap_length_t length)
set the read parameters
uint8_t w25qxx_get_status2(w25qxx_handle_t *handle, uint8_t *status)
get the status 2
uint8_t w25qxx_get_status1(w25qxx_handle_t *handle, uint8_t *status)
get the status 1
uint8_t w25qxx_set_status2(w25qxx_handle_t *handle, uint8_t status)
set the status 2
uint8_t w25qxx_global_block_lock(w25qxx_handle_t *handle)
lock the whole block
uint8_t w25qxx_enable_reset(w25qxx_handle_t *handle)
enable the reset
uint8_t w25qxx_fast_read_quad_io(w25qxx_handle_t *handle, uint32_t addr, uint8_t *data, uint32_t len)
read with quad io in the fast mode
uint8_t w25qxx_set_burst_with_wrap(w25qxx_handle_t *handle, w25qxx_burst_wrap_t wrap)
set the burst with wrap
uint8_t w25qxx_fast_read_dual_io(w25qxx_handle_t *handle, uint32_t addr, uint8_t *data, uint32_t len)
read with dual io in the fast mode
uint8_t w25qxx_word_read_quad_io(w25qxx_handle_t *handle, uint32_t addr, uint8_t *data, uint32_t len)
word read with quad io
uint8_t w25qxx_set_status3(w25qxx_handle_t *handle, uint8_t status)
set the status 3
uint8_t w25qxx_erase_security_register(w25qxx_handle_t *handle, w25qxx_security_register_t num)
erase the security register
uint8_t w25qxx_fast_read_quad_output(w25qxx_handle_t *handle, uint32_t addr, uint8_t *data, uint32_t len)
read with quad output in the fast mode
uint8_t w25qxx_chip_erase(w25qxx_handle_t *handle)
erase the chip
uint8_t w25qxx_release_power_down(w25qxx_handle_t *handle)
release power down
uint8_t w25qxx_only_spi_read(w25qxx_handle_t *handle, uint32_t addr, uint8_t *data, uint32_t len)
read only in the spi interface
uint8_t w25qxx_block_erase_32k(w25qxx_handle_t *handle, uint32_t addr)
erase the 32k block
uint8_t w25qxx_set_interface(w25qxx_handle_t *handle, w25qxx_interface_t interface)
set the chip interface
struct w25qxx_handle_s w25qxx_handle_t
w25qxx handle structure definition
uint8_t w25qxx_page_program(w25qxx_handle_t *handle, uint32_t addr, uint8_t *data, uint16_t len)
page program
uint8_t w25qxx_set_dual_quad_spi(w25qxx_handle_t *handle, w25qxx_bool_t enable)
enable or disable the dual quad spi
w25qxx_type_t
w25qxx type enumeration definition
uint8_t w25qxx_init(w25qxx_handle_t *handle)
initialize the chip
uint8_t w25qxx_get_manufacturer_device_id(w25qxx_handle_t *handle, uint8_t *manufacturer, uint8_t *device_id)
get the manufacturer && device id information
uint8_t w25qxx_sector_erase_4k(w25qxx_handle_t *handle, uint32_t addr)
erase the 4k sector
uint8_t w25qxx_deinit(w25qxx_handle_t *handle)
close the chip
uint8_t w25qxx_set_type(w25qxx_handle_t *handle, w25qxx_type_t type)
set the chip type
uint8_t w25qxx_write(w25qxx_handle_t *handle, uint32_t addr, uint8_t *data, uint32_t len)
write data
uint8_t w25qxx_fast_read(w25qxx_handle_t *handle, uint32_t addr, uint8_t *data, uint32_t len)
read in the fast mode
w25qxx_interface_t
w25qxx interface enumeration definition
uint8_t w25qxx_set_address_mode(w25qxx_handle_t *handle, w25qxx_address_mode_t mode)
set the chip address mode
uint8_t w25qxx_power_down(w25qxx_handle_t *handle)
power down
uint8_t w25qxx_read(w25qxx_handle_t *handle, uint32_t addr, uint8_t *data, uint32_t len)
read data
uint8_t w25qxx_block_erase_64k(w25qxx_handle_t *handle, uint32_t addr)
erase the 64k block
w25qxx_bool_t
w25qxx bool enumeration definition
@ W25Q256
@ W25QXX_ADDRESS_MODE_4_BYTE
uint8_t w25qxx_advance_read(uint32_t addr, uint8_t *data, uint32_t len)
advance example read
uint8_t w25qxx_advance_only_spi_read_security_register(w25qxx_security_register_t num, uint8_t data[256])
advance example read the security register only in the spi interface
uint8_t w25qxx_advance_get_id(uint8_t *manufacturer, uint8_t *device_id)
advance example get the manufacturer && device id information
uint8_t w25qxx_advance_reset(void)
advance example reset
uint8_t w25qxx_advance_chip_erase(void)
advance example chip erase
uint8_t w25qxx_advance_only_spi_set_burst_with_wrap(w25qxx_burst_wrap_t wrap)
advance example set the burst with wrap only in the spi interface
uint8_t w25qxx_advance_global_block_lock(void)
advance example global block lock
uint8_t w25qxx_advance_get_status3(uint8_t *status)
advance example get the status 3
uint8_t w25qxx_advance_only_spi_fast_read_dual_output(uint32_t addr, uint8_t *data, uint32_t len)
advance example fast read only in the spi dual output interface
uint8_t w25qxx_advance_only_spi_get_unique_id(uint8_t id[8])
advance example get the unique id only in the spi interface
uint8_t w25qxx_advance_only_spi_fast_read_quad_io(uint32_t addr, uint8_t *data, uint32_t len)
advance example fast read only in the spi quad io interface
uint8_t w25qxx_advance_page_program(uint32_t addr, uint8_t *data, uint16_t len)
advance example page program
uint8_t w25qxx_advance_init(w25qxx_type_t type, w25qxx_interface_t interface, w25qxx_bool_t dual_quad_spi_enable)
advance example init
uint8_t w25qxx_advance_only_spi_fast_read_dual_io(uint32_t addr, uint8_t *data, uint32_t len)
advance example fast read only in the spi dual io interface
uint8_t w25qxx_advance_get_status1(uint8_t *status)
advance example get the status 1
uint8_t w25qxx_advance_power_down(void)
advance example power down
uint8_t w25qxx_advance_set_status1(uint8_t status)
advance example set the status 1
uint8_t w25qxx_advance_only_spi_get_manufacturer_device_id_quad_io(uint8_t *manufacturer, uint8_t *device_id)
advance example get the manufacturer && device id information only in the spi quad io interface
uint8_t w25qxx_advance_write(uint32_t addr, uint8_t *data, uint32_t len)
advance example write
uint8_t w25qxx_advance_individual_block_unlock(uint32_t addr)
advance example unlock the individual block
uint8_t w25qxx_advance_global_block_unlock(void)
advance example global block unlock
uint8_t w25qxx_advance_fast_read(uint32_t addr, uint8_t *data, uint32_t len)
advance example read in the fast mode
uint8_t w25qxx_advance_only_spi_octal_word_read_quad_io(uint32_t addr, uint8_t *data, uint32_t len)
advance example octal word read only in the spi quad io interface
uint8_t w25qxx_advance_wake_up(void)
advance example wake up
uint8_t w25qxx_advance_sector_erase_4k(uint32_t addr)
advance example erase the 4k sector
uint8_t w25qxx_advance_only_spi_get_sfdp(uint8_t sfdp[256])
advance example get the sfdp only in the spi interface
uint8_t w25qxx_advance_set_status2(uint8_t status)
advance example set the status 2
uint8_t w25qxx_advance_only_spi_write_security_register(w25qxx_security_register_t num, uint8_t data[256])
advance example write the security register only in the spi interface
uint8_t w25qxx_advance_individual_block_lock(uint32_t addr)
advance example lock the individual block
uint8_t w25qxx_advance_set_status3(uint8_t status)
advance example set the status 3
uint8_t w25qxx_advance_only_spi_get_manufacturer_device_id_dual_io(uint8_t *manufacturer, uint8_t *device_id)
advance example get the manufacturer && device id information only in the spi dual io interface
uint8_t w25qxx_advance_read_block_lock(uint32_t addr, uint8_t *value)
advance example read the block lock
uint8_t w25qxx_advance_only_spi_read(uint32_t addr, uint8_t *data, uint32_t len)
advance example read only in the spi interface
uint8_t w25qxx_advance_only_spi_word_read_quad_io(uint32_t addr, uint8_t *data, uint32_t len)
advance example word read only in the spi quad io interface
uint8_t w25qxx_advance_get_get_jedec_id(uint8_t *manufacturer, uint8_t device_id[2])
advance example get the jedec id information
uint8_t w25qxx_advance_only_qspi_set_read_parameters(w25qxx_qspi_read_dummy_t dummy, w25qxx_qspi_read_wrap_length_t length)
advance example set the read parameters only in the qspi interface
uint8_t w25qxx_advance_only_spi_page_program_quad_input(uint32_t addr, uint8_t *data, uint16_t len)
advance example quad page program only in the spi quad input interface
uint8_t w25qxx_advance_block_erase_64k(uint32_t addr)
advance example erase the 64k block
uint8_t w25qxx_advance_block_erase_32k(uint32_t addr)
advance example erase the 32k block
uint8_t w25qxx_advance_deinit(void)
advance example deinit
uint8_t w25qxx_advance_get_status2(uint8_t *status)
advance example get the status 2
uint8_t w25qxx_advance_only_spi_fast_read_quad_output(uint32_t addr, uint8_t *data, uint32_t len)
advance example fast read only in the spi quad output interface
uint8_t w25qxx_interface_spi_qspi_deinit(void)
interface spi qspi bus deinit
uint8_t w25qxx_interface_spi_qspi_init(void)
interface spi qspi bus init
void w25qxx_interface_delay_us(uint32_t us)
interface delay us
uint8_t w25qxx_interface_spi_qspi_write_read(uint8_t instruction, uint8_t instruction_line, uint32_t address, uint8_t address_line, uint8_t address_len, uint32_t alternate, uint8_t alternate_line, uint8_t alternate_len, uint8_t dummy, uint8_t *in_buf, uint32_t in_len, uint8_t *out_buf, uint32_t out_len, uint8_t data_line)
interface spi qspi bus write read
void w25qxx_interface_debug_print(const char *const fmt,...)
interface print format data
void w25qxx_interface_delay_ms(uint32_t ms)
interface delay ms