LibDriver AT24CXX
Loading...
Searching...
No Matches
driver_at24cxx_read_test.c
Go to the documentation of this file.
1
37
39#include <stdlib.h>
40
41static at24cxx_handle_t gs_handle;
42
53{
54 uint8_t res, i, j;
55 uint8_t buf[12];
56 uint8_t buf_check[12];
57 uint32_t inc;
58 at24cxx_info_t info;
59
60 /* link interface function */
70
71 /* get information */
72 res = at24cxx_info(&info);
73 if (res != 0)
74 {
75 at24cxx_interface_debug_print("at24cxx: get info failed.\n");
76
77 return 1;
78 }
79 else
80 {
81 /* print chip information */
82 at24cxx_interface_debug_print("at24cxx: chip is %s.\n", info.chip_name);
83 at24cxx_interface_debug_print("at24cxx: manufacturer is %s.\n", info.manufacturer_name);
84 at24cxx_interface_debug_print("at24cxx: interface is %s.\n", info.interface);
85 at24cxx_interface_debug_print("at24cxx: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
86 at24cxx_interface_debug_print("at24cxx: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
87 at24cxx_interface_debug_print("at24cxx: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
88 at24cxx_interface_debug_print("at24cxx: max current is %0.2fmA.\n", info.max_current_ma);
89 at24cxx_interface_debug_print("at24cxx: max temperature is %0.1fC.\n", info.temperature_max);
90 at24cxx_interface_debug_print("at24cxx: min temperature is %0.1fC.\n", info.temperature_min);
91 }
92
93 /* set chip type */
94 res = at24cxx_set_type(&gs_handle, type);
95 if (res != 0)
96 {
97 at24cxx_interface_debug_print("at24cxx: set type failed.\n");
98
99 return 1;
100 }
101
102 /* set iic addr pin */
103 res = at24cxx_set_addr_pin(&gs_handle, address);
104 if (res != 0)
105 {
106 at24cxx_interface_debug_print("at24cxx: set address pin failed.\n");
107
108 return 1;
109 }
110
111 /* at24cxx init */
112 res = at24cxx_init(&gs_handle);
113 if (res != 0)
114 {
115 at24cxx_interface_debug_print("at24cxx: init failed.\n");
116
117 return 1;
118 }
119
120 /* start read test */
121 at24cxx_interface_debug_print("at24cxx: start read test.\n");
122 inc = ((uint32_t)type + 1) / 8;
123 for (i = 0; i < 8; i++)
124 {
125 for (j = 0; j < 12; j++)
126 {
127 buf[j] = (uint8_t)(rand() % 256);
128 }
129
130 /* write data */
131 res = at24cxx_write(&gs_handle, i*inc, (uint8_t *)buf, 12);
132 if (res != 0)
133 {
134 at24cxx_interface_debug_print("at24cxx: write failed.\n");
135 (void)at24cxx_deinit(&gs_handle);
136
137 return 1;
138 }
139
140 /* read data */
141 res = at24cxx_read(&gs_handle, i*inc, (uint8_t *)buf_check, 12);
142 if (res != 0)
143 {
144 at24cxx_interface_debug_print("at24cxx: read failed.\n");
145 (void)at24cxx_deinit(&gs_handle);
146
147 return 1;
148 }
149 for (j = 0; j < 12; j++)
150 {
151 /* check data */
152 if (buf[j] != buf_check[j])
153 {
154 at24cxx_interface_debug_print("at24cxx: check error.\n");
155 (void)at24cxx_deinit(&gs_handle);
156
157 return 1;
158 }
159 }
160 at24cxx_interface_debug_print("at24cxx: 0x%04X read write test passed.\n", i*inc);
161 }
162
163 /* finish read test */
164 at24cxx_interface_debug_print("at24cxx: finish read test.\n");
165 (void)at24cxx_deinit(&gs_handle);
166
167 return 0;
168}
driver at24cxx read test header file
uint8_t at24cxx_set_type(at24cxx_handle_t *handle, at24cxx_t type)
set the chip type
uint8_t at24cxx_init(at24cxx_handle_t *handle)
initialize the chip
struct at24cxx_info_s at24cxx_info_t
at24cxx information structure definition
uint8_t at24cxx_read(at24cxx_handle_t *handle, uint32_t address, uint8_t *buf, uint16_t len)
read bytes from the chip
at24cxx_t
at24cxx type enumeration definition
uint8_t at24cxx_deinit(at24cxx_handle_t *handle)
close the chip
struct at24cxx_handle_s at24cxx_handle_t
at24cxx handle structure definition
uint8_t at24cxx_write(at24cxx_handle_t *handle, uint32_t address, uint8_t *buf, uint16_t len)
write bytes to the chip
at24cxx_address_t
at24cxx address enumeration definition
uint8_t at24cxx_info(at24cxx_info_t *info)
get chip's information
uint8_t at24cxx_set_addr_pin(at24cxx_handle_t *handle, at24cxx_address_t addr_pin)
set the chip address pin
uint8_t at24cxx_interface_iic_init(void)
interface iic bus init
uint8_t at24cxx_interface_iic_write_address16(uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len)
interface iic bus write with 16 bits register address
uint8_t at24cxx_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t at24cxx_interface_iic_deinit(void)
interface iic bus deinit
void at24cxx_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t at24cxx_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
void at24cxx_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t at24cxx_interface_iic_read_address16(uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len)
interface iic bus read with 16 bits register address
uint8_t at24cxx_read_test(at24cxx_t type, at24cxx_address_t address)
read test
uint32_t driver_version
char manufacturer_name[32]