LibDriver AT24CXX  2.0.0
AT24CXX full-featured driver
driver_at24cxx_read_test.c
Go to the documentation of this file.
1 
39 #include <stdlib.h>
40 
41 static at24cxx_handle_t gs_handle;
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
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
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
at24cxx handle structure definition
at24cxx information structure definition
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]