|
STM32F050 I2C, не работает |
|
|
|
Jun 17 2014, 18:14
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Привет всем. Пытаемся завести на данном проце термодатчик LM75. Собственно до датчика дело не доходит. Не работает сам I2C. Инициализация: CODE RCC->APB1ENR = RCC_APB1ENR_PWREN | RCC_APB1ENR_TIM2EN | RCC_APB1ENR_I2C1EN; GPIOA->MODER |= GPIO_MODER_MODER9_1 | GPIO_MODER_MODER10_1; //MODER 32 разрядный // 00 - по умолчанию вход, 01(GPIO_MODER_MODER0_0) - выход, 10(GPIO_MODER_MODER0_1) - альтернативная функция // 11(GPIO_MODER_MODER0) - аналоговый режим GPIOA->AFR[1] |= 0x00000440;//здесь i2c GPIOA->OTYPER |= GPIO_OTYPER_OT_9 | GPIO_OTYPER_OT_10; //OTYPER 16 разрядный если 1(GPIO_OTYPER_OT_0) - открытый коллектор, а если 0 - обычный выход(по умолчанию) GPIOA->PUPDR = GPIO_PUPDR_PUPDR9_0 | GPIO_PUPDR_PUPDR10_0; //OPUPDR 32 разрядный // 00 - без подтяжки(по умолчанию), 01(GPIO_PUPDR_PUPDR0_0) - подтяжка к "+", 10(GPIO_PUPDR_PUPDR0_1) - подтяжка к "-"
I2C1->CR1|=I2C_CR1_PE; //включить I2C I2C1->CR1&=~I2C_CR1_PE; //выключить I2C while(I2C1->CR1&I2C_CR1_PE); //ждём пока выключится I2C //I2C1->TIMINGR|=(PRESC << 28)|(SCLL<<0)|(SCLH<<8)|(SCLDEL<<20)|(SDADEL<<16); //PRESC=11, SCLL=199, SCLH=195, SCLDEL=4, SDADEL=2 это для 10кГц //PRESC=11, SCLL=19, SCLH=15, SCLDEL=4, SDADEL=2 это для 100кГц //PRESC=5, SCLL=9, SCLH=3, SCLDEL=3, SDADEL=3 это для 400кГц //PRESC=5, SCLL=3, SCLH=1, SCLDEL=1, SDADEL=0 это для 1000кГц I2C1->TIMINGR|=(11 << 28)|(199<<0)|(195<<8)|(4<<20)|(2<<16); //конфигурируем тайминги I2C1->CR1|=I2C_CR1_PE; //включить I2C I2C1->CR2 = I2C_CR2_AUTOEND | (1<<16) | I2C_CR2_RD_WRN | (0x90<<1);
Чтение температуры: CODE // LM75 address = 0x90 #define LM75_Addr 0x90 // Temperature Register of LM75 #define LM75_TEMP_Reg 0x00 uint16_t I2C_LM75_Temp_Read ( uint8_t addr ) { uint16_t RegValue = 0;
// 1. Послать в LM75 адрес регистра - 0x00 // Конфигурирование адреса ведомого; количество байтов, которые будут запрограммированы (переданы); перезагрузки и генерировать старт I2C_TransferHandling ( I2C1, addr, 1, I2C_Reload_Mode, I2C_Generate_Start_Write );
// Подождите, пока ISR.TXIS флаг не будет установлен // TXIS==1 - TXDR empty while ( I2C_GetFlagStatus ( I2C1, I2C_ISR_TXIS ) == RESET );
// Отправить адрес (LM75_TEMP_Reg) I2C_SendData ( I2C1, LM75_TEMP_Reg );
// Подождите, пока ISR.TCR флаг не будет установлен // TCR == 1 - Заданное кол-во байт передано while ( I2C_GetFlagStatus ( I2C1, I2C_ISR_TCR ) == RESET );
// 2. Читать ответ LM75 // Конфигурирование адреса ведомого; количество байтов, которые будут считаны; перезагрузки и генерировать старт I2C_TransferHandling ( I2C1, addr, 2, I2C_Reload_Mode, I2C_Generate_Start_Read );
// ждать приёма байта // ISR.RXNE == 1 - byte received while ( I2C_GetFlagStatus ( I2C1, I2C_ISR_RXNE ) == RESET ); RegValue = I2C_ReceiveData ( I2C1 ); RegValue <<= 8;
// ждать приёма байта // ISR.RXNE == 1 - byte received while ( I2C_GetFlagStatus ( I2C1, I2C_ISR_RXNE ) == RESET ); RegValue |= I2C_ReceiveData ( I2C1 );
// Сгенерировать STOP I2C_TransferHandling ( I2C1, addr, 0, I2C_Reload_Mode, I2C_Generate_Stop );
// Подождите, пока ISR.STOPF флаг не будет установлен // STOPF == 1 - а шине действует STOP while ( I2C_GetFlagStatus ( I2C1, I2C_ISR_STOPF ) == RESET);
// Очистить флаг STOPF // ICR.STOPF := 1 1 - очистка флага ISR.STOPF I2C_ClearFlag ( I2C1, I2C_ICR_STOPCF );
return RegValue; }
Результат - I2C труп полный, на осцилле обе ноги единицы (pull-up-ы 10кил). Ничего не шевелится  . Кто-то с I2C на том проце работал? Он там вообще рабочий? Или я где-то ошибся? В ДШ на ногах I2C PA9, PA10 есть странный коммент: "This alternate feature is available on standard dies only." Стандарт умер, да здравствует стандарт Спасибо.
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
 |
Ответов
|
Jun 19 2014, 08:16
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Та ну, нету.... А в ДШ есть - вложение. А вот запросто может быть, что он просто получился кривым и глюкавым, что о нём поспешили забыть и заменить его на те же F031 или на F051 ..
Эскизы прикрепленных изображений
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Jun 19 2014, 08:31
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(hd44780 @ Jun 19 2014, 12:16)  А вот запросто может быть, что он просто получился кривым и глюкавым, что о нём поспешили забыть и заменить его на те же F031 или на F051 .. Проц, как проц. Просто, сейчас его называют по-другому. Новость уже обсуждали тут (http://www.compel.ru/2014/05/29/pereimenovanie-mikrokontrollerov-stm32f0-i-stm32f3/). Обычно кривость наблюдается у программиста, "особенности" чипа описаны в специальном документе. Сомнительно, что такой явный и повторяемый баг туда не попал.
|
|
|
|
Сообщений в этой теме
hd44780 STM32F050 I2C Jun 17 2014, 18:14 smalcom Примеры из библиотеки работают? Jun 17 2014, 19:57 glags Цитата(smalcom @ Jun 17 2014, 22:57) Прим... Jun 17 2014, 21:08 adnega Я возможно не прав (поправьте меня), но вроде прин... Jun 17 2014, 20:09 andron86 Вам уже писали, запустите тупо пример от stm и пос... Jun 17 2014, 21:54 hd44780 Из примеров I2C на сайте ST нашёл только это - htt... Jun 18 2014, 05:00 Alien85 Что за стиль программирования такой?
Интерфейс на... Jun 18 2014, 05:27 hd44780 Цитата(Alien85 @ Jun 18 2014, 11:27) Како... Jun 18 2014, 06:41  Alien85 Цитата(hd44780 @ Jun 18 2014, 12:41) Разн... Jun 18 2014, 06:50  jcxz Цитата(hd44780 @ Jun 18 2014, 12:41) Разн... Jun 18 2014, 06:58 hd44780 Как поётся в одной советской песне - "Вдвоём ... Jun 18 2014, 08:18 jcxz У граждан ДНР ещё хватает времени заниматься I2C? Jun 18 2014, 08:49  hd44780 Цитата(jcxz @ Jun 18 2014, 14:49) У гражд... Jun 18 2014, 11:19 glags Смотрю тут вместо помощи одна критика. То это ни т... Jun 18 2014, 10:58 Axel Цитата(glags @ Jun 18 2014, 13:58) ...Луч... Jun 19 2014, 04:34  jcxz Цитата(Axel @ Jun 19 2014, 10:34) Теперь ... Jun 19 2014, 06:14 smalcom ЦитатаИз примеров I2C на сайте ST нашёл только это... Jun 18 2014, 23:27 glags Цитата(smalcom @ Jun 19 2014, 02:27) чо-ч... Jun 19 2014, 07:19  Axel Цитата(glags @ Jun 19 2014, 10:19) 1) С р... Jun 19 2014, 08:31 x893 Нет такого процессора у ST - STM32F050F4 Jun 19 2014, 08:00 Golikov A. а че такое SPL, простите?
да я бы проверил все ф... Jun 19 2014, 09:09 scifi Цитата(Golikov A. @ Jun 19 2014, 13:09) а... Jun 19 2014, 09:25 glags Цитата(Golikov A. @ Jun 19 2014, 12:09) а... Jun 19 2014, 10:55 Golikov A. не допер дописать STM32 SPL, а по SPL такое выдает... Jun 19 2014, 09:30 Сергей Борщ Цитата(glags @ Jun 19 2014, 10:19) На 4,5... Jun 19 2014, 11:34 glags Цитата(Сергей Борщ @ Jun 19 2014, 14:34) ... Jun 19 2014, 11:49  Сергей Борщ Цитата(glags @ Jun 19 2014, 14:49) Вы име... Jun 19 2014, 13:13   glags Цитата(Сергей Борщ @ Jun 19 2014, 16:13) ... Jun 19 2014, 13:38 Axel Так вроде I2C_CR1_SMBHEN (3-й бит в CR1) здесь не ... Jun 19 2014, 12:20 glags Цитата(Axel @ Jun 19 2014, 15:20) Так вро... Jun 19 2014, 12:56 Golikov A. ЦитатаИ не двумя операциями - сбросом и установкой... Jun 19 2014, 18:16 glags Интерфейс наконец то ожил.
Но стопор получается по... Jun 19 2014, 19:26 Сергей Борщ Сейчас почитаю описание датчика, а пока небольшое ... Jun 20 2014, 07:05 smalcom >> Но стопор получается после передачи номер... Jun 19 2014, 19:33 glags Цитата(smalcom @ Jun 19 2014, 22:33) ... Jun 19 2014, 19:50 smalcom >> Ниже привожу осцилограмку жёлтый данные, ... Jun 19 2014, 21:09 glags Цитата(smalcom @ Jun 20 2014, 00:09) ... Jun 20 2014, 03:59 hd44780 Да. Датчик. Когда его убирали физически, этого нет... Jun 20 2014, 04:00 smalcom Однако вселенная любит пошутить.
У меня сейчас на ... Jun 21 2014, 08:28 Axel Цитата(smalcom @ Jun 21 2014, 11:28) Одна... Jun 21 2014, 08:55 smalcom я её и не обвиняю. действительно, прочитал внимате... Jun 21 2014, 10:20 Axel Цитата(smalcom @ Jun 21 2014, 13:20) Jun 21 2014, 10:37 smalcom По теме с "зажиманием" сигналов. Столкну... Jun 23 2014, 07:49 Golikov A. ЦитатаИ в чем была причина? Во-первых нам любопытн... Jun 23 2014, 21:03 glags Привет всем.
Ну что господа, родил я код. Привожу... Jun 24 2014, 14:44
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|