OpenEdv-开源电子网

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

有没试过自己的stm32片子,低波特率,如300,,出现的都是乱码,求解?

[复制链接]

13

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2011-8-16
在线时间
6 小时
发表于 2012-12-14 11:23:30 | 显示全部楼层 |阅读模式
发现一奇怪问题,一般串口配置时都是用的9600,或更高,输出正常,没问题,
突然发现把波特率调低点,如1200,发出的都是乱码。起初怀疑keil的问题,换在IAR下
依旧输出乱码,有没有遇到类似问题的啊?这是怎么回事呢?换了块板子低波特率还是不行,这难道是板子设计的问题?不会是片子本身的问题吧?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2011-8-16
在线时间
6 小时
 楼主| 发表于 2012-12-14 11:30:04 | 显示全部楼层
用买的开发板试了试,设为低波特率,如600,出现还都是乱码。
莫非stm32还挑剔波特率?还是软件配置有问题呢?若配置有问题
怎么高于9600的都可以呢?
回复 支持 反对

使用道具 举报

13

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2011-8-16
在线时间
6 小时
 楼主| 发表于 2012-12-14 11:39:06 | 显示全部楼层
原子哥在吗?有没用低波特率试过串口发送数据呢?我试的好几个板子,
低波特率输出的都是乱码,太奇怪了,这是神马情况呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-12-14 12:57:56 | 显示全部楼层
我怎么一改就OK呢?


ALIENTEK MINISTM32 实验3 串口实验.rar

21.26 KB, 下载次数: 547

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2011-8-16
在线时间
6 小时
 楼主| 发表于 2012-12-14 13:04:42 | 显示全部楼层
1200是可以的,低于1200的,用600,或300,原子哥有没试过呢?用官方库函数的,和寄存器的试过了,都是乱码啊!
回复 支持 反对

使用道具 举报

13

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2011-8-16
在线时间
6 小时
 楼主| 发表于 2012-12-14 13:04:57 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
1200是可以的,低于1200的,用600,或300,原子哥有没试过呢?用官方库函数的,和寄存器的试过了,都是乱码啊!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-12-14 13:06:09 | 显示全部楼层
没试过。
也不想试了
这么慢,用来看电影啊?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-12-14 13:06:53 | 显示全部楼层
你的不行,应该是误码率高了吧,看看stm32的数据手册研究下吧,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2011-8-16
在线时间
6 小时
 楼主| 发表于 2012-12-14 13:10:27 | 显示全部楼层
 
1200是可以的,低于1200的,用600,或300,原子哥有没试过呢?用官方库函数的,和寄存器的试过了,都是乱码啊!



回复 支持 反对

使用道具 举报

13

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2011-8-16
在线时间
6 小时
 楼主| 发表于 2012-12-14 13:13:28 | 显示全部楼层
回复【6楼】yyzhen:
---------------------------------
回复【7楼】正点原子:
---------------------------------
低波特率有用啊,有的流量计通讯,必须以低波特率唤醒,如埃尔斯特的流量计就是这样。估计是误码率的问题。
看来得看寄存器来算算了,直接调用库也不是万能的了
回复 支持 反对

使用道具 举报

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2013-2-1
在线时间
3 小时
发表于 2014-5-2 17:39:22 | 显示全部楼层
回复【10楼】yyzhen:
---------------------------------
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV4; 
用UART2 

uart2 接在APB1总线上  然后4分频  

       Tx / Rx 波特率 = fck/(16*uartdiv) 

uartdiv 最大分频数为 4095.9375
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2014-12-16
在线时间
0 小时
发表于 2014-12-16 11:07:17 | 显示全部楼层
回复【2楼】yyzhen:
---------------------------------
http://blog.csdn.net/ljymoonlight/article/details/39205507
1、由于项目需求需要对stm32的波特率进行调整,能够支持300的波特率。

然后通过计算 


X 波特率计算器 Y是波特率   X的只能够是12位,最大值4096
300 =  72M/16*X
4800X = 72M
X=15000 
X=7500   Y = 600
X=3750  Y = 1200


300 = 50M/16*X      
X = 10416.666666666666666666666666667  Y = 300
X  = 5208.3333333333333333333333333333 
2、总结:

通过上面的计算,在50MHZ以上,要想设置600或者是300的波特率,根本是不可能。USARTDIV=是12位最大的数值是4096..
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-27 21:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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