13436|14

7815

帖子

57

TA的资源

裸片初长成(中级)

楼主
 

stm32f407 串口6波特率为1200时,波形完全不对 [复制链接]

哥们用的是 stm32f407ZGT6.

就是发现串口6(以串口1开始算,就是 uart5)有点问题。

前期一直用2400的波特率好好的。



后来一个地方要用1200了,发现死活通信不上,查了一回发现乖乖,这个口子发的都是乱码。

各种怀疑电路出问题,换电阻啥的,都不行。



最后直接上示波器,发现问题了。

2400的波特率的时候,虽然波形不是太漂亮,但基本正确,就是0.5ms一位的样子。

一旦到了1200,呵呵,那波形我都不认识。



问题是,同样是这个板子,串口5 1200和 2400的波形却很正常,当然通信也很正常。



曾经也怀疑过是不是因为它们的时钟源不一致,导致波特率的误差有点不对劲,才出现问题?

于是看了一下手册,但发现手册上的看不太懂。



因为我们是 外部8M晶振,内部PLL倍频成 192M。



我看了一下,uart5挂在84M上,uart4挂在42M上,如果这样看,看表格——其实所有表格,但凡有1200bps的,都表示 波特率误差几乎为0.



所以我也不清楚,为啥这个地方一旦用了这个串口,在1200时,波形就这么诡异。



有经验的哥们都来说说~
此帖出自stm32/stm8论坛

最新回复

我是刚遇到这个问题,芯片是STM32F407,调用void RCC_PCLK2Config(uint32_t RCC_HCLK)将APB2的时钟降到48Mhz即可。RCC_PCLK2Config(RCC_HCLK_Div4);  详情 回复 发表于 2017-10-9 18:34
点赞 关注
个人签名

强者为尊,弱者,死无葬身之地

 

回复
举报

6040

帖子

204

TA的资源

版主

沙发
 
外设频率太高的话,波特率就不能设置太低。
STM32的波特率是由一个16位寄存器控制分频的。
如果84M/1200 = 70000, 这个数大于65535,所以这个分频系数写到寄存器里就是错的
而42M/1200 = 35000,在16位表示之内,可以正常工作。
此帖出自stm32/stm8论坛
 
 

回复

1149

帖子

3

TA的资源

五彩晶圆(初级)

板凳
 
lcofjp 发表于 2015-5-6 15:30
外设频率太高的话,波特率就不能设置太低。
STM32的波特率是由一个16位寄存器控制分频的。
如果84M/1200 = 70000, 这个数大于65535,所以这个分频系数写到寄存器里就是错的
而42M/1200 = 35000,在16位表示之内,可以正常工作。

这个和主频木关系吧,串口的时钟源用的难道是系统的而不是8M的?
此帖出自stm32/stm8论坛
 
个人签名construction complete!
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

4
 
lcofjp 发表于 2015-5-6 15:30
外设频率太高的话,波特率就不能设置太低。
STM32的波特率是由一个16位寄存器控制分频的。
如果84M/1200 = 70000, 这个数大于65535,所以这个分频系数写到寄存器里就是错的
而42M/1200 = 35000,在16位表示之内,可以正常工作。

如果像这么说,岂不是和我猜的一样.....

我曾经想,是不是可以去把单独供给 串口的那个时钟分频一下



我记得stm32的每个外设的时钟都可以单独分频的.

好吧回头我跟我们老大说说这事情
此帖出自stm32/stm8论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

5
 
zqjqq88 发表于 2015-5-6 15:36
这个和主频木关系吧,串口的时钟源用的难道是系统的而不是8M的?

没看到底层,表示不清楚;
此帖出自stm32/stm8论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

6040

帖子

204

TA的资源

版主

6
 
zqjqq88 发表于 2015-5-6 15:36
这个和主频木关系吧,串口的时钟源用的难道是系统的而不是8M的?

CPU使用HCLK
高速外设使用PCLK2
低速外设使用PCLK1
一共就这三个时钟

此帖出自stm32/stm8论坛
 
 
 

回复

1149

帖子

3

TA的资源

五彩晶圆(初级)

7
 
lcofjp 发表于 2015-5-6 15:55
CPU使用HCLK
高速外设使用PCLK2
低速外设使用PCLK1
一共就这三个时钟

  额,我没看时钟树~
