OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2714|回复: 1

串口单线半双工模式经验分享

[复制链接]

27

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
232
金钱
232
注册时间
2016-8-31
在线时间
252 小时
发表于 2019-10-22 09:03:49 | 显示全部楼层 |阅读模式
最近玩串口舵机,尝试了一下串口的单线半双工模式,走了很多弯路,最后发现很简单,记录下来供大家参考
先看手册:
微信截图_20191022082504.png
1、USART_CR2寄存器的LINENCLKEN位    置0
2、USART_CR3寄存器的SCENIREN位       置0
其实上面两个寄存器复位值本来就是0,其实不用管,别不小心置1就行

3、USART_CR3中的HDSEL位(”HALF DUPLEX SEL”)    置1
这个需要设置。对应库函数为USART_HalfDuplexCmd(USART1, ENABLE);

配置就这么一点东西。重要的有两个注意事项
一、手册上这一章节(图上有)有这么一句话:● 当没有数据传输时,TX总是被释放。因此,它在空闲状态的或接收状态时表现为一个标准I/O口。这就意味该I/O在不被USART驱动时,必须配置成悬空输入(或开漏的输出高)。
这句话可能是写错了,也可能是描述的芯片自动完成的操作,总之TX不能设置悬空输入,要用复用推挽输出或者复用开漏输出!!

二、TX要加上拉电阻!!!拉到3.3V。(可能拉到5V也可以,毕竟有的TX是FT的。但是我PA9拉到5V之后烧了,不知道是线接错了还是怎么的。。。)
为什么我没上拉的时候也能跟电脑通信?因为跟电脑通信是直接接的USB转串口的RX,电平是稳定的,而舵机的单线就不行了

其实上面说的网上大神们的教程都提到了,可惜我眼瞎


最后一点要注意的,波特率高的时候,接收中断函数一定不要太复杂,时间有限



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

231

帖子

0

精华

高级会员

Rank: 4

积分
755
金钱
755
注册时间
2018-12-7
在线时间
131 小时
发表于 2019-10-22 09:30:17 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-2 20:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表