Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Микроконтроллеры других производителей

Микроконтроллеры других производителей Все, что касается микроконтроллеров и НЕ подошло в раздел Microchip.

Ответ
 
Опции темы Опции просмотра
Старый 03.06.2016, 03:15   #1
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 49
Сообщений: 196
Вес репутации: 211/7
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Float сохранить в 4 байта внешней EEPROM

Доброго времени суток. Есть нужда в сохранении измеренных значений во внешней flash. Float имеет размерность 4 байта, eeprom 24cxx имеет размер 1 байт , но при попытке разложить его на 4 байта компилятор выдает ошибку. Пытался сделать так.
Цитата:
void write_float(uint16_t addr_eeprom, *param)
{
uint8_t store[4], i;
store[0] = param;
store[1] = param >> 8;
.............
store[3] = param >>24;
for(i = 0; i < 4; i++)
write_flash(addr_eeprom++; store[i])
}
Получилось сохранять только разбив float на целую и дробную част, умножая дробную часть на 100 при сохранении и деля на 100 складывая ее с целой частью при извлечении. Значение 100 использую т.к. выводятся только 2 знака после запятой. Хочется иметь более универсальную функцию для работы с любым доступным STM32 float.
Пните в нужном направлении.
diger67 вне форума   Ответить с цитированием
Старый 03.06.2016, 07:56   #2
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/116
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Цитата:
Сообщение от diger67 Посмотреть сообщение
Доброго времени суток. Есть нужда в сохранении измеренных значений во внешней flash. Float имеет размерность 4 байта, eeprom 24cxx имеет размер 1 байт , но при попытке разложить его на 4 байта компилятор выдает ошибку. Пытался сделать так.

Получилось сохранять только разбив float на целую и дробную част, умножая дробную часть на 100 при сохранении и деля на 100 складывая ее с целой частью при извлечении. Значение 100 использую т.к. выводятся только 2 знака после запятой. Хочется иметь более универсальную функцию для работы с любым доступным STM32 float.
Пните в нужном направлении.
Указатель на float приведи к uint8, и сохрани 4 подряд. Читать в обратном порядке

Более универсально как то так

Код:
вызов fwrite2ee(addr, (uint8_t*)&fData,sizeof(fData));

Прототип fwrite2ee(uint32_t addr, uint8_t * uarr, uint32_t size);
В реализации самой функции сохраняешь size раз данные по указателю uarr (байты), увеличивая этот указатель после каждого сохранения.
__________________


Последний раз редактировалось Vanizma; 03.06.2016 в 08:03.
Vanizma вне форума   Ответить с цитированием
Старый 05.06.2016, 02:00   #3
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 49
Сообщений: 196
Вес репутации: 211/7
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Спасибо за помощь, получилось что то типа того, пока протестировал на RAM stm32, работает
Цитата:
void write_eep(uint32_t addr, uint8_t *data, uint8_t size)
{
uint8_t val[4] = {0};
uint8_t i;
for(i = 0; i < size; i++)
{
val[i] = data[i];
phdata[i] = val[i];
}
}

