LibDriver MB85RSXX
Loading...
Searching...
No Matches
driver_mb85rsxx_read_test.c
Go to the documentation of this file.
1
36
38#include <stdlib.h>
39
40static mb85rsxx_handle_t gs_handle;
41
51{
52 uint8_t res, i, j;
53 uint8_t status;
54 uint8_t manufacturer_id;
55 uint8_t continuation_code;
56 uint8_t product_id1;
57 uint8_t product_id2;
58 uint8_t buf[12];
59 uint8_t buf_check[12];
60 uint32_t inc;
61 mb85rsxx_info_t info;
62
63 /* link interface function */
70
71 /* get information */
72 res = mb85rsxx_info(&info);
73 if (res != 0)
74 {
75 mb85rsxx_interface_debug_print("mb85rsxx: get info failed.\n");
76
77 return 1;
78 }
79 else
80 {
81 /* print chip information */
82 mb85rsxx_interface_debug_print("mb85rsxx: chip is %s.\n", info.chip_name);
83 mb85rsxx_interface_debug_print("mb85rsxx: manufacturer is %s.\n", info.manufacturer_name);
84 mb85rsxx_interface_debug_print("mb85rsxx: interface is %s.\n", info.interface);
85 mb85rsxx_interface_debug_print("mb85rsxx: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
86 mb85rsxx_interface_debug_print("mb85rsxx: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
87 mb85rsxx_interface_debug_print("mb85rsxx: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
88 mb85rsxx_interface_debug_print("mb85rsxx: max current is %0.2fmA.\n", info.max_current_ma);
89 mb85rsxx_interface_debug_print("mb85rsxx: max temperature is %0.1fC.\n", info.temperature_max);
90 mb85rsxx_interface_debug_print("mb85rsxx: min temperature is %0.1fC.\n", info.temperature_min);
91 }
92
93 /* set chip type */
94 res = mb85rsxx_set_type(&gs_handle, type);
95 if (res != 0)
96 {
97 mb85rsxx_interface_debug_print("mb85rsxx: set type failed.\n");
98
99 return 1;
100 }
101
102 /* mb85rsxx init */
103 res = mb85rsxx_init(&gs_handle);
104 if (res != 0)
105 {
106 mb85rsxx_interface_debug_print("mb85rsxx: init failed.\n");
107
108 return 1;
109 }
110
111#if (MB85RSXX_USE_DEVICE_ID != 0)
112 /* get device id */
113 res = mb85rsxx_get_device_id(&gs_handle, &manufacturer_id, &continuation_code, &product_id1, &product_id2);
114 if (res != 0)
115 {
116 mb85rsxx_interface_debug_print("mb85rsxx: get device id failed.\n");
117 (void)mb85rsxx_deinit(&gs_handle);
118
119 return 1;
120 }
121 mb85rsxx_interface_debug_print("mb85rsxx: manufacturer id is 0x%02X.\n", manufacturer_id);
122 mb85rsxx_interface_debug_print("mb85rsxx: continuation code is 0x%02X.\n", continuation_code);
123 mb85rsxx_interface_debug_print("mb85rsxx: product id1 is 0x%02X.\n", product_id1);
124 mb85rsxx_interface_debug_print("mb85rsxx: product id2 is 0x%02X.\n", product_id2);
125#endif
126
127 /* get status */
128 res = mb85rsxx_get_status(&gs_handle, &status);
129 if (res != 0)
130 {
131 mb85rsxx_interface_debug_print("mb85rsxx: get status failed.\n");
132 (void)mb85rsxx_deinit(&gs_handle);
133
134 return 1;
135 }
136 mb85rsxx_interface_debug_print("mb85rsxx: status 0x%02X.\n", status);
137
138 /* start read test */
139 mb85rsxx_interface_debug_print("mb85rsxx: start read test.\n");
140 inc = (uint32_t)type / 8;
141 for (i = 0; i < 8; i++)
142 {
143 for (j = 0; j < 12; j++)
144 {
145 buf[j] = (uint8_t)(rand() % 256);
146 }
147
148 /* write data */
149 res = mb85rsxx_write(&gs_handle, i * inc, (uint8_t *)buf, 12);
150 if (res != 0)
151 {
152 mb85rsxx_interface_debug_print("mb85rsxx: write failed.\n");
153 (void)mb85rsxx_deinit(&gs_handle);
154
155 return 1;
156 }
157
158 /* read data */
159 res = mb85rsxx_read(&gs_handle, i * inc, (uint8_t *)buf_check, 12);
160 if (res != 0)
161 {
162 mb85rsxx_interface_debug_print("mb85rsxx: read failed.\n");
163 (void)mb85rsxx_deinit(&gs_handle);
164
165 return 1;
166 }
167 for (j = 0; j < 12; j++)
168 {
169 /* check data */
170 if (buf[j] != buf_check[j])
171 {
172 mb85rsxx_interface_debug_print("mb85rsxx: check error.\n");
173 (void)mb85rsxx_deinit(&gs_handle);
174
175 return 1;
176 }
177 }
178 mb85rsxx_interface_debug_print("mb85rsxx: 0x%04X read write test passed.\n", i * inc);
179 }
180
181 /* finish read test */
182 mb85rsxx_interface_debug_print("mb85rsxx: finish read test.\n");
183 (void)mb85rsxx_deinit(&gs_handle);
184
185 return 0;
186}
driver mb85rsxx read test header file
uint8_t mb85rsxx_info(mb85rsxx_info_t *info)
get chip's information
uint8_t mb85rsxx_get_device_id(mb85rsxx_handle_t *handle, uint8_t *manufacturer_id, uint8_t *continuation_code, uint8_t *product_id1, uint8_t *product_id2)
get device id
uint8_t mb85rsxx_write(mb85rsxx_handle_t *handle, uint32_t address, uint8_t *buf, uint16_t len)
write bytes to the chip
uint8_t mb85rsxx_read(mb85rsxx_handle_t *handle, uint32_t address, uint8_t *buf, uint16_t len)
read bytes from the chip
struct mb85rsxx_info_s mb85rsxx_info_t
mb85rsxx information structure definition
uint8_t mb85rsxx_set_type(mb85rsxx_handle_t *handle, mb85rsxx_t type)
set the chip type
struct mb85rsxx_handle_s mb85rsxx_handle_t
mb85rsxx handle structure definition
uint8_t mb85rsxx_deinit(mb85rsxx_handle_t *handle)
close the chip
mb85rsxx_t
mb85rsxx type enumeration definition
uint8_t mb85rsxx_get_status(mb85rsxx_handle_t *handle, uint8_t *status)
get status
uint8_t mb85rsxx_init(mb85rsxx_handle_t *handle)
initialize the chip
void mb85rsxx_interface_debug_print(const char *const fmt,...)
interface print format data
void mb85rsxx_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t mb85rsxx_interface_spi_deinit(void)
interface spi bus deinit
uint8_t mb85rsxx_interface_spi_read_write(uint8_t *in_buf, uint32_t in_len, uint8_t *out_buf, uint32_t out_len)
interface spi bus read write
uint8_t mb85rsxx_interface_spi_init(void)
interface spi bus init
uint8_t mb85rsxx_read_test(mb85rsxx_t type)
read test
char manufacturer_name[32]