ak-kr-project/Core/Src/24AA02E48.c

99 lines
2.0 KiB
C

#include "main.h"
#include "lcd.h"
#include "24AA02E48.h"
extern I2C_HandleTypeDef hi2c1;
void EEPROM_24AA02E48_run_test(void)
{
DISPLAY_CLEAR;
display_write_data_seq("24AA02E48 EEPROM");
HAL_StatusTypeDef op_result;
size_t err_count = 0;
// write the Address Pointer register
uint8_t data_buffer[13];
data_buffer[12] = '\0';
data_buffer[0] = 0xF4;
for (size_t t = 0; t < 5; t++) {
op_result = HAL_I2C_Master_Transmit(&hi2c1, 0xA0, data_buffer, 1, 2000);
if (op_result) {
err_count++;
DISPLAY_CLEAR;
display_write_data_seq("24AA02E48 EEPROM");
DISPLAY_SET_CURSOR(1, 0);
display_write_data_seq("W ");
display_write_data_byte('1' + t);
display_write_data_seq("/5 ");
switch (op_result) {
case HAL_ERROR:
display_write_data_seq("ERROR");
break;
case HAL_BUSY:
display_write_data_seq("BUSY");
break;
case HAL_TIMEOUT:
display_write_data_seq("TIMEOUT");
break;
}
HAL_Delay(2000);
} else {
break;
}
}
for (size_t t = 0; t < 5; t++) {
op_result = HAL_I2C_Master_Receive(&hi2c1, 0xA1, data_buffer, 12, 2000);
if (op_result) {
err_count++;
DISPLAY_CLEAR;
display_write_data_seq("24AA02E48 EEPROM");
DISPLAY_SET_CURSOR(1, 0);
display_write_data_seq("R ");
display_write_data_byte('1' + t);
display_write_data_seq("/5 ");
switch (op_result) {
case HAL_ERROR:
display_write_data_seq("ERROR");
break;
case HAL_BUSY:
display_write_data_seq("BUSY");
break;
case HAL_TIMEOUT:
display_write_data_seq("TIMEOUT");
break;
}
HAL_Delay(2000);
} else {
break;
}
}
DISPLAY_CLEAR;
display_write_data_seq("24AA02E48 EEPROM");
if (err_count) {
DISPLAY_SET_CURSOR(1, 0);
display_write_data_byte('0' + err_count / 10 % 10);
display_write_data_byte('0' + err_count % 10);
display_write_data_seq("E ");
display_write_data_seq(data_buffer);
} else {
DISPLAY_SET_CURSOR(1, 1);
display_write_data_seq("OK ");
display_write_data_seq(data_buffer);
}
}