此帖出自stm32/stm8论坛
 
个人签名construction complete!
 
 

回复

1149

帖子

3

TA的资源

五彩晶圆(初级)

8
 
辛昕 发表于 2015-5-6 15:43
没看到底层,表示不清楚;

好歹看看时钟从哪来的吧~
此帖出自stm32/stm8论坛
 
个人签名construction complete!
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

9
 
要么是驱动库的bug
要么是配置问题
没用过4xx,仅仅是猜测
此帖出自stm32/stm8论坛
 
个人签名电工
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

10
 
额,楼上的各位亲,感谢关注。
这事情,我觉得就是 lcotfj说的那样。
顺带上个图,有图有真相。

我觉得唯一的办法是把那个串口的时钟分频,否则别无他法。
不过已经封库了,他们爱改不改,我不管~~

此帖出自stm32/stm8论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

11
 
zqjqq88 发表于 2015-5-6 15:36
这个和主频木关系吧,串口的时钟源用的难道是系统的而不是8M的?

stm32的时钟系统非常强大也非常复杂。

这就是它最屌的地方。


此帖出自stm32/stm8论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

12
 
zqjqq88 发表于 2015-5-6 16:29
好歹看看时钟从哪来的吧~

太久没看那东西了,加上这底层都不用我写,太作孽了
此帖出自stm32/stm8论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

13
 
本人表示,如果使用外部晶振,来解决传输问题,把外部晶振抬高,到24MHz,将倍频降低,因为温度会导致倍频电路频率出现柔化,到了该下降的脉冲,降不下来,最主要的是,单片机集成度是个麻烦,把频率调谐电路设计进去是最大的误区!当芯片发热,频率监视电路变性,产生很小的误差,这个误差却酿成错误;举个例子,有人牛逼哄哄的相信STC单片机的内置起振电路完全可以胜任我们的设计需要,然后出了一堆的问题开始骂STC,STC在10度的时候,跟在25度的时候,内置起振电路频率差了一倍,为什么有人这么热衷于集成?楼主的核心如果开到10MB假设能开到,我估计当场崩溃了...内置调谐电路是不精确的,因为温度变化导致了这一问题!尽量少依赖内部震动!
此帖出自stm32/stm8论坛
 
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

14
 
那颗星星 发表于 2015-5-11 08:37
本人表示,如果使用外部晶振,来解决传输问题,把外部晶振抬高,到24MHz,将倍频降低,因为温度会导致倍频电路频率出现柔化,到了该下降的脉冲,降不下来,最主要的是,单片机集成度是个麻烦,把频率调谐电路设计进去是最大的误区!当芯片发热,频率监视电路变性,产生很小的误差,这个误差却酿成错误;举个例子,有人牛逼哄哄的相信STC单片机的内置起振电路完全可以胜任我们的设计需要,然后出了一堆的问题开始骂STC,STC在10度的时候,跟在25度的时候,内置起振电路频率差了一倍,为什么有人这么热衷于集成?楼主的核心如果开到10MB假设能开到,我估计当场崩溃了...内置调谐电路是不精确的,因为温度变化导致了这一问题!尽量少依赖内部震动!

......淡定,淡定



假如是这种问题,为啥我另一个串口没问题捏?



温漂当然影响很大这个偶也听说过。

BTW,不要跟我提STC,我虽然说过我以后(大概2012年时说过这话)为避免自己成为搅人是非的长舌妇,我发誓不再提及STC。

STC是个什么玩意,用过的都知道,非要贪那点小便宜或者被什么狗屁民族情怀所忽悠,我也没啥好说



最后回到主题:

依赖内部的晶振肯定要谨慎。

但高度集成是大趋势,你说呢?别忘了当年640K的笑话。



当然最重要的还是那句话

假如是时钟源本身出现问题,为啥另一个串口没问题?

所以我从一开始就没有怀疑过其它问题,而单单只怀疑每个串口各自的东西,而不是公共的东西
此帖出自stm32/stm8论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

15
 
我是刚遇到这个问题,芯片是STM32F407,调用void RCC_PCLK2Config(uint32_t RCC_HCLK)将APB2的时钟降到48Mhz即可。RCC_PCLK2Config(RCC_HCLK_Div4);
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表