| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Работа с EEPROM по SPI
03.05.2012, 17:47
|
|
|
Частый гость
Регистрация: 03.06.2010
Сообщений: 14
Сказал спасибо: 3
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Работа с EEPROM по SPI
Помогите пожалуйста реализовать в CodeVision чтение и запись в eeprom по SPI. Делаю все по даташиту 25LC256.
#include ‹spi.h›
*****
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 2000,000 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: Low
// SPI Data Order: MSB First
SPCR=0x50;
SPSR=0x00;
******
//Чтение 0x0000
spi(0x05); //Команда Чтения
PORTC=spi(0x0000); // Выбор адреса и присваиваю полученное число к порту.
В адресе eeprom 0x0000 находиться число 0x11, в следующем адресе 0x0001 хранится число 0х22.
Когда пытаюсь прочитать адрес 0х0000 на осциллографе вот что получается

Желтым отображается команда, синим ответ от eeprom
В итоге, какой бы адрес я не читал картина на осциллографе не изменяется...
Подскажите пожалуйста, что я делаю не так?
|
|
|
|
Сказали "Спасибо" dominik2
|
|
|
03.05.2012, 17:57
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: Работа с EEPROM по SPI
А код где?
Там вообще просто все.
1) Опустили CS.
2) Отправили байт команды
3) Отправили 2 байта адреса
4) Читаем один или сколько угодно байт
5) Подняли CS
|
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
03.05.2012, 23:25
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Работа с EEPROM по SPI
Сообщение от dominik2
|
Помогите пожалуйста реализовать в CodeVision
//Чтение 0x0000
spi(0x05); //Команда Чтения
PORTC=spi(0x0000); // Выбор адреса и присваиваю полученное число к порту.
В адресе eeprom 0x0000 находиться число 0x11, в следующем адресе 0x0001 хранится число 0х22.
|
Не знаю что там у вас по адресу 0, но 0x05 - это не команда чтения, а RDSR - read status register. Вот он вам отвечает одним и тем же - статусом.
Команда чтения - Read data - 0x03.
|
|
|
|
Сказали "Спасибо" _Артём_
|
|
|
03.05.2012, 23:38
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Работа с EEPROM по SPI
Да и желтый луч больше на клок похож, чем на дату...
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
04.05.2012, 11:10
|
|
|
Частый гость
Регистрация: 03.06.2010
Сообщений: 14
Сказал спасибо: 3
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Работа с EEPROM по SPI
Ну это тут, по 0х03 позывных тоже никаких. сейчас и по 0х05 тишина по приему.
Тактовик там нормальный, это команда отображена)
Может лучше по делу? Как должен выглядеть кусок кода для чтения из eeprom?
Сейчас взял Xmega128A1, кусок кода такой у меня для чтения
SET_SPIC_SS_LOW //опускаем защелку
spic_master_tx_rx(0b00000101); //читаем регистр
spic_master_tx_rx(0x03); //подаем команду чтения из памяти
spic_master_tx_rx(0x00); //говорим нулевой адрес
a=spic_master_tx_rx(0x00); //забиваем оттуда значение в переменную
// можно и без переменной, сути рабочести не меняет, ответа нет
SET_SPIC_SS_HIGH //поднимаем защелку
Конфигурация SPI та же:
// SPIC is enabled
// SPI mode: 0
// Operating as: Master
// Data order: MSB First
// SCK clock prescaler: 16
// SCK clock doubled: Off
// SCK clock frequency: 2000,000 kHz
|
|
|
|
Сказали "Спасибо" dominik2
|
|
|
04.05.2012, 11:15
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: Работа с EEPROM по SPI
Сообщение от dominik2
|
SET_SPIC_SS_LOW //опускаем защелку
spic_master_tx_rx(0b00000101); //читаем регистр
spic_master_tx_rx(0x03); //подаем команду чтения из памяти
spic_master_tx_rx(0x00); //говорим нулевой адрес
spic_master_tx_rx(0x00); //говорим нулевой адрес
a=spic_master_tx_rx(0x00); //забиваем оттуда значение в переменную
// можно и без переменной, сути рабочести не меняет, ответа нет
SET_SPIC_SS_HIGH //поднимаем защелку
|
Выбросить вторую строчку и все заработает.
Какое-то упорное нежелание читать даташиты.
Последний раз редактировалось Easyrider83; 04.05.2012 в 11:22.
|
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
04.05.2012, 11:21
|
|
|
Гражданин KAZUS.RUN
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Работа с EEPROM по SPI
он над нами издевался...
[чтение статуса памяти]
SET_SPIC_SS_LOW(); // опускаем CS
spic_master_tx_rx(0x05); // подаем команду
byte State = spic_master_tx_rx(0xFF); // читаем регистр
SET_SPIC_SS_HIGH(); // поднимаем CS
[чтение ячеек памяти]
SET_SPIC_SS_LOW(); // опускаем CS
spic_master_tx_rx(0x03); // подаем команду чтения
spic_master_tx_rx(0x00); // подаем high-part адреса
spic_master_tx_rx(0x00); // подаем low-part адреса
byte Data = spic_master_tx_rx(0xFF); // читаем данные
SET_SPIC_SS_HIGH(); // поднимаем CS
PS и блоки желательно не объединять
Последний раз редактировалось Hives; 04.05.2012 в 11:25.
|
|
|
|
04.05.2012, 12:42
|
|
|
Частый гость
Регистрация: 03.06.2010
Сообщений: 14
Сказал спасибо: 3
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Работа с EEPROM по SPI
Пробую и такой вариант:
SET_SPIC_SS_LOW //опускаем защелку
spic_master_tx_rx(0x03); //подаем команду чтения из памяти
spic_master_tx_rx(0x00); //говорим нулевой адрес
spic_master_tx_rx(0x00); //говорим нулевой адрес
a=spic_master_tx_rx(0x00); //забиваем оттуда значение в переменную
// и с FF тож
SET_SPIC_SS_HIGH //поднимаем защелку
Для чтения регистра то же, в принципе. Сигнал идет, ответа нет.
Может дело в частоте SPI? Пробовал пока только 2 и 8Мгц (на 5В питания памяти)
|
|
|
|
Сказали "Спасибо" dominik2
|
|
|
04.05.2012, 12:45
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: Работа с EEPROM по SPI
Как подключали?
MISO и MOSI не попутали?
|
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
04.05.2012, 12:50
|
|
|
Гражданин KAZUS.RUN
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Работа с EEPROM по SPI
а какой именно ответ ты ждешь?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Работа с SD-картами по SPI
|
sonartiflo |
Микроконтроллеры, АЦП, память и т.д |
3 |
13.02.2012 23:13 |
|
Простейший программатор SPI EEPROM
|
dimmich |
Микроконтроллеры, АЦП, память и т.д |
6 |
09.08.2010 23:08 |
|
SPI eeprom 95p08 и 95080
|
ipkin |
Микроконтроллеры, АЦП, память и т.д |
1 |
11.06.2008 23:52 |
|
Инициализация SPI-EEPROM в Proteus 7.1
|
slavik_1234 |
Микроконтроллеры, АЦП, память и т.д |
0 |
10.09.2007 21:19 |
|
Какую память выбрать EEPROM/Flash с SPI/I2C?
|
graham |
Микроконтроллеры, АЦП, память и т.д |
9 |
17.11.2005 19:17 |
Часовой пояс GMT +4, время: 06:43.
|
|