float read_eep(uint32_t addr, uint8_t *data, uint8_t size)
{
float ggg;
uint8_t *pval = (uint8_t*)&ggg;
uint8_t i;
for(i = 0; i < size; i++)
pval[i] = data[i];
return ggg;
}
diger67 вне форума   Ответить с цитированием
Старый 14.06.2016, 00:43   #4
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 49
Сообщений: 196
Вес репутации: 211/7
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Народ, столкнулся с проблемой. Инициализирую I2C, подключаю 24lc16 к STM32f103rbt6 и натыкаюсь на грабли, программа через раз проходит проверку флага занятости EEPROM. Сейчас к процу подключены модуль на tl072, ca3140 с преобразователем в негативное напряжение, ft232. при этом с stm32f407vg с приличной обвязкой этожа EEPROM работает стабильно. В чем может быть косяк?
diger67 вне форума   Ответить с цитированием
Старый 14.06.2016, 08:38   #5
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,467
Вес репутации: 4590/146
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Цитата:
Сообщение от diger67 Посмотреть сообщение
Народ, столкнулся с проблемой. Инициализирую I2C, подключаю 24lc16 к STM32f103rbt6 и натыкаюсь на грабли, программа через раз проходит проверку флага занятости EEPROM. Сейчас к процу подключены модуль на tl072, ca3140 с преобразователем в негативное напряжение, ft232. при этом с stm32f407vg с приличной обвязкой этожа EEPROM работает стабильно. В чем может быть косяк?
почитайте ерраты на иис на эту серию (1хх). гарантируется работа иис только при использовании дма.
часто проще сделать софтовый иис.
Greg вне форума   Ответить с цитированием
Старый 14.06.2016, 10:57   #6
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 49
Сообщений: 196
Вес репутации: 211/7
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Цитата:
Сообщение от Greg Посмотреть сообщение
почитайте ерраты на иис на эту серию (1хх). гарантируется работа иис только при использовании дма.
часто проще сделать софтовый иис.
Зайду на st почитаю. Софтовый не вариант, будет тормозить основную программу. Проще использовать другую серию, F4 к примеру. На ней I2C работает стабильно.
diger67 вне форума   Ответить с цитированием
Старый 14.06.2016, 15:03   #7
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,467
Вес репутации: 4590/146
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Цитата:
Сообщение от diger67 Посмотреть сообщение
Зайду на st почитаю. Софтовый не вариант, будет тормозить основную программу. Проще использовать другую серию, F4 к примеру. На ней I2C работает стабильно.
да он и на 100 работает нормально, если через дма.
Greg вне форума   Ответить с цитированием
Старый 22.06.2016, 22:01   #8
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 49
Сообщений: 196
Вес репутации: 211/7
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Бился, долго с 10х. Результат один и тот же, сбой при проверке статуса занятости, то SCL, то SDA падают в ноль. Почитав апноты понял, что 10х работает только с м24хх в режиме I2C без DMA. Плохо, F4 работает даже с 24LCxx в дипе. Пришлось обратиться к 401 камню.
diger67 вне форума   Ответить с цитированием
Старый 23.06.2016, 00:09   #9
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 45
Сообщений: 1,720
Вес репутации: 3316/87
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Цитата:
Сообщение от diger67 Посмотреть сообщение
Бился, долго с 10х. Результат один и тот же, сбой при проверке статуса занятости, то SCL, то SDA падают в ноль. Почитав апноты понял, что 10х работает только с м24хх в режиме I2C без DMA. Плохо, F4 работает даже с 24LCxx в дипе. Пришлось обратиться к 401 камню.
Я посмотрел всю ветку и не понял проблемы!
Модуль глючит... это нормально...
Но почему софтовый вариант I2C не вариант?
Конечно, в STM работа с портом(на выход), это 3 команды вместо одной в микрочипе.
Но в любом случае это не повод для фразы "это тормозит другие задачи"!
ЛЮБОЙ процессор в ЛЮБОМ устройстве процентов 50-90% времени простаивает или "бегает" в ОСИ или основном лупе!
Так или иначе.
И такие заявления - или повод подумать или что то перекроить в проекте.
Софтверный I2C - это почти всегда просто и быстро. Особенно мастер устройство.
Кроме того ввиду "фишек" I2C софтверный вариант часто оказывается стабильнее
и гибче "периферийного" варианта!
Petr вне форума   Ответить с цитированием
Старый 23.06.2016, 00:38   #10
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 49
Сообщений: 196
Вес репутации: 211/7
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Так то оно так, но не совсем. Я понимаю что прописывать протокол обмена, если такого нет в списке периферии камня, оправдано. В противном случае расходовать память программ для совтовой реализации мовитон, особенно когда нет уверенности что основной код уложится в имеющееся пространство флеша. А такая уверенность есть.

Последний раз редактировалось diger67; 23.06.2016 в 00:43.
diger67 вне форума   Ответить с цитированием
Старый 23.06.2016, 07:23   #11
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,467
Вес репутации: 4590/146
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Цитата:
Сообщение от diger67 Посмотреть сообщение
В противном случае расходовать память программ для совтовой реализации мовитон, особенно когда нет уверенности что основной код уложится в имеющееся пространство флеша. А такая уверенность есть.
и такое писать на микрочиповском форуме...
вы, похоже, никогда не делали этой "совтовой реализации". по сравнению с обслуживанием штатной периферии код будет меньше суммарно просто в разы. даже не обсуждается.
потеряете немного в быстродействии, но приобретете в простоте.
аппаратный иис оправдан только при работе слейвом.
Greg вне форума   Ответить с цитированием
Старый 23.06.2016, 14:02   #12
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 45
Сообщений: 1,720
Вес репутации: 3316/87
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Цитата:
Сообщение от Greg Посмотреть сообщение
и такое писать на микрочиповском форуме...
вы, похоже, никогда не делали этой "совтовой реализации". по сравнению с обслуживанием штатной периферии код будет меньше суммарно просто в разы. даже не обсуждается.
потеряете немного в быстродействии, но приобретете в простоте.
аппаратный иис оправдан только при работе слейвом.
+100!

