ST芯片型号:
STM32F103C8T6
PB7,PB6用于UART1
PB8,PB9用于做CAN.
问题:I2C1_REMAP关闭,影响PB7,PB6的UART1功能,导致UART1不能发送
I2C1_REMAP打开,影响PB9,PB8的CAN功能,导致CAN TX不能发送
具体如下:
使用PB7,PB6做IO口,需要做如下映射,才可以UART1, tx,rx正常工作:
GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE); //Must remap I2C1, otherwise PB6 conficts
如果:
GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);
为disable,uart1 tx不能发送,rx接收正常.
根据芯片手册,也正常
复用功能 I2C1_REMAP = 0 I2C1_REMAP = 1
I2C1_SCL PB6 PB8
I2C1_SDA PB7 PB9
复用功能 USART1_REMAP = 1
USART1_TX PB6
USART1_RX PB7
由于PB6,PB7已经用于UART1, 所以需要将 I2C1_REMAP设置为1,切换到PB8,PB9.
但是PB8,PB9做can时,又与I2C1冲突了,导致PB9 can不能发送,但PB8 can接收正常.
复用功能 CAN_REMAP[1:0]=”10”
CAN1_RX PB8
CAN1_TX PB9
怎样能解决这个冲突呢,是芯片设计bug吗?