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

使用L476_NUCLEO板串口通信,波特率为什么到460800就收不到数据?目标为1382400

[复制链接]
东篱南山客 提问时间:2024-6-30 14:38 / 未解决
收藏 评论6 发布时间:2024-6-30 14:38

举报

6个回答
butterflyspring 回答时间:昨天 09:49
1. 通常来说,串口是异步通讯,要保证时钟的准确性,使用晶体做为时钟源。


2. 分给串口外设的时钟至少是波特率的16倍以上最佳。

可以测量一下发送信号是否有偏差。
xmshao 回答时间:昨天 11:22
我上午找了STM32L476的Nucleo开发板做了测试,使用CubeMx配置,调用库API函数,让每个UART自发自收。


发送采用查询方式,接收采样中断方式,测试了UART1/UART3/UART4/UART5波特率设置为1382400,都没有任何问题。


可以肯定,对于片内UART,实现460800的波特率是没有压力的。注意波特率较高时,系统时钟源建议选用外部HSE。


至于接收处理代码方面,波特率较高时要接收处理要快捷点,可能的话采用DMA接收。如果中断接收的话,除了接收处理程序


本身尽量精简外,还要注意接收中断优先级设置高点。
东篱南山客 回答时间:20 小时前
xmshao 发表于 2024-7-1 11:22
我上午找了STM32L476的Nucleo开发板做了测试,使用CubeMx配置,调用库API函数,让每个UART自发自收。


就是说要尽量把那个外部晶振焊上吗?我目前使用的是那个开发板上的ST-LINK的8MHZ的晶振和内部时钟源控制,没有用串口中断,仅用单片机向电脑发送字符串,现在波特率到460800电脑端就不能收到数据了
东篱南山客 回答时间:20 小时前
xmshao 发表于 2024-7-1 11:22
我上午找了STM32L476的Nucleo开发板做了测试,使用CubeMx配置,调用库API函数,让每个UART自发自收。


我设置了DMA,用DMA的方式进行字符串的发送,依旧是串口波特率高了之后电脑收不到数据
xmshao 回答时间:10 小时前

东篱南山客 发表于 2024-7-2 00:25
就是说要尽量把那个外部晶振焊上吗?我目前使用的是那个开发板上的ST-LINK的8MHZ的晶振和内部时钟源控制 ...

只是发送都不行,会不会是你PC端的串口助手有问题啊。我这边实现起来很轻松。还有,你使用外部时钟源是必要的。Nucleo板是从STLINK那边引的8MHz过来的,可以用。时钟设置为Bypass Clock Source.

东篱南山客 回答时间:5 小时前
xmshao 发表于 2024-7-2 11:16
[md]

只是发送都不行,会不会是你PC端的串口助手有问题啊。我这边实现起来很轻松。还有,你使用外部时钟源 ...

用的正点原子的那个串口助手,上边的波特率最高可以设置3M,晶振目前使用的是那个8M的外部晶振
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版