香主,请问stm8s003f3stm8s003 内部晶振振能满足串口2400波特率通信吗

21ic官方微信-->
后使用快捷导航没有帐号?
查看: 2674|回复: 9
香主,请问stm8s003f3内部晶振能满足串口2400波特率通信吗?批量会不会有问题?
&&未结帖(20)
主题帖子积分
高级技术员, 积分 675, 距离下一级还需 325 积分
高级技术员, 积分 675, 距离下一级还需 325 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
高级技术员, 积分 675, 距离下一级还需 325 积分
高级技术员, 积分 675, 距离下一级还需 325 积分
香主,请问stm8s003f3内部晶振能满足串口2400波特率通信吗?批量会不会有问题?
主题帖子积分
高级工程师, 积分 7950, 距离下一级还需 50 积分
高级工程师, 积分 7950, 距离下一级还需 50 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
高级工程师, 积分 7950, 距离下一级还需 50 积分
高级工程师, 积分 7950, 距离下一级还需 50 积分
应该是可以的& &楼主&&帮你顶一个&&再看看别人的意见吧&&
主题帖子积分
高级技术员, 积分 675, 距离下一级还需 325 积分
高级技术员, 积分 675, 距离下一级还需 325 积分
主题帖子积分
专家等级:结帖率:90%
主题帖子积分
高级技术员, 积分 675, 距离下一级还需 325 积分
高级技术员, 积分 675, 距离下一级还需 325 积分
谢谢楼上,没人讨论吗,
主题帖子积分
资深工程师, 积分 13137, 距离下一级还需 6863 积分
资深工程师, 积分 13137, 距离下一级还需 6863 积分
主题帖子积分
专家等级:结帖率:55%
主题帖子积分
资深工程师, 积分 13137, 距离下一级还需 6863 积分
资深工程师, 积分 13137, 距离下一级还需 6863 积分
应该没有问题吧,这个波特率使用内置晶振就可以实现
好好学习,天天向上!
主题帖子积分
助理工程师, 积分 1569, 距离下一级还需 431 积分
助理工程师, 积分 1569, 距离下一级还需 431 积分
主题帖子积分
专家等级:结帖率:9%
主题帖子积分
助理工程师, 积分 1569, 距离下一级还需 431 积分
助理工程师, 积分 1569, 距离下一级还需 431 积分
内振基本会有一点的偏差,一般你做这么高的波特率批量的时候,还是需要注意的,最好做一些校准。如果你要是220v供电的话,可以采取官方给的资料,进行内部晶振校准。不然,批量的时候,一旦出现问题,确实比较麻烦,
专业单片机Zigbee方案代开发。可接毕设。
主题帖子积分
助理工程师, 积分 1144, 距离下一级还需 856 积分
助理工程师, 积分 1144, 距离下一级还需 856 积分
主题帖子积分
专家等级:结帖率:89%
主题帖子积分
助理工程师, 积分 1144, 距离下一级还需 856 积分
助理工程师, 积分 1144, 距离下一级还需 856 积分
我的经验:
stm32f103,内部振荡器,57600波特率,毫无压力。
主题帖子积分
初级技术员, 积分 85, 距离下一级还需 15 积分
初级技术员, 积分 85, 距离下一级还需 15 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
初级技术员, 积分 85, 距离下一级还需 15 积分
初级技术员, 积分 85, 距离下一级还需 15 积分
肯定可以了,我115200都可以用,它内部有16M HSI,16分频后还有1M的波特率,用2400怎么会有问题呢?
主题帖子积分
中级技术员, 积分 156, 距离下一级还需 144 积分
中级技术员, 积分 156, 距离下一级还需 144 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
中级技术员, 积分 156, 距离下一级还需 144 积分
中级技术员, 积分 156, 距离下一级还需 144 积分
主题帖子积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高级技术员, 积分 791, 距离下一级还需 209 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
高级技术员, 积分 791, 距离下一级还需 209 积分
高级技术员, 积分 791, 距离下一级还需 209 积分
数据通信要靠协议来保证可靠性,单纯考量频率精度与波特率的关系没什么意义吧?!
主题帖子积分
中级技术员, 积分 277, 距离下一级还需 23 积分
中级技术员, 积分 277, 距离下一级还需 23 积分
主题帖子积分
专家等级:结帖率:57%
主题帖子积分
中级技术员, 积分 277, 距离下一级还需 23 积分
中级技术员, 积分 277, 距离下一级还需 23 积分
16M 会有什么问题,STM8不是工业级的,没有大的影响就不会有问题
技术奇才奖章
人才类勋章
奔腾之江水
发帖类勋章
无冕之王奖章
等级类勋章
时间类勋章
核心会员奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
时间类勋章
欢快之小溪
发帖类勋章
社区建设奖章
等级类勋章
时间类勋章
技术新星奖章
人才类勋章
技术高手奖章
人才类勋章
涓涓之细流
发帖类勋章
时间类勋章
晶莹之水滴
发帖类勋章STC单片机自适应波特率串口的实现方法
查看: 3502|
评论: 0|原作者: 赵培宇
摘要:   STC单片机自适应波特率串口的实现方法通常有以下几种:   (1)协议约定通信开始时主机固定发送1 个字符,从机以不同的波特率试探接收,当接收到的数据与约定相同时,确定该波特率即是正确的通信波特率。    ...
  STC自适应波特率串口的实现方法通常有以下几种:
  (1)协议约定通信开始时主机固定发送1 个字符,从机以不同的波特率试探接收,当接收到的数据与约定相同时,确定该波特率即是正确的通信波特率。
  (2)协议约定通信开始时主机发送1 串字符,从机以某固定波特率接收,然后通过软件分析接收到的数据,计算出接收数据与发送数据之间的倍数关系,从而确定正确的波特率。
  (3)协议约定通信开始时主机固定发送1 个字符,从机用单片机定时器检测RXD 上的信号宽度,通过计算来确定主机的波特率。
  以上3 种方法,第一种由于需要多次试探,效率很低;第二种计算量过大,不适合单片机处理;第三种方式单片机有现成的定时器资源,计算也相对简单,所以优选这种。
  要测量脉冲宽度,前提是单片机的时钟信号必须稳定。目前很多STC单片机可选外接晶振时钟或片内RC振荡时钟,片内RC振荡时钟省去了外部的晶振等元件,成本降低、电路板的体积也可以缩小,这对成本及体积敏感的应用很具优势。但选用片内RC振荡时,频率会有±15%左右的误差,频率的稳定性也比外接晶振要差,按理论计算值设置波特率参数,无法保证可靠的通信,但按以上自适应波特率串口的第三种方法,每次通信前实测、计算、确定波特率常数,就可以实现稳定可靠的通信,这样充分利用了STC单片机的优势。
  1 STC 单片机的特点
  标准51 芯片由于定时器最高分辨率只有1 μs,对于较高的通信波特率来说,测量精度不够,导致计算值不准,无法正常工作。STC系列单片机是在标准51单片机基础上发展起来的,它增加了很多实用的接口电路,扩大了时钟的频率范围,设计出了1T 时钟的芯片,可以通过软件对系统时钟分频,并提供了片内RC振荡时钟,在目前51芯片的市场占有极大的份额。STC系列单片机采用片内RC振荡时钟、自适应波特率串口通信技术,可以广泛地应用于分布式控制、智能仪表、通信等行业。
  2 自适应工作原理
  STC 单片机采用异步通信,UART 工作于模式1(8位UART,波特率可变),用定时计数器2做波特率发生器,工作于模式2(8位自动重装模式),主从机按图1方式连接,从机自适应主机的波特率。
  自适应过程由主机发送联络字符开始。为了使从机获得最大的测量脉宽,提高测量精度,由主机发送二进制“0”.如图2所示,二进制“0”由1位起始位,8位数据位(低位在先)及1位停止位构成,其中1位起始位和8位数据位全为0,所以低电平的宽度为9 b.
  从机查询RXD引脚的电平,检测到低电平后就启动定时器0开始计时,再检测到高电平就停止定时器0计时,根据定时器0的定时值就可以计算出主机的波特率。
  当时钟分频寄存器CLK_DIV=0(不分频),特殊功能寄存器AUXR=0xC0(T0 用1T 时钟),则:
  而STC51 系列单片机在UART 模式1,时钟模式为1T 时,其波特率公式为:
  从机UART在模式1下,将式(4)或式(6)计算结果作为定时器1重装值,设定通信参数,通过串口回送应答信号给主机。主机如正确接收到从机回送的信号,就说明从机已完成波特率自适应,可以开始正常通信了。
  3 误差分析
  为保证可靠通信,要求通信双方的波特率相对误差小于2.5%.
  在自适应波特率校准系统中,误差主要来自两个方面,一是定时器T0 启动和停止滞后造成的误差ΔT0;二是波特率发生器T1 本身固有的一个机器周期误差ΔT1 = ±1.由于STC51单片机采用1T 时钟定时,ΔT0 误差只有标准51系列芯片的1 12,系统误差主要由ΔT1 决定。
  以STC12C5620为例,当采用片内RC振荡,时钟频率通常在5.2~6.9 MHz 之间。当时钟频率为5.2 MHz,SMOD=1时,UART时钟分别按12T,1T 计算,见表1,表2.
  表1、表2中加粗部分表示可以选用的波特率值,由表1、表2可知,只要编程时选择合适的时钟,在5.2 MHz时钟频率下,波特率可以在300~115 200 b/s 之间实现自适应,由T1 取整带来的误差在0.5%以内。当系统时钟为6.9 MHz时,用同样的方法计算,也可以证明波特率可以在300~115 200 b/s 之间实现自适应,由T1 取整带来的误差也在0.5%以内。由此可见,STC12C5620采用片内RC振荡,可以在300~115 200 b/s之间完成波特率自适应,实现稳定可靠的通信。
  4 软件流程与程序
  主机软件流程图如图3所示,从机软件流程图如图4所示。
  以下为C51波特率自适应程序:
  5 应用实例
  采用STC12C5620 设计的重力检测开关,如图5 所示。为降低成本、缩小体积,采用了片内RC振荡,不设按键及显示。重力检测开关首次工作前需设定一些参数,并校准。由于没有键盘及显示,采用和计算机联机设置、校准。本电路采用了上述的自适应波特率工作方式,由PC机作主机,通过串口来初始化重力检测开关的各参数。
  设置时,将重力检测开关与计算机之间用RS 232线连接好,然后点击PC机软件界面上的“连接串口”按钮进行波特率自适应,当界面上状态栏提示“连接串口成功!”时,表示波特率自适应工作正确完成, 如图6所示,可以进行参数设置和校准操作。设置、校准后,重力检测开关就可脱机正常工作了。
  经反复验证,该电路在300~115 200 b/s 波特率范围内可稳定通信工作。
  6 结语
  该波特率自适应方法,可扩展应用于其他单片机系统,解决对方的波特率未知、或对方的波特率有偏差而无法正常通信的问题,即使对方的波特率不是标准值也可正常工作,具有较大的实用价值。
