Init
This commit is contained in:
commit
4937f9284e
|
|
@ -0,0 +1,63 @@
|
|||
//
|
||||
// Created by ilya on 09.02.23.
|
||||
//
|
||||
|
||||
#include "Flash_MX25L12833FM2I_Cycle.h"
|
||||
#include "Flash_MX25L12833FM2I.h"
|
||||
#include "cmsis_os.h"
|
||||
void Init_flash(Flash_workspace *env, uint32_t begin,uint32_t end,tSpiPortIO *spi)
|
||||
{
|
||||
env->env=env;
|
||||
env->begin=begin;
|
||||
env->currentRead=begin;
|
||||
env->currentWrite=begin;
|
||||
env->end=end;
|
||||
env->spi=spi;
|
||||
}
|
||||
uint8_t flashMX25_readbyte (Flash_workspace *workspace,uint32_t timeout)
|
||||
{
|
||||
uint8_t buf=flashMX25_read( workspace->spi,workspace->currentRead,&buf,1, timeout);
|
||||
return buf;
|
||||
}
|
||||
uint8_t flashMX25_writebyte (Flash_workspace *workspace,uint8_t buf,uint32_t timeout) {
|
||||
flashMX25_write( workspace->spi,workspace->currentWrite,&buf,1, timeout);
|
||||
return 0;
|
||||
}
|
||||
uint8_t flashMX25_receive (Flash_workspace *workspace,uint8_t *buf, int count,uint32_t timeout)
|
||||
{
|
||||
for (int i=0;i<count;i++)
|
||||
{if ((workspace->currentRead!=workspace->currentWrite)&&(workspace->currentRead!=workspace->end))
|
||||
{buf[i]= flashMX25_readbyte(workspace,timeout);workspace->currentRead++;}
|
||||
else
|
||||
{if (workspace->currentRead==workspace->currentWrite)
|
||||
{return i;}
|
||||
else
|
||||
{if (workspace->currentRead<workspace->end)
|
||||
{buf[i]= flashMX25_readbyte(workspace,timeout);workspace->currentRead++;}
|
||||
else
|
||||
{workspace->end+=0x001000;
|
||||
flashMX25_SectorErase(workspace->spi,workspace->begin-0x001000,timeout);
|
||||
workspace->currentRead=workspace->begin;i--;}}}
|
||||
}
|
||||
return count;}
|
||||
uint8_t flashMX25_transmit (Flash_workspace *workspace,uint8_t *bufWrite, int count,uint32_t timeout)
|
||||
{
|
||||
for (int i = 0; i < count; i++) {
|
||||
osDelay(100);
|
||||
if (workspace->currentWrite >= workspace->currentRead) {
|
||||
if (workspace->currentWrite != workspace->end) {
|
||||
flashMX25_writebyte(workspace, bufWrite[i], timeout);
|
||||
workspace->currentWrite++;
|
||||
}
|
||||
else {
|
||||
workspace->begin += 0x001000;
|
||||
workspace->currentWrite = workspace->begin;
|
||||
i--;
|
||||
}
|
||||
} else {
|
||||
flashMX25_writebyte(workspace, bufWrite[i], timeout);
|
||||
workspace->currentWrite++;
|
||||
if (workspace->currentWrite == (workspace->currentRead + 0x001000)) return 0;
|
||||
}
|
||||
}
|
||||
return 0;}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
//
|
||||
// Created by ilya on 09.02.23.
|
||||
//
|
||||
|
||||
#ifndef UVEOS_ON_NATION_FLASH_MX25L12833FM2I_CYCLE_H
|
||||
#define UVEOS_ON_NATION_FLASH_MX25L12833FM2I_CYCLE_H
|
||||
#include "inttypes.h"
|
||||
|
||||
|
||||
#include "SpiPort.h"
|
||||
typedef struct {
|
||||
void *env;
|
||||
uint32_t begin;
|
||||
uint32_t end;
|
||||
uint32_t currentRead;
|
||||
uint32_t currentWrite;
|
||||
tSpiPortIO *spi;
|
||||
} Flash_workspace;
|
||||
void Init_flash(Flash_workspace *env,uint32_t begin,uint32_t end,tSpiPortIO *spi);
|
||||
extern uint8_t flashMX25_readbyte (Flash_workspace *workspace,uint32_t timeout);
|
||||
extern uint8_t flashMX25_writebyte (Flash_workspace *workspace,uint8_t buf,uint32_t timeout);
|
||||
extern uint8_t flashMX25_receive (Flash_workspace *workspace,uint8_t *buf, int count,uint32_t timeout);
|
||||
extern uint8_t flashMX25_transmit (Flash_workspace *workspace,uint8_t *bufWrite, int count,uint32_t timeout);
|
||||
#endif //UVEOS_ON_NATION_FLASH_MX25L12833FM2I_CYCLE_H
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"dep": [
|
||||
{
|
||||
"type": "git",
|
||||
"provider": "NAVIGATOR_UVEOS_NATION_TELIT",
|
||||
"repo": "SpiPort"
|
||||
}
|
||||
|
||||
],
|
||||
"cmake": {
|
||||
"inc_dirs": [
|
||||
"./"
|
||||
],
|
||||
"srcs": [
|
||||
"./**.c"
|
||||
]
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue