Исправил баг с размером в байтах, а не словах

This commit is contained in:
Eugene 2023-11-29 08:57:24 +03:00
parent 79501cdead
commit c8e8918851
3 changed files with 12 additions and 12 deletions

View File

@ -23,5 +23,5 @@ 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)
{
uint16_t j=0;
for(j = 0; j < N; j+=1) Arr16[j] = (0xFF & (uint16_t)Arr8[2*j]) + ((uint16_t)Arr8[2*j+1]<<8);
for(j = 0; j < N; j+=1) Arr16[j] = (0xFF & Arr8[2*j]) + (Arr8[2*j+1]<<8);
}

View File

@ -221,21 +221,21 @@ void Bl25cm1a_write_1_page(uint32_t Addr, uint16_t quant8, uint16_t * write_data
}
}
void Bl25cm1a_write_data(uint32_t Addr_8bit, uint16_t quant_16bit, uint16_t * write_data)
void Bl25cm1a_write_data(uint32_t Addr_8bit, uint16_t quant_8bit, uint16_t * write_data)
{
uint16_t * addr_write_data = write_data;
uint16_t page_quant_8bit = 0;
while( (Addr_8bit&0xFF)+(2*quant_16bit) > BL25CM1A0_PAGE) //åñëè äàííûå âûõîäÿò çà ãðàíèöó òåêóùåé ñòðàíèöû
while( (Addr_8bit&0xFF)+(quant_8bit) > BL25CM1A0_PAGE) //åñëè äàííûå âûõîäÿò çà ãðàíèöó òåêóùåé ñòðàíèöû
{
page_quant_8bit = BL25CM1A0_PAGE - (Addr_8bit&0xFF); //âû÷èñëÿåì êîë-âî áàéò äàííûõ äî êîíöà òåêóùåé ñòðàíèöû
Bl25cm1a_write_1_page(Addr_8bit, page_quant_8bit/2, addr_write_data); //çàïèñûâàåì ýòè äàííûå íà òåêóùóþ ñòðàíèöó
Addr_8bit += page_quant_8bit; //ïåðåëèñòûâàåì ñòðàíèöó âíåøíåé ïàìÿòè
addr_write_data += page_quant_8bit/2; //øàãàåì íà ñëåäóþùèå íåçàïèñàííûå äàííûå â áóôåðå
quant_16bit -= page_quant_8bit/2; //óìåíüøàåì êîë-âî äàííûõ íà âåëè÷èíó êîòîðóþ óæå çàïèñàëè
quant_8bit -= page_quant_8bit; //óìåíüøàåì êîë-âî äàííûõ íà âåëè÷èíó êîòîðóþ óæå çàïèñàëè
}
if(quant_16bit > 0)
if(quant_8bit > 0)
{
Bl25cm1a_write_1_page(Addr_8bit, quant_16bit, addr_write_data); //åñëè äàííûå äëÿ çàïèñè îñòàëèñü, òî çàïèñûâàåì èõ
Bl25cm1a_write_1_page(Addr_8bit, quant_8bit, addr_write_data); //åñëè äàííûå äëÿ çàïèñè îñòàëèñü, òî çàïèñûâàåì èõ
}
}

View File

@ -264,7 +264,7 @@ void GD25Q16ETIGR_write_1_page(uint32_t Addr, uint16_t quant8, uint16_t * write_
}
}
void GD25Q16ETIGR_write_data(uint32_t Addr_8bit, uint16_t quant_16bit, uint16_t * write_data)
void GD25Q16ETIGR_write_data(uint32_t Addr_8bit, uint16_t quant_8bit, uint16_t * write_data)
{
uint16_t * addr_write_data = write_data;
uint16_t page_quant_8bit = 0;
@ -273,24 +273,24 @@ void GD25Q16ETIGR_write_data(uint32_t Addr_8bit, uint16_t quant_16bit, uint16_t
uint16_t i=0;
FlashSektorStart = GD25Q16ETIGR_Sektor_Addr(Addr_8bit); //ñåêòîð ñ êîòîðîãî íà÷èíàåòñÿ çàïèñü
FlashSektorEnd = GD25Q16ETIGR_Sektor_Addr(Addr_8bit + quant_16bit*2 - 1); //ñåêòîð â êîòîðîì êîíåö çàïèñè
FlashSektorEnd = GD25Q16ETIGR_Sektor_Addr(Addr_8bit + quant_8bit - 1); //ñåêòîð â êîòîðîì êîíåö çàïèñè
for(i = FlashSektorStart; i <= FlashSektorEnd; i++)
{
if(!SectorWasErraised[i]) {SectorWasErraised[i] = 1; GD25Q16ETIGR_sector_erase(i*0x1000);}
}
while( (Addr_8bit&0xFF)+(2*quant_16bit) > GD25Q16E_PAGE) //åñëè äàííûå âûõîäÿò çà ãðàíèöó òåêóùåé ñòðàíèöû
while( (Addr_8bit&0xFF)+(quant_8bit) > GD25Q16E_PAGE) //åñëè äàííûå âûõîäÿò çà ãðàíèöó òåêóùåé ñòðàíèöû
{
page_quant_8bit = GD25Q16E_PAGE - (Addr_8bit&0xFF); //âû÷èñëÿåì êîë-âî áàéò äàííûõ äî êîíöà òåêóùåé ñòðàíèöû
GD25Q16ETIGR_write_1_page(Addr_8bit, page_quant_8bit/2, addr_write_data); //çàïèñûâàåì ýòè äàííûå íà òåêóùóþ ñòðàíèöó
Addr_8bit += page_quant_8bit; //ïåðåëèñòûâàåì ñòðàíèöó âíåøíåé ïàìÿòè
addr_write_data += page_quant_8bit/2; //øàãàåì íà ñëåäóþùèå íåçàïèñàííûå äàííûå â áóôåðå (îíè ó íàñ 16-áèòíûìè ñëîâàìè)
quant_16bit -= page_quant_8bit/2; //óìåíüøàåì êîë-âî äàííûõ íà âåëè÷èíó êîòîðóþ óæå çàïèñàëè
quant_8bit -= page_quant_8bit; //óìåíüøàåì êîë-âî äàííûõ íà âåëè÷èíó êîòîðóþ óæå çàïèñàëè
}
if(quant_16bit > 0)
if(quant_8bit > 0)
{
GD25Q16ETIGR_write_1_page(Addr_8bit, quant_16bit, addr_write_data); //åñëè äàííûå äëÿ çàïèñè îñòàëèñü, òî çàïèñûâàåì èõ
GD25Q16ETIGR_write_1_page(Addr_8bit, quant_8bit, addr_write_data); //åñëè äàííûå äëÿ çàïèñè îñòàëèñü, òî çàïèñûâàåì èõ
}
}