Исправил баг с размером в байтах, а не словах
This commit is contained in:
parent
79501cdead
commit
c8e8918851
@ -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)
|
void copy8_to_16(uint16_t *Arr8, uint16_t *Arr16, uint16_t N)
|
||||||
{
|
{
|
||||||
uint16_t j=0;
|
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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 * addr_write_data = write_data;
|
||||||
uint16_t page_quant_8bit = 0;
|
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); //âû÷èñëÿåì êîë-âî áàéò äàííûõ äî êîíöà òåêóùåé ñòðàíèöû
|
page_quant_8bit = BL25CM1A0_PAGE - (Addr_8bit&0xFF); //âû÷èñëÿåì êîë-âî áàéò äàííûõ äî êîíöà òåêóùåé ñòðàíèöû
|
||||||
Bl25cm1a_write_1_page(Addr_8bit, page_quant_8bit/2, addr_write_data); //çàïèñûâàåì ýòè äàííûå íà òåêóùóþ ñòðàíèöó
|
Bl25cm1a_write_1_page(Addr_8bit, page_quant_8bit/2, addr_write_data); //çàïèñûâàåì ýòè äàííûå íà òåêóùóþ ñòðàíèöó
|
||||||
Addr_8bit += page_quant_8bit; //ïåðåëèñòûâàåì ñòðàíèöó âíåøíåé ïàìÿòè
|
Addr_8bit += page_quant_8bit; //ïåðåëèñòûâàåì ñòðàíèöó âíåøíåé ïàìÿòè
|
||||||
addr_write_data += page_quant_8bit/2; //øàãàåì íà ñëåäóþùèå íåçàïèñàííûå äàííûå â áóôåðå
|
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); //åñëè äàííûå äëÿ çàïèñè îñòàëèñü, òî çàïèñûâàåì èõ
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 * addr_write_data = write_data;
|
||||||
uint16_t page_quant_8bit = 0;
|
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;
|
uint16_t i=0;
|
||||||
|
|
||||||
FlashSektorStart = GD25Q16ETIGR_Sektor_Addr(Addr_8bit); //ñåêòîð ñ êîòîðîãî íà÷èíàåòñÿ çàïèñü
|
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++)
|
for(i = FlashSektorStart; i <= FlashSektorEnd; i++)
|
||||||
{
|
{
|
||||||
if(!SectorWasErraised[i]) {SectorWasErraised[i] = 1; GD25Q16ETIGR_sector_erase(i*0x1000);}
|
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); //âû÷èñëÿåì êîë-âî áàéò äàííûõ äî êîíöà òåêóùåé ñòðàíèöû
|
page_quant_8bit = GD25Q16E_PAGE - (Addr_8bit&0xFF); //âû÷èñëÿåì êîë-âî áàéò äàííûõ äî êîíöà òåêóùåé ñòðàíèöû
|
||||||
GD25Q16ETIGR_write_1_page(Addr_8bit, page_quant_8bit/2, addr_write_data); //çàïèñûâàåì ýòè äàííûå íà òåêóùóþ ñòðàíèöó
|
GD25Q16ETIGR_write_1_page(Addr_8bit, page_quant_8bit/2, addr_write_data); //çàïèñûâàåì ýòè äàííûå íà òåêóùóþ ñòðàíèöó
|
||||||
Addr_8bit += page_quant_8bit; //ïåðåëèñòûâàåì ñòðàíèöó âíåøíåé ïàìÿòè
|
Addr_8bit += page_quant_8bit; //ïåðåëèñòûâàåì ñòðàíèöó âíåøíåé ïàìÿòè
|
||||||
addr_write_data += page_quant_8bit/2; //øàãàåì íà ñëåäóþùèå íåçàïèñàííûå äàííûå â áóôåðå (îíè ó íàñ 16-áèòíûìè ñëîâàìè)
|
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); //åñëè äàííûå äëÿ çàïèñè îñòàëèñü, òî çàïèñûâàåì èõ
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user