Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 01.10.2017, 21:53  
gruffi
Прописка
 
Аватар для gruffi
 
Регистрация: 01.02.2012
Сообщений: 131
Сказал спасибо: 9
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
gruffi на пути к лучшему
По умолчанию [РЕШЕНО]stm32f030 + eeprom

Добрый день, форумчане.
Необходимо организовать сохранение данных на внешнюю eeprom AT24C08D. Решил использовать аппаратный I2C, но память на посылку адреса постоянно отвечает NACK. Пока сделал отправку START и адреса памяти, но прерывания по совпадению адреса нет. По анализатору вижу, что память шлет NACK. По отладчику смотрел, то в статусном регистре подымаются флаги STOPF, NACKF и TXE. Подскажите, что я делаю не так...
Код:
void I2C_EE_Init(void)
{
    // clock enable
    RCC-›APB1ENR |= RCC_APB1ENR_I2C1EN;
    RCC-›AHBENR  |= RCC_AHBENR_GPIOBEN;
    
    // set output alternate function open drain
    GPIOB-›MODER   &= ~(GPIO_MODER_MODER8 | GPIO_MODER_MODER9);
    GPIOB-›MODER   |= (GPIO_MODER_MODER8_1 | GPIO_MODER_MODER9_1);
    GPIOB-›OTYPER  |= (GPIO_OTYPER_OT_8 | GPIO_OTYPER_OT_9);
    GPIOB-›OSPEEDR |= (GPIO_OSPEEDER_OSPEEDR8 | GPIO_OSPEEDER_OSPEEDR9);
    GPIOB-›PUPDR   &= ~(GPIO_PUPDR_PUPDR8 | GPIO_PUPDR_PUPDR9);
    GPIOB-›AFR[1]  |= ((0x01 ‹‹ GPIO_AFRH_AFSEL8_Pos) | (0x01 ‹‹ GPIO_AFRH_AFSEL9_Pos));
    
    // set i2c
    I2C1-›CR1     &= ~I2C_CR1_PE;
    I2C1-›CR1     &= ~(I2C_CR1_ANFOFF | I2C_CR1_DNF); // disabled filters
    I2C1-›TIMINGR  = 0x20303E5D;
    I2C1-›CR1     |= I2C_CR1_ADDRIE | I2C_CR1_TXIE | I2C_CR1_STOPIE | I2C_CR1_NACKIE;
    I2C1-›CR1     |= I2C_CR1_PE;
    
    NVIC_EnableIRQ(I2C1_IRQn);
}
//----------------------------------
void I2C_EE_Start(uint8_t addr)
{
    I2C1-›CR2  &= ~I2C_CR2_ADD10; // addressing mode - 7 bit
    I2C1-›CR2  &= ~I2C_CR2_RD_WRN; // data send
    I2C1-›CR2  |= addr; // eeprom address
    I2C1-›CR2  |= I2C_CR2_START; // start enable
}
Адрес отсылаю 0xA0 как в даташит указано. Только не понятно из таблицы что за A8 и A9. На микросхеме есть только A2, который я подключил к земле.

Спасибо.
Миниатюры:
Нажмите на изображение для увеличения
Название: eeprom.png
Просмотров: 0
Размер:	49.4 Кб
ID:	119348  
Реклама:

Последний раз редактировалось gruffi; 05.10.2017 в 11:31.
gruffi вне форума  
Непрочитано 01.10.2017, 22:02  
gruffi
Прописка
 
Аватар для gruffi
 
Регистрация: 01.02.2012
Сообщений: 131
Сказал спасибо: 9
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
gruffi на пути к лучшему
По умолчанию Re: stm32f030 + eeprom

Вот то что показывает анализатор
Миниатюры:
Нажмите на изображение для увеличения
Название: analyzer.png
Просмотров: 0
Размер:	13.0 Кб
ID:	119349  
gruffi вне форума  
Непрочитано 01.10.2017, 23:49  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: stm32f030 + eeprom

Тайминги I2C нормально настрой в TIMINGR

PS: A8/A9 это 2 старших бита адреса массива 8x1024, к которому ты обращаешься. Биты адреса A0-A7 идут в след байте. Как гр-ся, RTFM уже.
Hives вне форума  
Непрочитано 01.10.2017, 23:59  
gruffi
Прописка
 
Аватар для gruffi
 
Регистрация: 01.02.2012
Сообщений: 131
Сказал спасибо: 9
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
gruffi на пути к лучшему
По умолчанию Re: stm32f030 + eeprom

Спасибо, попробую перенастроить. Настраивал тайминги через куб. Попробую без него.
gruffi вне форума  
Непрочитано 02.10.2017, 01:12  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: stm32f030 + eeprom

Я как-то не смог понять, в чем смысл такого нагромождения I2c, если мы не гоняем гигабайты по DMA. У меня исправно работает софтовый ногодрыг в режиме мастера и по объему кода он вышел значительно выгоднее HAL.
Easyrider83 вне форума  
Непрочитано 02.10.2017, 01:19  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: stm32f030 + eeprom

Пруф в студию, или...
Hives вне форума  
Непрочитано 02.10.2017, 01:31  
индюк
Заблокирован
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,715
Сказал спасибо: 189
Сказали Спасибо 3,199 раз(а) в 2,074 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: stm32f030 + eeprom

Сообщение от Easyrider83 Посмотреть сообщение
У меня исправно работает софтовый ногодрыг
ниасилил шоль железку?)))
индюк вне форума  
Непрочитано 02.10.2017, 01:38  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: stm32f030 + eeprom

Может не было достаточно весомого стимула? Ногодрыг одинаково работает на любом железе. Под RTOS тоже все идеально работает. Не вижу смысла в hw i2c мастере.
Easyrider83 вне форума  
Непрочитано 02.10.2017, 01:43  
индюк
Заблокирован
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,715
Сказал спасибо: 189
Сказали Спасибо 3,199 раз(а) в 2,074 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: stm32f030 + eeprom

уууу... дауншифтинг дытехтыд-ахтунгих
индюк вне форума  
Непрочитано 02.10.2017, 01:52  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: stm32f030 + eeprom

Сообщение от индюк Посмотреть сообщение
уууу... дауншифтинг дытехтыд-ахтунгих
Да лан нудеть-то. Даже замшелый повелитель пиков с 32-битным ником, старательно исходящий на говно, когда кто-то на стм32 светодиод зажигает без изъёпства с таймером и дма, и тот, помнится, когда шла речь о квадратной шине, таки выдавливал что-то про пухлую еррату и про то, что и ногодрыг иногда приемлем, а ты прям святее папы римского решил быть)
AR_Favorit вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование программатором STERH 007 PIC микроконтроллеров ispitatel1 Песочница (вопросы новичков) 4 17.04.2017 17:18
CVAVR порча переменных Aselicon AVR 5 06.04.2017 22:18
Выход из спящего режима по INT0 putmannn AVR 24 07.01.2013 16:47
Протеус и система зажигания после симуляции не сохраняет настройки cfif11 Proteus 23 04.02.2012 01:26
AT89S8253 проблема чтения из внутренней EEPROM thunder367 Микроконтроллеры, АЦП, память и т.д 5 09.08.2007 13:08


Часовой пояс GMT +4, время: 19:41.


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