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

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

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

举报

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


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

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


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


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


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


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


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


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

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

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

东篱南山客 回答时间:2024-7-2 15:39:31
xmshao 发表于 2024-7-2 11:16
[md]

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

用的正点原子的那个串口助手,上边的波特率最高可以设置3M,晶振目前使用的是那个8M的外部晶振

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版