Добавлю, что и слейв то программно не намного сложнее.
Вот разве для обнаружения коллизий и мультимастере
"железный" модуль еще может пригодиться и даст какую то экономию по коду....
Но при наличии мультимастера на одной плате на шине I2C разрабов
надо гнать!!! Не раздумывая.
Petr вне форума   Ответить с цитированием
Старый 01.07.2016, 20:47   #13
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 49
Сообщений: 196
Вес репутации: 211/7
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Ну да, на STM пока реализовывал шину 8 и 16 bit для TFT на камнях где нет FSMC. Может вы и правы.....
diger67 вне форума   Ответить с цитированием
Старый 02.07.2016, 08:48   #14
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/116
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Цитата:
Сообщение от Greg Посмотреть сообщение
и такое писать на микрочиповском форуме...
вы, похоже, никогда не делали этой "совтовой реализации". по сравнению с обслуживанием штатной периферии код будет меньше суммарно просто в разы. даже не обсуждается.
потеряете немного в быстродействии, но приобретете в простоте.
аппаратный иис оправдан только при работе слейвом.
да не, объем кода примерно одинаковый.
Про слейв - согласен
__________________

Vanizma вне форума   Ответить с цитированием
Старый 02.07.2016, 14:40   #15
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,467
Вес репутации: 4590/146
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Цитата:
Сообщение от Vanizma Посмотреть сообщение
да не, объем кода примерно одинаковый.
Про слейв - согласен
не одинаковый. там же не абстрактная дискуссия была. у человека на каком-то 100-м камне (стм) не принимает (глючит) иис. даже в еррате прописано - да, такое имеет место быть, глючный типа модулёк вышел, в общем случае надо для приема иис использовать дма, даже для 2 байт (use the I2C with DMA in general, except when the Master is receiving a single byte). вообще даже красиво получается, но кода много. вся жесть, что на предпоследнем байте надо как-то остановиться и выставить бит, что следующий будет последним. нагонит страху.
а тут программные клоки, и в цикл свернуть - не сравнить...

Последний раз редактировалось Greg; 02.07.2016 в 14:58.
Greg вне форума   Ответить с цитированием
Старый 18.07.2016, 00:03   #16
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 49
Сообщений: 196
Вес репутации: 211/7
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Чудеса да и только. Пришли из Китая AT24c02. Запускаю тестовую программу чтение - модификация - запись - чтение И....... Все работает без DMA. Похоже eepro I2c от микрочип не дружат с STM32f103. Помнится читал статью что есть различия, то ли в таймингах, то ли в чем то еще. Одно радует, не надо неоправданно использовать более мощный камень для проекта.
diger67 вне форума   Ответить с цитированием
Старый 18.07.2016, 08:35   #17
Рак
Senior Member
 
Регистрация: 02.04.2008
Адрес: Кременчуг
Возраст: 31
Сообщений: 1,211
Вес репутации: 1893/63
Рак has a brilliant futureРак has a brilliant futureРак has a brilliant futureРак has a brilliant futureРак has a brilliant futureРак has a brilliant futureРак has a brilliant futureРак has a brilliant futureРак has a brilliant futureРак has a brilliant futureРак has a brilliant future
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Цитата:
Сообщение от diger67 Посмотреть сообщение
Чудеса да и только.
Чудес не бывает. Докапывайтесь до истины.
Рак вне форума   Ответить с цитированием
Старый 21.07.2016, 01:46   #18
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 49
Сообщений: 196
Вес репутации: 211/7
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Вот пипец. Провел два дня разбираясь с работой I2C в stm32f103. Запись без проблем. Считывание байта из eeprom тоже не вызвало затруднения, а вот с массивом бился долго. Первое считывание нормально, следующие только первый байт. Перерыл кучу примеров, изучил апнот, глухо. В конечном счете победил.
diger67 вне форума   Ответить с цитированием
Старый 27.07.2016, 08:45   #19
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,467
Вес репутации: 4590/146
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Цитата:
Сообщение от diger67 Посмотреть сообщение
Вот пипец. Провел два дня разбираясь с работой I2C в stm32f103. Запись без проблем. Считывание байта из eeprom тоже не вызвало затруднения, а вот с массивом бился долго. Первое считывание нормально, следующие только первый байт. Перерыл кучу примеров, изучил апнот, глухо. В конечном счете победил.
расскажи, что было
Greg вне форума   Ответить с цитированием
Старый 27.07.2016, 10:57   #20
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 49
Сообщений: 196
Вес репутации: 211/7
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Цитата:
Сообщение от Greg Посмотреть сообщение
расскажи, что было
Очень странно, но при чтении одного байта сигнал ACK после его отключения включается автоматически. А вот при чтении нескольких байтов подряд нет, помогло только принудительное включении в конце функции.
Цитата:
uint8_t read_byte_i2c(uint16_t address)
{
uint8_t data_i2c;

while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));
I2C_GenerateSTART(I2C1, ENABLE);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));
I2C_Send7bitAddress(I2C1, EEPROM_HW_ADDRESS, I2C_Direction_Transmitter);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
I2C_SendData(I2C1, (uint8_t)(address));
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BTF) == RESET);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
I2C_GenerateSTART(I2C1, ENABLE);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));
I2C_Send7bitAddress(I2C1, EEPROM_HW_ADDRESS, I2C_Direction_Receiver);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED));
data_i2c = I2C_ReceiveData(I2C1);
I2C_AcknowledgeConfig(I2C1, DISABLE);
I2C_GenerateSTOP(I2C1, ENABLE);

