Рефакторинг, комментарии

This commit is contained in:
Eugene 2023-11-28 17:04:28 +03:00
parent a60fcc5f52
commit 9e5a6e2abe
5 changed files with 46 additions and 65 deletions

View File

@ -7,6 +7,12 @@
#include "f28x_project.h" #include "f28x_project.h"
uint16_t quant16bitWords(uint16_t bytes)
{
if((bytes) & 1) return (bytes + 1)/2; //если осталось нечётное число байт, то чтобы рассчитать кол-во 16-битных слов надо +1
else return (bytes)/2;
}
void copy16_to_8(uint16_t *Arr16, uint16_t *Arr8, uint16_t N) void copy16_to_8(uint16_t *Arr16, uint16_t *Arr8, uint16_t N)
{ {
uint16_t j=0; uint16_t j=0;

View File

@ -10,7 +10,7 @@
void copy16_to_8(uint16_t *Arr16, uint16_t *Arr8, uint16_t N); void copy16_to_8(uint16_t *Arr16, uint16_t *Arr8, uint16_t N);
void copy8_to_16(uint16_t *Arr8, uint16_t *Arr16, uint16_t N); void copy8_to_16(uint16_t *Arr8, uint16_t *Arr16, uint16_t N);
uint16_t quant16bitWords(uint16_t bytes);
#endif /* SRC_EXTERNALEEPROM_ARR_H_ */ #endif /* SRC_EXTERNALEEPROM_ARR_H_ */

View File

@ -153,24 +153,21 @@ uint16_t Bl25cm1a_verify_8_bytes(uint32_t Addr, uint16_t * verify_data, uint16_
void Bl25cm1a_read_data(uint32_t Addr, uint16_t quant8, uint16_t * read_data) void Bl25cm1a_read_data(uint32_t Addr, uint16_t quant8, uint16_t * read_data)
{ {
uint32_t i=0; uint32_t i=0;
uint32_t Addressfull8bit;
uint16_t addr_read_data[8]; uint16_t addr_read_data[8];
if(quant8 > 8) if(quant8 > 8)
{ {
for(i = 0; i < (quant8-8); i += 8) for(i = 0; i < (quant8-8); i += 8)
{ { //в этом цикле только полные посылки по 8 байт
Addressfull8bit = Addr+i; Bl25cm1a_read_8_bytes(Addr+i, addr_read_data, 8);
Bl25cm1a_read_8_bytes(Addressfull8bit, addr_read_data, 8);
copy8_to_16(addr_read_data, read_data, 4); copy8_to_16(addr_read_data, read_data, 4);
read_data+=4; read_data+=4;
} }
} }
if(i < quant8) if(i < quant8)
{ { //тут м.б. от 1 до 8 байт
Addressfull8bit = Addr+i; Bl25cm1a_read_8_bytes(Addr+i, addr_read_data, (quant8 - i)); //читаем оставшиеся байты
Bl25cm1a_read_8_bytes(Addressfull8bit, addr_read_data, (quant8 - i)); if((quant8 - i) & 1) {addr_read_data[quant8] = 0; quant8++; } //если байт нечётное число, то дополняем до чётного нулём чтобы записать 16-битными словами в буфер
if((quant8 - i) & 1) {addr_read_data[quant8] = 0; quant8++; }
copy8_to_16(addr_read_data, read_data, (quant8 - i)/2); copy8_to_16(addr_read_data, read_data, (quant8 - i)/2);
} }
} }
@ -186,16 +183,15 @@ uint16_t Bl25cm1a_verify_data(uint32_t Addr, uint16_t quant8, uint16_t * verify_
if(quant8 > 8) if(quant8 > 8)
{ {
for(i = 0; i < (quant8-8); i += 8) for(i = 0; i < (quant8-8); i += 8)
{ { //в этом цикле только полные посылки по 8 байт
copy16_to_8(verify_data, addr_vfy_data, 4); copy16_to_8(verify_data, addr_vfy_data, 4);
if(Bl25cm1a_verify_8_bytes(Addr+i, addr_vfy_data, 8)) return 1; if(Bl25cm1a_verify_8_bytes(Addr+i, addr_vfy_data, 8)) return 1;
verify_data+=4; verify_data+=4;
} }
} }
if(i < quant8) if(i < quant8)
{ { //тут м.б. от 1 до 8 байт
if((quant8 - i) & 1) quant16 = (quant8 + 1 - i)/2; quant16 = quant16bitWords(quant8-i);
else quant16 = (quant8 - i)/2;
copy16_to_8(verify_data, addr_vfy_data, quant16); copy16_to_8(verify_data, addr_vfy_data, quant16);
if(Bl25cm1a_verify_8_bytes(Addr+i, addr_vfy_data, (quant8 - i))) return 1; if(Bl25cm1a_verify_8_bytes(Addr+i, addr_vfy_data, (quant8 - i))) return 1;
} }
@ -206,26 +202,22 @@ void Bl25cm1a_write_1_page(uint32_t Addr, uint16_t quant8, uint16_t * write_data
{ {
uint32_t i=0; uint32_t i=0;
uint16_t addr_write_data[8]; uint16_t addr_write_data[8];
uint32_t Addressfull8bit;
uint16_t quant16; uint16_t quant16;
if(quant8 > 8) if(quant8 > 8)
{ {
for(i = 0; i < (quant8-8); i += 8) for(i = 0; i < (quant8-8); i += 8)
{ { //в этом цикле только полные посылки по 8 байт
copy16_to_8(write_data, addr_write_data, 4); copy16_to_8(write_data, addr_write_data, 4);
Addressfull8bit = Addr+i; Bl25cm1a_write_8_bytes(Addr+i, addr_write_data, 8);
Bl25cm1a_write_8_bytes(Addressfull8bit, addr_write_data, 8);
write_data += 4; write_data += 4;
} }
} }
if(i < quant8) if(i < quant8)
{ { //тут м.б. от 1 до 8 байт
if((quant8 - i) & 1) quant16 = (quant8 + 1 - i)/2; quant16 = quant16bitWords(quant8-i);
else quant16 = (quant8 - i)/2;
copy16_to_8(write_data, addr_write_data, quant16); copy16_to_8(write_data, addr_write_data, quant16);
Addressfull8bit = Addr+i; Bl25cm1a_write_8_bytes(Addr+i, addr_write_data, (quant8 - i));
Bl25cm1a_write_8_bytes(Addressfull8bit, addr_write_data, (quant8 - i));
} }
} }

View File

@ -197,24 +197,21 @@ void GD25Q16ETIGR_write_8_bytes(uint32_t Addr, uint16_t * write_data, uint16_t n
void GD25Q16ETIGR_read_data(uint32_t Addr, uint16_t quant8, uint16_t * read_data) void GD25Q16ETIGR_read_data(uint32_t Addr, uint16_t quant8, uint16_t * read_data)
{ {
uint32_t i=0; uint32_t i=0;
uint32_t Addressfull8bit;
uint16_t addr_read_data[8]; uint16_t addr_read_data[8];
if(quant8 > 8) if(quant8 > 8)
{ {
for(i = 0; i < (quant8-8); i += 8) for(i = 0; i < (quant8-8); i += 8)
{ {//â ýòîì öèêëå òîëüêî ïîëíûå ïîñûëêè ïî 8 áàéò
Addressfull8bit = Addr+i; GD25Q16ETIGR_read_8_bytes(Addr+i, addr_read_data, 8);
GD25Q16ETIGR_read_8_bytes(Addressfull8bit, addr_read_data, 8);
copy8_to_16(addr_read_data, read_data, 4); copy8_to_16(addr_read_data, read_data, 4);
read_data+=4; read_data+=4;
} }
} }
if(i < quant8) if(i < quant8)
{ {//òóò ì.á. îò 1 äî 8 áàéò
Addressfull8bit = Addr+i; GD25Q16ETIGR_read_8_bytes(Addr+i, addr_read_data, (quant8 - i));
GD25Q16ETIGR_read_8_bytes(Addressfull8bit, addr_read_data, (quant8 - i)); if((quant8 - i) & 1) {addr_read_data[quant8] = 0; quant8++; }//åñëè áàéò íå÷¸òíîå ÷èñëî, òî äîïîëíÿåì äî ÷¸òíîãî íóë¸ì
if((quant8 - i) & 1) {addr_read_data[quant8] = 0; quant8++; }
copy8_to_16(addr_read_data, read_data, (quant8 - i)/2); copy8_to_16(addr_read_data, read_data, (quant8 - i)/2);
} }
} }
@ -229,16 +226,15 @@ uint16_t GD25Q16ETIGR_verify_data(uint32_t Addr, uint16_t quant8, uint16_t * ver
if(quant8 > 8) if(quant8 > 8)
{ {
for(i = 0; i < (quant8-8); i += 8) for(i = 0; i < (quant8-8); i += 8)
{ {//â ýòîì öèêëå òîëüêî ïîëíûå ïîñûëêè ïî 8 áàéò
copy16_to_8(verify_data, addr_vfy_data, 4); copy16_to_8(verify_data, addr_vfy_data, 4);
if(GD25Q16ETIGR_verify_8_bytes(Addr+i, addr_vfy_data, 8)) return 1; if(GD25Q16ETIGR_verify_8_bytes(Addr+i, addr_vfy_data, 8)) return 1;
verify_data+=4; verify_data+=4;
} }
} }
if(i < quant8) if(i < quant8)
{ {//òóò ì.á. îò 1 äî 8 áàéò
if((quant8 - i) & 1) quant16 = (quant8 + 1 - i)/2; quant16 = quant16bitWords(quant8-i);
else quant16 = (quant8 - i)/2;
copy16_to_8(verify_data, addr_vfy_data, quant16); copy16_to_8(verify_data, addr_vfy_data, quant16);
if(GD25Q16ETIGR_verify_8_bytes(Addr+i, addr_vfy_data, (quant8 - i))) return 1; if(GD25Q16ETIGR_verify_8_bytes(Addr+i, addr_vfy_data, (quant8 - i))) return 1;
} }
@ -249,26 +245,22 @@ void GD25Q16ETIGR_write_1_page(uint32_t Addr, uint16_t quant8, uint16_t * write_
{ {
uint32_t i=0; uint32_t i=0;
uint16_t addr_write_data[8]; uint16_t addr_write_data[8];
uint32_t Addressfull8bit;
uint16_t quant16; uint16_t quant16;
if(quant8 > 8) if(quant8 > 8)
{ {
for(i = 0; i < (quant8-8); i += 8) for(i = 0; i < (quant8-8); i += 8)
{ { //â ýòîì öèêëå òîëüêî ïîëíûå ïîñûëêè ïî 8 áàéò
copy16_to_8(write_data, addr_write_data, 4); copy16_to_8(write_data, addr_write_data, 4);
Addressfull8bit = Addr+i; GD25Q16ETIGR_write_8_bytes(Addr+i, addr_write_data, 8);
GD25Q16ETIGR_write_8_bytes(Addressfull8bit, addr_write_data, 8);
write_data += 4; write_data += 4;
} }
} }
if(i < quant8) if(i < quant8)
{ {//òóò ì.á. îò 1 äî 8 áàéò
if((quant8 - i) & 1) quant16 = (quant8 + 1 - i)/2; quant16 = quant16bitWords(quant8-i);
else quant16 = (quant8 - i)/2;
copy16_to_8(write_data, addr_write_data, quant16); copy16_to_8(write_data, addr_write_data, quant16);
Addressfull8bit = Addr+i; GD25Q16ETIGR_write_8_bytes(Addr+i, addr_write_data, (quant8 - i));
GD25Q16ETIGR_write_8_bytes(Addressfull8bit, addr_write_data, (quant8 - i));
} }
} }

View File

@ -38,29 +38,24 @@ uint16_t ZD24C02A_verify_16(uint16_t Addr, uint16_t * Array, uint16_t quant)
uint16_t ZD24C02A_write(uint32_t Addr, uint16_t quant8, uint16_t * write_data) uint16_t ZD24C02A_write(uint32_t Addr, uint16_t quant8, uint16_t * write_data)
{ {
uint32_t i=0; uint32_t i=0;
uint16_t addr_write_data[8]; uint16_t addr_write_data[8];
uint32_t Addressfull8bit;
uint16_t quant16; uint16_t quant16;
if(quant8 > 8) if(quant8 > 8)
{ {
for(i = 0; i < (quant8-8); i += 8) for(i = 0; i < (quant8-8); i += 8)
{ {//â ýòîì öèêëå òîëüêî ïîëíûå ïîñûëêè ïî 8 áàéò
copy16_to_8(write_data, addr_write_data, 4); copy16_to_8(write_data, addr_write_data, 4);
Addressfull8bit = Addr+i; if( ZD24C02A_write_8(Addr+i, addr_write_data, 8)) return 1;
if( ZD24C02A_write_8(Addressfull8bit, addr_write_data, 8)) return 1;
write_data += 4; write_data += 4;
} }
} }
if(i < quant8) if(i < quant8)
{ {//òóò ì.á. îò 1 äî 8 áàéò
if((quant8 - i) & 1) quant16 = (quant8 + 1 - i)/2; quant16 = quant16bitWords(quant8-i);
else quant16 = (quant8 - i)/2;
copy16_to_8(write_data, addr_write_data, quant16); copy16_to_8(write_data, addr_write_data, quant16);
Addressfull8bit = Addr+2*i; if( ZD24C02A_write_8(Addr+i, addr_write_data, (quant8 - i))) return 1;
if( ZD24C02A_write_8(Addressfull8bit, addr_write_data, (quant8 - i))) return 1;
} }
return 0; return 0;
} }
@ -68,24 +63,21 @@ uint16_t ZD24C02A_write(uint32_t Addr, uint16_t quant8, uint16_t * write_data)
uint16_t ZD24C02A_read(uint32_t Addr, uint16_t quant8, uint16_t * read_data) uint16_t ZD24C02A_read(uint32_t Addr, uint16_t quant8, uint16_t * read_data)
{ {
uint32_t i=0; uint32_t i=0;
uint32_t Addressfull8bit;
uint16_t addr_read_data[8]; uint16_t addr_read_data[8];
if(quant8 > 8) if(quant8 > 8)
{ {
for(i = 0; i < (quant8-8); i += 8) for(i = 0; i < (quant8-8); i += 8)
{ {//â ýòîì öèêëå òîëüêî ïîëíûå ïîñûëêè ïî 8 áàéò
Addressfull8bit = Addr+i; if( ZD24C02A_read_8(Addr+i, addr_read_data, 8)) return 1;
if( ZD24C02A_read_8(Addressfull8bit, addr_read_data, 8)) return 1;
copy8_to_16(addr_read_data, read_data, 4); copy8_to_16(addr_read_data, read_data, 4);
read_data+=4; read_data+=4;
} }
} }
if(i < quant8) if(i < quant8)
{ {//òóò ì.á. îò 1 äî 8 áàéò
Addressfull8bit = Addr+i; if( ZD24C02A_read_8(Addr+i, addr_read_data, (quant8 - i))) return 1;
if( ZD24C02A_read_8(Addressfull8bit, addr_read_data, (quant8 - i))) return 1; if((quant8 - i) & 1) {addr_read_data[quant8] = 0; quant8++; }//åñëè áàéò íå÷¸òíîå ÷èñëî, òî äîïîëíÿåì äî ÷¸òíîãî íóë¸ì
if((quant8 - i) & 1) {addr_read_data[quant8] = 0; quant8++; }
copy8_to_16(addr_read_data, read_data, (quant8 - i)/2); copy8_to_16(addr_read_data, read_data, (quant8 - i)/2);
} }
return 0; return 0;
@ -101,7 +93,7 @@ uint16_t ZD24C02A_verify(uint32_t Addr, uint16_t quant8, uint16_t * verify_data)
if(quant8 > 8) if(quant8 > 8)
{ {
for(i = 0; i < (quant8-8); i += 8) for(i = 0; i < (quant8-8); i += 8)
{ {//â ýòîì öèêëå òîëüêî ïîëíûå ïîñûëêè ïî 8 áàéò
copy16_to_8(verify_data, addr_vfy_data, 4); copy16_to_8(verify_data, addr_vfy_data, 4);
Err_read = ZD24C02A_verify_16(Addr+i, addr_vfy_data, 8); Err_read = ZD24C02A_verify_16(Addr+i, addr_vfy_data, 8);
if(Err_read) return Err_read; if(Err_read) return Err_read;
@ -109,9 +101,8 @@ uint16_t ZD24C02A_verify(uint32_t Addr, uint16_t quant8, uint16_t * verify_data)
} }
} }
if(i < quant8) if(i < quant8)
{ {//òóò ì.á. îò 1 äî 8 áàéò
if((quant8 - i) & 1) quant16 = (quant8 + 1 - i)/2; quant16 = quant16bitWords(quant8-i);
else quant16 = (quant8 - i)/2;
copy16_to_8(verify_data, addr_vfy_data, quant16); copy16_to_8(verify_data, addr_vfy_data, quant16);
Err_read = ZD24C02A_verify_16(Addr+i, addr_vfy_data, (quant8 - i)); Err_read = ZD24C02A_verify_16(Addr+i, addr_vfy_data, (quant8 - i));
if(Err_read) return Err_read; if(Err_read) return Err_read;