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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版