打印
[STM32F1]

串口不够用了,可以将某一USART分时映射到不同GPIO引脚来扩展串口吗?

[复制链接]
475|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
st316|  楼主 | 2023-10-16 06:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的STM32F103ZET6上面有5个串口,但有6个模块需要通过串口和芯片通信。

现打算将USART2分时映射到不同的GPIO引脚上面,来达到扩展串口的目的。

某一时间段内:
        PD5     ------> USART2_TX
        PD6     ------> USART2_RX
另一时间内:
        PA2     ------> USART2_TX
        PA3     ------> USART2_RX

不知这种方法从原理上是否可行?

我测试了以下两种实现方式均没有成功。
1. 切换时先通过 HAL_UART_DeInit(&huart2) 关掉串口2,然后用 MX_USART2_UART_Init() 初始化。
2. 什么都不做,直接把之前的 GPIO 通过 HAL_GPIO_DeInit(GPIOx, GPIO_PIN_a|GPIO_PIN_b); 接触映射,q然后将新的 GPIO 通过 HAL_GPIO_Init() 映射做为串口2的 TX 和 RX.

望遇到过类似问题的朋友指点迷津,谢谢啦!

使用特权

评论回复
评论
xch 2023-10-16 13:48 回复TA
临时工不好用 
沙发
cr315| | 2023-10-16 09:37 | 只看该作者
应该可以的,具体实现方式可以通过软件编程来完成。

使用特权

评论回复
板凳
jobszheng| | 2023-10-16 09:58 | 只看该作者
可以的,基于分时复用的策略。
编程的时候略复杂一些,在切换时,注意要先确保TXD的发送完成,再切换。

使用特权

评论回复
地板
yiy| | 2023-10-16 11:31 | 只看该作者
肯定可以,你可以在ST cubeMX配置里设置使用哪些引脚。

使用特权

评论回复
5
玄德| | 2023-10-16 12:02 | 只看该作者

分时复用,肯定可行。


使用特权

评论回复
6
yangxf1217| | 2023-10-16 14:48 | 只看该作者
改管教定义的话不重启重新初始化应该不行,反正我是这么试过没成功。

使用特权

评论回复
7
xueyingdao| | 2023-10-16 16:52 | 只看该作者
这么搞,还不如上一个 CD4052 ,一个串口 附加两个io口,就可以拓展4个分时串口了。最好的办法,就是协议层面去统一,前提是能修改后端的设备的串口程序。

使用特权

评论回复
8
shizaigaole| | 2023-10-16 18:18 | 只看该作者
用定时,配合GPIO自己做一个,如果频率不是足够高的话

使用特权

评论回复
9
chenjun89| | 2023-10-16 21:34 | 只看该作者
肯定不行啊,可以用模拟开关分时复用

使用特权

评论回复
10
mbutterfly| | 2023-10-17 13:00 | 只看该作者
应该可以吧。是不是漏了哪个步骤。

使用特权

评论回复
11
Tiger200102| | 2023-10-17 15:09 | 只看该作者
应该可以

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

167

帖子

3

粉丝