Например TDA7294

Форум РадиоКот • Просмотр темы - Вопрос по Eeprom
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб дек 20, 2025 21:40:54

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Вопрос по Eeprom
СообщениеДобавлено: Пт июл 01, 2022 19:20:22 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июн 08, 2017 17:52:33
Сообщений: 39
Рейтинг сообщения: 0
Здравствуйте , что то совсем запутался - есть микросхема памяти - например AT24C04 .как я понимаю у нее 4 килобита памяти это 512 ячеек по 8 байт? То есть при обращении мы можем писать/читать из 512 ячеек 1 байт? Например -
записать (адрес 28, данные 105) -записать в ячейку 28 число 105. ? В ATMEGA все проще - еепром 1 килобайт и все понятно - доступно 1024 ячейки по 1 байту.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по Eeprom
СообщениеДобавлено: Пт июл 01, 2022 19:25:18 
Встал на лапы

Карма: -10
Рейтинг сообщений: 17
Зарегистрирован: Сб июн 04, 2022 05:21:07
Сообщений: 148
Рейтинг сообщения: 0
Да, 512 ячеек по 8 бит (1 байт), итого 512 байт. Емкость указывают в битах потому, что организация выходного интерфейса может быть шириной не 8, а 16 и даже 32 бита, то есть за одно обращение может читаться как 1 байт, так и 2 или 4 байта. Особенно это актуально для SRAM и SDRAM памяти с параллельным интерфейсом.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по Eeprom
СообщениеДобавлено: Пт июл 01, 2022 19:58:25 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июн 08, 2017 17:52:33
Сообщений: 39
Рейтинг сообщения: 0
Так, уже понятней . значит как организована память (сколько бит может содержать ячейка ) читаем в даташите и радуемся .

Добавлено after 22 minutes 51 second:
А вот такая микросхема 24AA02E48T-I/OT может хранить разу 8 байт на одном адресе?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по Eeprom
СообщениеДобавлено: Пт июл 01, 2022 20:07:51 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1807
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Если хотите хранить и 16, 32, 64 битовые (и более) переменные -> разделить их на 8 бит и сохраняете их последовательно.
При чтении -> собрать их из 8 бита наоборот до 16, 32, 64 битовые.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Вопрос по Eeprom
СообщениеДобавлено: Пт июл 01, 2022 20:35:01 
Встал на лапы

Карма: -10
Рейтинг сообщений: 17
Зарегистрирован: Сб июн 04, 2022 05:21:07
Сообщений: 148
Рейтинг сообщения: 0
Нет, адреса ячеек - по каждому байту в одтельности. В этой микросхеме есть запись одного байта, а есть режим постраничной записи, когда после передачи адреса первой ячейки (совпадает с началом страницы) происходит запись целой страницы в 8 байт, вот так (вверху - запись 1 юайьа, внизу - запись целой страницы в 8 байт). Страничный режим годится для записи 64-битного long int.
Изображение
Из мануала:
6.2 Запись страницы
Байт управления записью, адрес слова и первый байт данных передаются на 24AA02XEXX так же, как при записи байта. Однако вместо создания условия остановки мастер передает до восьми байтов данных на 24AA02XEXX, которые временно сохраняются во встроенном страничном буфере и будут записаны в память после того, как мастер передаст условие остановки. При получении каждого слова три младших бита указателя адреса (четыре для 24AA025E48/24AA025E64) внутренне увеличиваются на «1». Старшие пять битов (четыре для 24AA025E48/24AA025E64) адреса слова остаются постоянными.
Если мастер должен передать более восьми слов (16 для 24AA025E48/24AA025E64) до того, как будет сгенерировано условие остановки, счетчик адресов перезапустится, и ранее полученные данные будут перезаписаны. Как и в случае с операцией записи байта, после получения условия Stop начнется внутренний цикл записи.
Примечание. Операции записи страницы ограничены записью байтов в пределах одной физической страницы независимо от количества фактически записываемых байтов. Границы физических страниц начинаются с адресов, кратных размеру буфера страницы (или «размеру страницы»), и заканчиваются адресами, кратными [размеру страницы — 1]. Если команда записи страницы пытается выполнить запись через границу физической страницы, в результате данные переносятся на начало текущей страницы (перезаписывая данные, ранее сохраненные там), а не на следующую страницу, как можно было бы ожидать. . Поэтому необходимо, чтобы прикладное программное обеспечение предотвращало операции записи страницы, которые попытаются пересечь границу страницы..


