STM32中FSMC與硬體I2C衝突
阿新 • • 發佈:2019-02-20
ST官網勘誤表中列到,FSMC與I2C不能同時開啟。解決的辦法可以有
1:將I2C對映到PB9,PB8.
2:使用模擬的I2C.
I/O重對映步驟:(以串列埠為例)
1.開啟重對映時鐘和USART重對映後的I/O口引腳時鐘,
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |RC C_APB2Periph_AFIO,ENABLE);
2.I/O口重對映開啟.
GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);
3.配製重對映引腳, 這裡只需配置重對映後的I/O,原來的不需要去配置.(對映的引腳是固定的,查手冊可得)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB, &GPIO_InitStructure);
1:將I2C對映到PB9,PB8.
2:使用模擬的I2C.
I/O重對映步驟:(以串列埠為例)
1.開啟重對映時鐘和USART重對映後的I/O口引腳時鐘,
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |RC C_APB2Periph_AFIO,ENABLE);
2.I/O口重對映開啟.
GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);
3.配製重對映引腳, 這裡只需配置重對映後的I/O,原來的不需要去配置.(對映的引腳是固定的,查手冊可得)
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB, &GPIO_InitStructure);