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

stm8s105 uart设置1M波特率乱码

[复制链接]
fitsir 提问时间:2015-10-14 10:49 /
芯片是stm8s105,外部晶振16M,使用库函数开发,上位机支持1M波特率,设置波特率1M的时候 输出为乱码,
波特率最高设置到921.6Kbps都正常,设置成1M就会乱码

请问这种情况一般问题会在哪里?

谢谢
收藏 评论8 发布时间:2015-10-14 10:49

举报

8个回答
ughbss 回答时间:2015-10-14 16:57:45
你的串口是否支持这么高波特率,然后用示波器或者逻辑分析仪抓一下波形,看看时序是否出错,可能是波特率过高,误差超过允许范围所以乱码
fitsir 回答时间:2015-10-18 15:29:05
外部晶振是24M,
时钟初始化是
  1. void InitClock(void)
  2. {
  3.         CLK_DeInit();                                                                                 // 初始化时钟
  4.         CLK_HSICmd(ENABLE);                                                                         // 使能内部高速晶振
  5.         while(SET != CLK_GetFlagStatus(CLK_FLAG_HSIRDY));         // 测试内部高速晶振位是不是使能
  6.         CLK_HSIPrescalerConfig(CLK_PRESCALER_CPUDIV1);                 // 内部时钟预分频器,对内部16M时钟不分频
  7.         CLK_ClockSwitchCmd(ENABLE);                                                         // 使能时钟切换功能
  8.         // 时钟切换
  9.         CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE,        CLK_CURRENTCLOCKSTATE_DISABLE);
  10. }
复制代码


串口初始化是
  1. UART2_Init((u32)1000000, UART2_WORDLENGTH_8D, UART2_STOPBITS_1,
  2.                                 UART2_PARITY_NO, UART2_SYNCMODE_CLOCK_DISABLE,
  3.                                 UART2_MODE_TXRX_ENABLE);
复制代码


用的是USB转串口,能够支持1M的波特率,在其他板子上试过的。

现象是程序设置1M波特率,电脑接受就是乱码,如果把程序设置成0.9M的波特率,电脑还是用1M的接收,就不会乱码了。

换过16M 20M 22.1185M 24M的晶振,也换过其他的最小系统板,都是这样的问题

不知道怎么回事了,现在是先设置成0.9M的波特率用着
peter001 回答时间:2015-10-19 10:13:15
估计还是寄存器配置问题
fitsir 回答时间:2015-10-21 23:12:32
终于找出来原因了,买了个简单的逻辑分析仪测了一下,1M波特率的数据是正确的,最后找出来原因是USB转TTL的小板子的问题,换了一个支持更高分辨率的usb转TTL就行了
hpdell 回答时间:2016-5-17 15:03:26
fitsir 发表于 2015-10-21 23:12
终于找出来原因了,买了个简单的逻辑分析仪测了一下,1M波特率的数据是正确的,最后找出来原因是USB转TTL的 ...

具体是什么型号的芯片可以支持1M的波特率啊 ??
xmshao 回答时间:2016-5-17 16:11:57
8S105实现1M应该没问题,不过楼主说跑24M可能有点悬。

波特率高时要注意外围线路器件配合好。
hpdell 回答时间:2016-5-17 22:14:53
xmshao 发表于 2016-5-17 16:11
8S105实现1M应该没问题,不过楼主说跑24M可能有点悬。

波特率高时要注意外围线路器件配合好。 ...

最后找出来原因是USB转TTL的小板子的问题,换了一个支持更高分辨率的usb转TTL就行了

请问这个usb转TTL的芯片是什么型号啊 ?????
zcl201207 回答时间:2016-5-18 23:34:24
105手册上说最大16M HSE,24M也可以正常用?

所属标签

相似问题

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