上一篇:下一篇:
Powered by &
这里是—这里可以学习 —这里是。
栏目导航:后使用快捷导航没有帐号?
查看: 3391|回复: 13
stm32f407 串口6波特率为1200时,波形完全不对
在线时间1558 小时
威望23207分
芯币10367枚
E金币221枚
TA的帖子TA的资源
哥们用的是 stm32f407ZGT6.
就是发现串口6(以串口1开始算,就是 uart5)有点问题。
前期一直用2400的波特率好好的。
后来一个地方要用1200了,发现死活通信不上,查了一回发现乖乖,这个口子发的都是乱码。
各种怀疑电路出问题,换电阻啥的,都不行。
最后直接上示波器,发现问题了。
2400的波特率的时候,虽然波形不是太漂亮,但基本正确,就是0.5ms一位的样子。
一旦到了1200,呵呵,那波形我都不认识。
问题是,同样是这个板子,串口5 1200和 2400的波形却很正常,当然通信也很正常。
曾经也怀疑过是不是因为它们的时钟源不一致,导致波特率的误差有点不对劲,才出现问题?
于是看了一下手册,但发现手册上的看不太懂。
因为我们是 外部8M晶振,内部PLL倍频成 192M。
我看了一下,uart5挂在84M上,uart4挂在42M上,如果这样看,看表格——其实所有表格,但凡有1200bps的,都表示 波特率误差几乎为0.
所以我也不清楚,为啥这个地方一旦用了这个串口,在1200时,波形就这么诡异。
有经验的哥们都来说说~
本人变态,生物勿近
&&&&&&&&&&
在线时间2971 小时
威望6031分
芯币11779枚
E金币538枚
TA的帖子TA的资源
外设频率太高的话,波特率就不能设置太低。
STM32的波特率是由一个16位寄存器控制分频的。
如果84M/1200 = 70000, 这个数大于65535,所以这个分频系数写到寄存器里就是错的
而42M/1200 = 35000,在16位表示之内,可以正常工作。
如果像这么说,岂不是和我猜的一样.....
我曾经想,是不是可以去把单独供给 串口的那个时钟分频一下
我记得stm32的每个外设的时钟都可以单独分频的.
好吧回头我跟我们老大说说这事情&
这个和主频木关系吧,串口的时钟源用的难道是系统的而不是8M的?&
EEWORLD QQ水群招各种能开车的司机、技术爱好者:(EEWORLD开发板置换) 加群暗号:猫女神。水军为您保驾护航,发布广告、销售信息的勿扰。
在线时间1673 小时
威望2462分
芯币11441枚
E金币158枚
TA的帖子TA的资源
外设频率太高的话,波特率就不能设置太低。
STM32的波特率是由一个16位寄存器控制分频的。
如果84M/1200 = 70000, 这个数大于65535,所以这个分频系数写到寄存器里就是错的
而42M/1200 = 35000,在16位表示之内,可以正常工作。
这个和主频木关系吧,串口的时钟源用的难道是系统的而不是8M的?
stm32的时钟系统非常强大也非常复杂。
这就是它最屌的地方。&
CPU使用HCLK
高速外设使用PCLK2
低速外设使用PCLK1
一共就这三个时钟&
没看到底层,表示不清楚;&
construction complete!
在线时间1558 小时
威望23207分
芯币10367枚
E金币221枚
TA的帖子TA的资源
外设频率太高的话,波特率就不能设置太低。
STM32的波特率是由一个16位寄存器控制分频的。
如果84M/1200 = 70000, 这个数大于65535,所以这个分频系数写到寄存器里就是错的
而42M/1200 = 35000,在16位表示之内,可以正常工作。
如果像这么说,岂不是和我猜的一样.....
我曾经想,是不是可以去把单独供给 串口的那个时钟分频一下
我记得stm32的每个外设的时钟都可以单独分频的.
好吧回头我跟我们老大说说这事情
本人变态,生物勿近
在线时间1558 小时
威望23207分
芯币10367枚
E金币221枚
TA的帖子TA的资源
这个和主频木关系吧,串口的时钟源用的难道是系统的而不是8M的?
没看到底层,表示不清楚;
好歹开开时钟从哪来的吧~&
本人变态,生物勿近
在线时间2971 小时
威望6031分
芯币11779枚
E金币538枚
TA的帖子TA的资源
这个和主频木关系吧,串口的时钟源用的难道是系统的而不是8M的?
CPU使用HCLK
高速外设使用PCLK2
低速外设使用PCLK1
一共就这三个时钟
额,我没看时钟树~&
EEWORLD QQ水群招各种能开车的司机、技术爱好者:(EEWORLD开发板置换) 加群暗号:猫女神。水军为您保驾护航,发布广告、销售信息的勿扰。
在线时间1673 小时
威望2462分
芯币11441枚
E金币158枚
TA的帖子TA的资源
CPU使用HCLK
高速外设使用PCLK2
低速外设使用PCLK1
一共就这三个时钟
&&额,我没看时钟树~
construction complete!
在线时间1673 小时
威望2462分
芯币11441枚
E金币158枚
TA的帖子TA的资源
没看到底层,表示不清楚;
好歹看看时钟从哪来的吧~
太久没看那东西了,加上这底层都不用我写,太作孽了&
construction complete!
在线时间1192 小时
威望4670分
芯币3845枚
E金币148枚
TA的帖子TA的资源
五彩晶圆(中级), 积分 4670, 距离下一级还需 1330 积分
五彩晶圆(中级), 积分 4670, 距离下一级还需 1330 积分
要么是驱动库的bug
要么是配置问题
没用过4xx,仅仅是猜测
在线时间1558 小时
威望23207分
芯币10367枚
E金币221枚
TA的帖子TA的资源
额,楼上的各位亲,感谢关注。
这事情,我觉得就是 lcotfj说的那样。
顺带上个图,有图有真相。
我觉得唯一的办法是把那个串口的时钟分频,否则别无他法。
不过已经封库了,他们爱改不改,我不管~~
本帖子中包含更多资源
才可以下载或查看,没有帐号?
本人变态,生物勿近
在线时间1558 小时
威望23207分
芯币10367枚
E金币221枚
TA的帖子TA的资源
这个和主频木关系吧,串口的时钟源用的难道是系统的而不是8M的?
stm32的时钟系统非常强大也非常复杂。
这就是它最屌的地方。
本人变态,生物勿近
在线时间1558 小时
威望23207分
芯币10367枚
E金币221枚
TA的帖子TA的资源
好歹看看时钟从哪来的吧~
太久没看那东西了,加上这底层都不用我写,太作孽了
本人变态,生物勿近
在线时间2 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
本人表示,如果使用外部晶振,来解决传输问题,把外部晶振抬高,到24MHz,将倍频降低,因为温度会导致倍频电路频率出现柔化,到了该下降的脉冲,降不下来,最主要的是,单片机集成度是个麻烦,把频率调谐电路设计进去是最大的误区!当芯片发热,频率监视电路变性,产生很小的误差,这个误差却酿成错误;举个例子,有人牛逼哄哄的相信STC单片机的内置起振电路完全可以胜任我们的设计需要,然后出了一堆的问题开始骂STC,STC在10度的时候,跟在25度的时候,内置起振电路频率差了一倍,为什么有人这么热衷于集成?楼主的核心如果开到10MB假设能开到,我估计当场崩溃了...内置调谐电路是不精确的,因为温度变化导致了这一问题!尽量少依赖内部震动!
......淡定,淡定
假如是这种问题,为啥我另一个串口没问题捏?
温漂当然影响很大这个偶也听说过。
BTW,不要跟我提STC,我虽然说过我以后(大概2012年时说过这话)为避免自己成为搅人是非的长舌妇&
在线时间1558 小时
威望23207分
芯币10367枚
E金币221枚
TA的帖子TA的资源
本人表示,如果使用外部晶振,来解决传输问题,把外部晶振抬高,到24MHz,将倍频降低,因为温度会导致倍频电路频率出现柔化,到了该下降的脉冲,降不下来,最主要的是,单片机集成度是个麻烦,把频率调谐电路设计进去是最大的误区!当芯片发热,频率监视电路变性,产生很小的误差,这个误差却酿成错误;举个例子,有人牛逼哄哄的相信STC单片机的内置起振电路完全可以胜任我们的设计需要,然后出了一堆的问题开始骂STC,STC在10度的时候,跟在25度的时候,内置起振电路频率差了一倍,为什么有人这么热衷于集成?楼主的核心如果开到10MB假设能开到,我估计当场崩溃了...内置调谐电路是不精确的,因为温度变化导致了这一问题!尽量少依赖内部震动!
......淡定,淡定
假如是这种问题,为啥我另一个串口没问题捏?
温漂当然影响很大这个偶也听说过。
BTW,不要跟我提STC,我虽然说过我以后(大概2012年时说过这话)为避免自己成为搅人是非的长舌妇,我发誓不再提及STC。
STC是个什么玩意,用过的都知道,非要贪那点小便宜或者被什么狗屁民族情怀所忽悠,我也没啥好说
最后回到主题:
依赖内部的晶振肯定要谨慎。
但高度集成是大趋势,你说呢?别忘了当年640K的笑话。
当然最重要的还是那句话
假如是时钟源本身出现问题,为啥另一个串口没问题?
所以我从一开始就没有怀疑过其它问题,而单单只怀疑每个串口各自的东西,而不是公共的东西
本人变态,生物勿近
Powered by
逛了这许久,何不进去瞧瞧?avr内部晶振用于串口通信可靠吗??? - 维库电子市场网
avr内部晶振用于串口通信可靠吗???
作者:cbutterfly 栏目:
avr内部晶振用于串口通信可靠吗???我用的是内部晶振,用于可计算机串口通信,波特率是1.本来照Datasheet说的,ubrrl=/(16*)-1=25可是我如此设置在微机上却怎末也接收不到正确字节,最后无奈之下修改了一下ubrrl,发现ubrrl=26的时候正好就可以通信了后来又是了一下19200,两种波特率,发现都是设定ubrrl=频率/(16*波特率)的时候通信没问题,而照Datasheet说的ubrrl=频率/(16*波特率)-1的时候却都不正确我一共用了30多片测试,都是如此,在配合看Datasheet上的说明,有点不理解这-1的意思,难道Datasheet上有误吗???2.我又找了以前带晶振的芯片(,用晶振,老芯片和微机通信无问题)还用波特率,却发现部分和它通信就无法接受到正确数据了,需要把ubrrl上调到27~29才行,可是却是不是每片都一样,就是有的要26,有的要27,有的要到28或29才行.后来我看了一下校正时钟的字节,发现每个原产的芯片都是不一样的基本上(我可是从双龙那里买的正规芯片)唯一的解释就是内部晶振频率不一致的问题了,不过这也偏差太大了吧,而且还每片都不一致阿,看来通信还是应该用外部晶振阿
作者: zsmbj 于
11:48:00 发布:
如果用uart通讯,还是用外边晶振可靠啊。&
作者: 成云峰 于
19:28:00 发布:
内部晶振需要校准,而且受温度影响大&
作者: qjy_dali 于
20:57:00 发布:
内部不是晶振吧?晶振是晶振,振荡器是振荡器。AVR内部好像是RC振荡器吧
作者: hotpower 于
21:11:00 发布:
avr内部晶振用于串口通信需要自适应否则漂移很厉害&
作者: idog 于
21:28:00 发布:
如果波特率高于最好不要用。&
作者: 双龙 于
11:58:00 发布:
看具体条件&
作者: hudaidai 于
16:13:00 发布:
有时可以通过测量市电频率进行校准通过测量50Hz信号反推CPU频率,然后决定BRG分频系数。
作者: dorbin2001 于
17:45:00 发布:
内部RC需要先校准,如果使用环境的温度变化比较大的话谨用!只有C8051FXXX的内部RC是精密矫正,可以放心使用。
作者: jiuri 于
18:36:00 发布:
作者: zzb147 于
9:35:00 发布:
这个问题还是第一次遇到过用了这么多年AVR,还没有遇到过这种情况
作者: stintair 于
15:01:00 发布:
跟温度有关&
讨论内容:
Copyright &
浙ICP证030469号

我要回帖

更多关于 波特率与晶振的关系 的文章

 

随机推荐