Чтение же может выполняться как произвольно (вверху), так и последовательно (внизу):
Изображение

8.2 Произвольное чтение
Операции произвольного чтения позволяют мастеру обращаться к любой ячейке памяти произвольным образом. Чтобы выполнить этот тип операции чтения, сначала должен быть установлен адрес слова. Это достигается путем отправки адреса слова на 24AA02XEXX как часть операции записи. Как только адрес слова отправлен, мастер генерирует условие запуска после подтверждения.
Это завершает операцию записи, но не раньше, чем будет установлен внутренний указатель адреса. Затем мастер снова выдает управляющий байт, но с битом R/W, установленным в «1».
Затем 24AA02XEXX выдаст подтверждение и передаст 8-битное слово данных. Мастер не подтвердит передачу, но создаст условие остановки, и 24AA02XEXX прекратит передачу

8.3 Последовательное чтение
Последовательное чтение инициируется так же, как и произвольное чтение, за исключением того, что после того, как 24AA02XEXX передаст первый байт данных, мастер выдает подтверждение, в отличие от условия остановки при произвольном чтении. Это предписывает 24AA02XEXX передать следующее последовательно адресованное 8-битное слово (рис. 8-3).
Для обеспечения последовательного чтения 24AA02XEXX содержит внутренний указатель адреса, который увеличивается на единицу после завершения каждой операции. Этот адресный указатель позволяет последовательно считывать все содержимое памяти за одну операцию.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по Eeprom
СообщениеДобавлено: Пт июл 01, 2022 21:03:13 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1310
Рейтинг сообщения: 0
vdv22, память адресуется побайтно. Т.е., каждый байт храниться по своему адресу. Фишка постраничной адресации в том, что время записи всей страницы равно времени записи одного байта (при побайтной адресации). Это особенно ощутимо при больших размерах страниц (которые при большИх объёмах ЕЕПРОМ).
PS. Добавлю, что бы было окончательно понятно.) При записи одного байта, ЕЕПРОМ считывает всю страницу, изменяет в ней значение на ваш записываемый байт, стирает всю страницу и после этого записывает уже обновлённую страницу. Т.е, всегда производится операция со страницей, хотя вы можете записывать только один байт.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по Eeprom
СообщениеДобавлено: Вс июл 03, 2022 19:07:53 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июн 08, 2017 17:52:33
Сообщений: 39
Рейтинг сообщения: 0
Всем большое спасибо за разъяснения -пошел экспериментировать ).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по Eeprom
СообщениеДобавлено: Пт авг 05, 2022 11:17:14 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июн 08, 2017 17:52:33
Сообщений: 39
Рейтинг сообщения: 0
Еще одна непонятка с микросхемой - как я понял в нее можно записать 256 байт , пишу функцией типа write (address,data) ,та вот данные хорошо (корректно -что записал то и прочитал) записываются до адреса 127 -потом при чтении ячейки возвращается 255 и так с 127 до 255 . Подскажите, что это может быть?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по Eeprom
СообщениеДобавлено: Пт авг 05, 2022 11:31:36 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1807
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Без фрагмента программного кода, угадать ваши действия сложно. И какой именно тип тестовой EEPROM?


Последний раз редактировалось veso74 Пт авг 05, 2022 11:36:43, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по Eeprom
СообщениеДобавлено: Пт авг 05, 2022 11:36:55 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июн 08, 2017 17:52:33
Сообщений: 39
Рейтинг сообщения: 0
I2C_write(200,200); // в ячейку 200 записываем значение 200
j=_read(200); // из ячейки с адресом 200 читаем значение и присваиваем переменной j - это значение равно 255

сама функция записи

void I2C_write(uint8_t address, uint8_t data) //пишем в eeprom
{

uint32_t count=0;
I2C1->CR2 = I2C_CR2_AUTOEND | (2 << 16) | I2C_CR2_START | (80 << 1); //передаем - 2 байта ,старт ,адрес ведомого.

while((I2C1->ISR & I2C_ISR_TXE) != I2C_ISR_TXE) // ждем передачи
{
count++;
if (count>30000)
{
err=1;
break;
}
}

I2C1->TXDR = address; // передаем адрес с которого писать
count=0;
while((I2C1->ISR & I2C_ISR_TXIS) != I2C_ISR_TXIS) // ждем подтверждения передачи
{
count++;
if (count>30000)
{
err=2;
break;
}
}
count=0;
I2C1->TXDR = data; // передаем даттные
while((I2C1->ISR & I2C_ISR_BUSY) == I2C_ISR_BUSY) // ждем освобождения линии
{
count++;
if (count>30000)
{
err=3;
break;
}
}

}

Добавлено after 1 minute 23 seconds:
// чтение I2C
uint8_t _read(unsigned char address) // чтение EEprom
{

I2C1->CR2 = (1 << 16) | I2C_CR2_START | (80 << 1); // пишем 1 байт ,старт ,адрес ведомого
while((I2C1->ISR & I2C_ISR_TXE) != I2C_ISR_TXE); // ждем передачи
I2C1->TXDR = address; // передаем адрес с которого писать
while((I2C1->ISR & I2C_ISR_TC) != I2C_ISR_TC); // ждем подтверждения приенма
I2C1->CR2 = I2C_CR2_STOP; // стоп

I2C1->CR2 = I2C_CR2_AUTOEND | (1<<16) | I2C_CR2_RD_WRN // автостоп,1 байт ,запрос на чтение ,старт ,передача адреса

| I2C_CR2_START | (80 << 1);

while((I2C1->ISR & I2C_ISR_RXNE) != I2C_ISR_RXNE); // ждем окончания приема

return ((uint8_t)I2C1->RXDR); // передаем принятое

}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по Eeprom
СообщениеДобавлено: Пт авг 05, 2022 11:46:53 
Друг Кота
Аватар пользователя

Карма: 5
Рейтинг сообщений: 61
Зарегистрирован: Ср сен 30, 2020 16:51:47
Сообщений: 4625
Откуда: РФ
Рейтинг сообщения: 0
Нет, адреса ячеек - по каждому байту в одтельности.

Если хотите читать побайтно, то возьмите нормальную микросхему eeprom типа W27C512 и читайте её побайтно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по Eeprom
СообщениеДобавлено: Пт авг 05, 2022 11:55:43 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июн 08, 2017 17:52:33
Сообщений: 39
Рейтинг сообщения: 0
24AA02E48T-I/OT - меня она привлекает своим маленьким корпусом и то что мне надо всего 200 ячеек для хранения .


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по Eeprom
СообщениеДобавлено: Пт авг 05, 2022 12:52:58 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1807
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Используйте обычную EEPROM, напр. 24C02, 24LC02.
Для 24AA02E48:
Цитата:
Write Protection: The upper half of the array (80h-FFh) is permanently write-protected. Write operations to this address range are inhibited. Read operations are not affected. The remaining half of the array (00h-7Fh) can be written to and read from normally.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по Eeprom
СообщениеДобавлено: Пт авг 05, 2022 18:37:32 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июн 08, 2017 17:52:33
Сообщений: 39
Рейтинг сообщения: 0
огромное спасибо!! Надо читать даташит внимательно!!!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y