Jump to content

I2C STM32F0


Стальной
 Share

Recommended Posts

Приветствую. Не получается запустить I2C на STM32F030F4P6 для общения с EEPROM. Использую StdPeriph. Сначала пробовал сам писать, потом взял код отсюда. Результат одинаков: На линиях активности нет, висит 3В. Через CubeMX все работает.

Последний код, который я пробовал:


void I2C_EEPROM_Init(void)
{
	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);
	GPIOA->MODER |= GPIO_MODER_MODER9_1 | GPIO_MODER_MODER10_1;			// Режим альтернативной функции
	GPIOA->OTYPER |= GPIO_OTYPER_OT_9 | GPIO_OTYPER_OT_10;				// Открытый коллектор
	GPIOA->OSPEEDR |= 0xFF<<18;	// Максимальная скорость
	// Выбор альтернативной функции
	GPIO_PinAFConfig(GPIOA, GPIO_PinSource9,  GPIO_AF_1);	// I2C1_SCL
	GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);	// I2C1_SDA

	I2C_InitTypeDef I2C_InitStruct;
	I2C_InitStruct.I2C_Timing = 0x00402D42;
	I2C_InitStruct.I2C_AnalogFilter = I2C_AnalogFilter_Disable;
	I2C_InitStruct.I2C_DigitalFilter = 0x00;
	I2C_InitStruct.I2C_Mode = I2C_Mode_I2C ;
	I2C_InitStruct.I2C_OwnAddress1 = 0xDD;
	I2C_Init( I2C1, &I2C_InitStruct);
	I2C_Cmd(I2C1, ENABLE);
}


int main()

{
	/*
	 * ВКЛЮЧЕНИМЕ IWDG
	 */
	// включаем LSI
	RCC_LSICmd(ENABLE);
	while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET);
	// разрешается доступ к регистрам IWDG
	IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
	// устанавливаем предделитель
	IWDG_SetPrescaler(IWDG_Prescaler_256);
	// значение для перезагрузки
	IWDG_SetReload(0xEA);
	// перезагрузим значение
	IWDG_ReloadCounter();
	// LSI должен быть включен
	//IWDG_Enable();
	/*
	 * ВКЛЮЧЕНИМЕ IWDG ЗАВЕРШЕНО
	 */


	/*
	 * Запуск ФАПЧ
	 * Основная частота 48 МГц
	 * UART от HSI
	 */
	RCC->CFGR |= 0xAA<<18; //pll mul = 12
	RCC->CFGR |= 5<<8; //APB prescaller = 4
	RCC->CFGR3 |= 3; //USART clock from HSI
	RCC->CR |= RCC_CR_PLLON;
	while ((RCC->CR | RCC_CR_PLLRDY) == 0);
	RCC->CFGR |= 2; //PLL as SYSCLK
	/*
	 * Настройка ФАПЧ завершена
	 */
	//RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
//	I2C_Initialization();

	I2C_EEPROM_Init();

	while (1)
	{
		I2C_TransferHandling(I2C1, 0xA0, 1, I2C_Reload_Mode, I2C_Generate_Start_Write);//devAddr
		while(I2C_GetFlagStatus(I2C1, I2C_ISR_TXE) == RESET);//TXDR empty
		I2C_SendData(I2C1, 0);//memAddr
		while(I2C_GetFlagStatus(I2C1, I2C_ISR_TCR) == RESET);//transmition complete
		I2C_TransferHandling(I2C1, 0xA0, 1, I2C_AutoEnd_Mode, I2C_No_StartStop);
		while(I2C_GetFlagStatus(I2C1, I2C_ISR_TXE) == RESET);
		I2C_SendData(I2C1, 25);
		while(I2C_GetFlagStatus(I2C1, I2C_ISR_STOPF) == RESET);
		I2C_ClearFlag(I2C1, I2C_ICR_STOPCF);

		for (long int i = 0; i < 30000; i++)
			IWDG_ReloadCounter();
	}
}

 

Прошу помощи с этой проблемой. Спасибо.

Link to comment
Share on other sites

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

и можно еще не забыть, что в 0-вках резисторы подтяжки уже встроены и включить их

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Link to comment
Share on other sites

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...