|
#ifndef SPIMEMIO_H
#define SPIMEMIO_H
#define max_bytes 264
__no_init unsigned int buffer_addr;
__no_init unsigned int page_addr;
__no_init unsigned char count_buffer;
unsigned char spi(unsigned char data);
void csh(void);
void csl(void);
void wait_mem_ready(void);
void mem_to_buffer(void);
void buffer_to_mem(void);
void init_series_read(void);
void init_buf_write(void);
void clr_block(unsigned int StartPage,unsigned int n);
char read_str(char* str, unsigned char n);
char write_str(char* str, unsigned char n);
/* Инициализация процедуры последовательного чтения */
#define InitSeriesRead(PageAddr) \
page_addr=PageAddr;\
buffer_addr=0;\
init_series_read()
/* Чтение данных */
#define SeriesRead() spi(0)
/*Окончание процедуры последовательного чтения*/
#define EndSeriesRead() csh()
/*
Пример:
InitSeriesRead(0x10);
while(....){
.........
data = SeriesRead();
.........
}
EndSeriesRead();
*/
/*инициялизация процедуры последовательной записи*/
#define InitSeriesWrite(PageAddr)\
page_addr=PageAddr;\
buffer_addr=0;\
init_buf_write()
/* Запись данных */
void SeriesWrite(char data);
/*Окончание последовательного чтения*/
#define EndSeriesWrite()\
csh();\
if(buffer_addr)buffer_to_mem();
/*
Примечание: При выполнении операции последовательной записи
все данные на стр на которые производися запись
будут поврежены!!!!
Пример:
InitSeriesWrite(0x10);
while(...){
.......
SeriesWrite(data);
.......
}
EndSeriesWrite()
*/
void SeriesStrWrite(char* str,unsigned char n);
/*
Примечание: При выполнении операции последовательной записи
все данные на стр на которые производися запись
будут поврежены!!!!
Пример:
typedef struct{
unsigned char flag;
unsigned long IdCod;
unsigned int OLim
unsigned int ILim;
char str1[15];
char str2[7];
}DData;
DData d_data;
InitSeriesWrite(0x10);
while(....){
......
SerieStrWrite((char*)&d_data,sizeof(DData))
......
}
EndSeriesWrite();
*/
void SeriesStrRead(char* str, unsigned char n);
/*
Пример:
InitSeriesRead(0x10);
while(....){
......
SerieStrRead((char*)&d_data,sizeof(DData))
......
}
EndSeriesRead();
*/
/****************************************************************/
/*
Запись массива данных
PageAddr - Адрес страницы
BufferAddr - Адрес на странице
n - кол-во байт
*/
#define WriteStr(str,PageAddr,BufferAddr,n)\
page_addr = PageAddr;\
buffer_addr = BufferAddr;\
write_str(str, n)
#define WriteNextStr(str,n)\
write_str(str, n)
/*
Прим: Кроме перезаписываемых, другие данные НЕ повреждаются!
Пример:
WriteStr((char*)&d_data, DStartPage,0,sizeof(DData));
while(...){
.....
WriteNextStr((char*)&d_data, sizeof(DData));
.....
}
*/
/*******************************************************************/
#define ReadStr(str, PageAddr, BufferAddr,n)\
page_addr = PageAddr;\
buffer_addr = BufferAddr;\
read_str(str, n)
#define ReadNextStr(str,n)\
read_str(str, n)
/*
Пример:
ReadStr((char*)&d_data, DStartPage,0,sizeof(DData));
while(...){
.....
ReadNextStr((char*)&d_data, sizeof(DData));
.....
}
*/
#endif
E-mail: info@telesys.ru