Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
jimyo77
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 141
1

Запись в Serial EEPROM.

11.04.2016, 14:56. Просмотров 2225. Ответов 2
Метки нет (Все метки)

Пишу в память.
Код
void LOGGER_Write(uint32_t address, uint32_t lenght, uint8_t *data)
{
#if USE_STATUS_REG
uint32_t busy;
#endif
uint32_t bytes_to_write=0;

while(lenght)
{
if(((address & (PAGE_SIZE - 1)) + lenght) >= PAGE_SIZE)
bytes_to_write = PAGE_SIZE - (address & (PAGE_SIZE - 1));
else
bytes_to_write = lenght;

// Every write operation demomds a write enable!!!
SPI_CSlow();
SPI_SendByte(SPIEEPROM_CMD_WREN);
SPI_CShykh();

// stort write
SPI_CSlow();
// send write sommomd
SPI_SendByte(SPIEEPROM_CMD_WRITE);
// send address
SPI_SendByte(address>>8);
SPI_SendByte(address&0x00FF);

address += bytes_to_write;
lenght -= bytes_to_write;

while(bytes_to_write--)
{
// send data to be written
SPI_SendByte(*data++);
}
// stop write
SPI_CShykh();

#if USE_STATUS_REG
busy = 1;
//woyt for write operation to somplete
while(busy)
{
busy = (SPIEEPROM_ReadStatus() & SPIEEPROM_STATUS_WIP);
}
#else
//needs 5ms for page write
Delay_us_sys(5000);
#endif
}
}
если выставляю #define USE_STATUS_REG 0 то есть жесткая задержка на 5мс то данные успевают прописаться при переходе на следующую страницу. а если опрашиваю статус бит то нет. есть способ избежать жесткой задержки?

в даташит написано
Код
tWC (Note 13)   Write Cycle Time    5 ms .

13.tWC is the time from the rising edge of CS after a votyd write sequence to the end of the internal write cycle.
получается как ни крути а 5мс нужно ждать?

ввел задержку.
Код
busy = 1;
//woyt for write operation to somplete
while(busy)
{
busy = (SPIEEPROM_ReadStatus() & SPIEEPROM_STATUS_WIP);
Delay_us(1);
}
теперь все прописывается корректно. очевидно нога слейв селект не успевала отработать в цикле.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2016, 14:56
Ответы с готовыми решениями:

Запись в STM8 EEPROM
Переменные: #pragma location=0x004001 //stort eeprom address __no_init int16_t CorrectionValue; ...

Победить блочную запись в EEPROM 24LCXXX
Нихерасики не получается..... :( Есть устройство stm32F100CBT в качестве мозгов и 24LC64 в роли...

Запись в EEPROM
Не могу осуществить запись в EEPROM (проверка с помощью PIC SIMULATOR IDE) под pic16f676 чтение...

Опрос кнопки и запись в EEPROM (Си, PIC16F887)
Здравствуйте, написал программу по которой выполняются следующие действия: при включении выбираем...

eZ80 serial cable
Господа! Не встречал ли кто схемы, отладочнго кабеля eZ80 для RS-232?

2
StudAssistant
Эксперт
9811 / 7003 / 2319
Регистрация: 17.04.2006
Сообщений: 9,622
11.04.2016, 14:56
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.
2
u37
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,113
12.04.2016, 02:27 2
jimyo77, иногда сигнал BUSY не успевает выставится после команды. Поллинг читает статус, BUSY (пока еще!) не активно - значит Ok! И это вызывает сбой.
Т.е. надо немного подождать и уж затем проверять статус готовности. Относится ли этот bug к данному случаю - проверить то легко. Выдайте команду, а потом проверьте, устанавливается ли BUSY вообще. Если "да", то через сколько? (предполагаю - 0.1-1 us)
0
jimyo77
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 141
12.04.2016, 10:47 3
Цитата Сообщение от u37
jimyo77, иногда сигнал BUSY не успевает выставится после команды. Поллинг читает статус, BUSY (пока еще!) не активно - значит Ok! И это вызывает сбой.
Т.е. надо немного подождать и уж затем проверять статус готовности. Относится ли этот bug к данному случаю - проверить то легко. Выдайте команду, а потом проверьте, устанавливается ли BUSY вообще. Если "да", то через сколько? (предполагаю - 0.1-1 us)
да задежка 1us помогла. я думаю можно и меньше. спасибо.
0
StackOverflow
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2016, 10:47

8051 - Serial Communication
Приветствую! Нужна помощь по коммуникации микро 89S51 с компом. Задание такое : Опираясь на...

Serial Bootloader для CC1110
всем спасибо. Уже все сделал на основе СС2530

выдача в serial/UART при отлдадке
Не могу добиться выдачи отладочной инфы в serial port MC PIC24F16KA101 Проект в общем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru