Для записи использую функцию из библиотеки spifi_program а для чтения копирование по указателям.
Может кому пригодиться
пример как использовать spifi без библиотеки собранная библиотека для m0 m4
keil iar но и с gcc работает тожеВот так использую не знаю насколько правильно но код работает,может что подправите или посоветуете?
CODE
//---------------------------------------------------------------------------------------------------//
void at25df_Read(void* buffer, uint32_t addrsoffsetstruct, uint32_t sizett) {
int i;
opers.dest = (char *) (obj.base + addrsoffsetstruct);
opers.length = sizett;
opers.scratch = NULL;
opers.options = S_VERIFY_PROG;
opers.protect = -1;
for(i = 0; i < sizett; i++)
{
((char*)buffer)[i] = ((char*)opers.dest)[i];
}
UART_printf("Read flash ok.....\r\n");
}
//---------------------------------------------------------------------------------------------------//
void at25df_Erase(uint32_t addrsoffsetstruct, uint32_t sizett) {
opers.dest = (char *) (obj.base + addrsoffsetstruct);
opers.length = sizett;
opers.scratch = NULL;
opers.options = S_FORCE_ERASE;
opers.protect = -1;
// Erase Device
if (pSpifi->spifi_erase(&obj, &opers)) {
UART_printf("ERROR Erace.....\r\n");
} else {
UART_printf("Erace flash ok.....\r\n");
}
}
//---------------------------------------------------------------------------------------------------//
void at25df_Write(void* buffer, uint32_t addrsoffsetstruct, uint32_t sizett) {
opers.dest = (char *) (obj.base + addrsoffsetstruct);
opers.length = sizett;
opers.scratch = NULL;
opers.options = S_VERIFY_PROG;
opers.protect = -1;
if (pSpifi->spifi_program(&obj, (char *) buffer, &opers)) {
UART_printf("ERROR write....\r\n");
} else {
UART_printf("Write flash ok.....\r\n");
}
}
//---------------------------------------------------------------------------------------------------//
Стирание работает только секторами.
Сообщение отредактировал IgorKossak - Jan 5 2014, 20:47
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!