你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103C8 UART1, I2C1, CAN冲突

[复制链接]
Terry Ho 提问时间:2021-3-11 09:15 /
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吗?

谢谢!












1615425524.png
1615426379(1).png
收藏 评论3 发布时间:2021-3-11 09:15

举报

3个回答
废鱼 回答时间:2021-3-11 10:02:02
复用功能只能选择一个,串口1可以选择A9 A10,为什么要选择复用后的引脚呢?
老牛洋车 回答时间:2021-3-11 10:08:17
将各个功能分配给不同的引脚,也就是说每个引脚只承担一个功能,就不会出现冲突的现象了。
daisyduxy 回答时间:2021-3-11 11:12:46
为避免冲突,在使用引脚的复用功能时,只选择一个外设模块,要么USART要么CAN。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版