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

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

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

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

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

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


 
Опции темы

stm32f030 + eeprom

Непрочитано 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.RUN
 
Регистрация: 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,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: stm32f030 + eeprom

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

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

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

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

уууу... дауншифтинг дытехтыд-ахтунгих
__________________
кагмаподэ магмаподэ
индюк вне форума  
Непрочитано 02.10.2017, 01:52  
AR_Favorit
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.03.2010
Сообщений: 2,896
Сказал спасибо: 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, время: 02:30.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.