реклама на сайте
подробности

 
 
> STM32F103CBT и I2C2, нет генерации старта
rav38
сообщение Sep 4 2015, 08:43
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 12-06-12
Из: Москва
Пользователь №: 72 275



Здравствуйте все!
Пытаюсь сделать опрос датчика по I2C2, используя HAL библиотеки stm32cubef1.
При попытке что либо сделать на шине (запись, чтение) получаю ошибку выполнения ф-ции и картинку на линии SDA (в прищепке).
Под отладчиком по шагам запускаю ф-цию HAL_I2C_IsDeviceReady. Вся работа заканчивается моментом генерации стартового бита.
Код
      /* Generate Start */
      SET_BIT(hi2c->Instance->CR1, I2C_CR1_START);


После выполнения этой строчки на SDA появляется шум.

Инициализация I2C2(взял из примеров):
CODE
void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c)
{
GPIO_InitTypeDef GPIO_InitStruct;

GPIO_InitStruct.Pin = GPIO_AMS_SCL_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
HAL_GPIO_Init(GPIO_AMS_SCL_PORT, &GPIO_InitStruct);

GPIO_InitStruct.Pin = GPIO_AMS_SDA_PIN;
HAL_GPIO_Init(GPIO_AMS_SDA_PORT, &GPIO_InitStruct);

HAL_NVIC_ClearPendingIRQ ( AMS_I2C_ER_IRQ );
HAL_NVIC_SetPriority ( AMS_I2C_ER_IRQ, 1, 0 );
HAL_NVIC_EnableIRQ ( AMS_I2C_ER_IRQ );

HAL_NVIC_ClearPendingIRQ ( AMS_I2C_EV_IRQ );
HAL_NVIC_SetPriority ( AMS_I2C_EV_IRQ, 2, 0 );
HAL_NVIC_EnableIRQ ( AMS_I2C_EV_IRQ );

AMS_I2C_CLK_ENABLE();
};

void vAMS_I2C_Init(void)
{
AMS_I2CHandle.Instance = AMS_I2C;
AMS_I2CHandle.Init.ClockSpeed = I2C_STANDARD_MODE_MAX_CLK;
AMS_I2CHandle.Init.DutyCycle = I2C_DUTYCYCLE_2;
AMS_I2CHandle.Init.OwnAddress1 = AMS_I2C_ADDR;
AMS_I2CHandle.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
AMS_I2CHandle.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
AMS_I2CHandle.Init.OwnAddress2 = 0xFF;
AMS_I2CHandle.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
AMS_I2CHandle.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;

if(HAL_I2C_Init(&AMS_I2CHandle) != HAL_OK)
{
vAMS_Error_Handler();
}
}


Тактирование GPIO тоже включено. Подтяжки стоят.

На форуме упоминались проблемы именно со вторым модулем I2C, но скорее косячу сам. Где-то что-то не то настроил по ощущениям, а что именно понять не могу. Раньше аппартным модулем I2C не пользовался.
Как вариант попробовать подключить библиотеку CPAL (http://www.st.com/web/en/catalog/tools/PF258336) или сделать программную шину, но все же хочу понять почему не могу запустить HAL.

В общем прошу помощи.

Сообщение отредактировал rav38 - Sep 4 2015, 08:46
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
esaulenka
сообщение Sep 4 2015, 10:17
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Почему-то на осциллографе отчётливо видны 25 МГц, а ноги второго I2C перекрываются с эзернетом.
Этот чудо-HAL случайно тактирование на модуль MAC не включил? :-)

UPD. Глупость говорю, попутал со 105-м.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 00:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016