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

 
 
> 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



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

 


RSS Текстовая версия Сейчас: 30th June 2025 - 02:18
Рейтинг@Mail.ru


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