return data_i2c;
}

void read_buffer_i2c(uint16_t address, uint8_t buffsize)
{
uint8_t i = 0;

while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));
I2C_GenerateSTART(I2C1, ENABLE);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));
I2C_Send7bitAddress(I2C1, EEPROM_HW_ADDRESS, I2C_Direction_Transmitter);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
I2C_SendData(I2C1, (uint8_t)(address));
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BTF) == RESET);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
I2C_GenerateSTART(I2C1, ENABLE);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));
I2C_Send7bitAddress(I2C1, EEPROM_HW_ADDRESS, I2C_Direction_Receiver);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED));
for(i = 0; i < buffsize; i++)
{
i2c_RX[i] = I2C_ReceiveData(I2C1);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED));
}
I2C_AcknowledgeConfig(I2C1, DISABLE);
I2C_GenerateSTOP(I2C1, ENABLE);
I2C_AcknowledgeConfig(I2C1, ENABLE);
}
При записи такого делать не пришлось.
diger67 вне форума   Ответить с цитированием
Старый 25.09.2016, 15:55   #21
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 49
Сообщений: 196
Вес репутации: 211/7
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Занялся разбором общения с NAND по FSMC. Проинициализировал, выставил тайминги. Мелкосхема инициализируется по reset, четко считывается ID, а вот дальше грабли. Читает со сбоями, стираться вообще не желает. Просмотрел кучу примеров в интернете и все без толку, ни чего нового. Сравниваю с даташитом, вроде функции все правильно написаны. Может кто занимался данным вопросом и подсобит советом.
diger67 вне форума   Ответить с цитированием
Старый 25.09.2016, 21:26   #22
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 49
Сообщений: 196
Вес репутации: 211/7
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Ну вроде как заставил читать правильно страницу, пришлось задержку влепить после
PHP код:
*(__IO uint8_t *)((uint32_t)(deviceaddress CMD_AREA))  = NAND_CMD_AREA_TRUE1;
HAL_Delay(1); //в одну м/с, потом надо будет штатную 25 ms подставить, как по даташиту положено 
А вот со стиранием пока ищу в чем подвох, вроде все правильно, а не стирает, хоть головой о стенку бейся......
diger67 вне форума   Ответить с цитированием
Старый 25.09.2016, 21:52   #23
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 49
Сообщений: 196
Вес репутации: 211/7
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Все и стирание работает, все пришло с пониманием выставления адреса страницы ну и в двое увеличил таймаут ожидания конца стирания. Посчитал он был 9 ms, а надо от 2 до 10. ну почему то не хотело стираться.
diger67 вне форума   Ответить с цитированием
Старый 27.09.2016, 04:53   #24
diger67
Senior Member
 
Регистрация: 18.03.2016
Возраст: 49
Сообщений: 196
Вес репутации: 211/7
diger67 has a spectacular aura aboutdiger67 has a spectacular aura aboutdiger67 has a spectacular aura about
По умолчанию Re: Float сохранить в 4 байта внешней EEPROM

Во блин грабельки подсунул ST в HAL_NAND. Ну хоть есть где подсмотреть функции. Приходится правит особенно дефайны, они гады этакие все заточили в этом вопросе под NAND512. А у этой м/с страница 512 байт, в отличии от Samsung с которой я работаю(2040). Видимо отсюда и косяки при дебаге.
diger67 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
float записать в eeprom Dima Продукция MICROCHIP 3 15.04.2013 22:54
EEPROM 93LC46 nayabuka Продукция MICROCHIP 16 20.07.2009 08:29
Работа с внешней EEPROM на CCS Yokel Продукция MICROCHIP 6 02.07.2009 13:27
Расположение констант во внешней EEPROM Zenth Продукция MICROCHIP 7 25.12.2007 15:12
проблемка с PIC16F628A bereg_ok Продукция MICROCHIP 72 07.09.2007 11:00


Часовой пояс GMT +3, время: 23:11.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot