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

查看: 9545|回复: 6

来高手哈,STM8S103 内部振荡HSI 波特率对,串口数据不对

[复制链接]

2

主题

7

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 2014-7-31 23:44:22 | 显示全部楼层 |阅读模式
小弟原先学的51,现转战STM8S,可第一个小问题就难道我了,请求大虾帮忙验证下程序:

      main.c文件如下,软件是IAR1.42,要实现的功能:给电脑串口发送一个0xAA,有开发板的大虾帮个忙,看看此程序在你们那是否正常,我买的是核心板,没接外部晶振。我直接将串口数据转3232芯片然后和电脑串口大师连接,我先用的库函数编的,发送的数据不对,我就改成寄存器编程,结果还是有问题,我仔细看了手册好即便了,应该没问题的。
     我将HSI不分频16M,9600波特率      HSI 2分频8M  9600波特率,分别设置波特率寄存器BRR1 BRR2,发送的数据也不一样,也就是说两次的波特率是不一样的,我看有网友碰到同样的问题。
             我用逻辑分析仪看了发送每一位的时间是105US,核算下大概波特率是9500+,误差1%左右。


#include "stm8s.h"


 void Delay(uint16_t nCount)
 {

     while (nCount != 0)
     {
         nCount--;
     }
 }


void main(void)
{

Delay(20000); 
CLK->CKDIVR=0x00; //0X00 HSI不分频仍为16M

UART1->CR1=0x00; //第4位0 代表8位,该寄存器复位后就是0x00
UART1->CR3=0x00; //第5 4位 0 0 代表1个停止位,该寄存器复位后就是0X00

UART1->BRR2=0x02; //按16M/9600=1666 换16进制 0x0682    此处如果是2分频8M/9600=0x0341 分别设置BRR1=0X34 BRR2=0X01,两次的结果不一样,理论上应该波特率是一样的了
UART1->BRR1=0x68;

UART1->CR2=0x0C; //0x08发送使能,0x04接受使能,0x0C全部使能,0x00全部关闭
UART1_SendData8(0xAA); //调用库函数,实际就是往寄存器里写值
Delay(20000); 
UART1->CR2=0x00; //0x08发送使能,0x04接受使能,0x0C全部使能,0x00全部关闭

//如果不加此句,单片机一直在发送0x00,不知道为什么,以前51都没这个问题
  while (1)
  {
  }

}


void assert_failed(u8* file, u32 line)


//此处仅为了头文件中有定义,无函数实现,增加个空函数
}
回复

使用道具 举报

2

主题

7

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
 楼主| 发表于 2014-8-1 10:01:49 | 显示全部楼层

RE:STM8S103 内部振荡HSI 串口发送问题?


大哥们,帮帮忙看看呢,
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2014-8-2 14:02:58 | 显示全部楼层

RE:STM8S103 内部振荡HSI 波特率对,串口数据不对

UART1->BRR2=0x02; //按16M/9600=1666 换16进制 0x0682    此处如果是2分频8M/9600=0x0341 分别设置BRR1=0X34 BRR2=0X01,两次的结果不一样,理论上应该波特率是一样的了
UART1->BRR1=0x68;

波特率算错了吧。应该写的是0x06,0x82。
回复 支持 反对

使用道具 举报

2

主题

7

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
 楼主| 发表于 2014-8-3 10:57:31 | 显示全部楼层

RE:STM8S103 内部振荡HSI 波特率对,串口数据不对

没错的,STM8是这样的,中间2位放一个寄存器,我用逻辑分析仪看过了,实际波特率是9500+,有点来去的
回复 支持 反对

使用道具 举报

2

主题

7

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
 楼主| 发表于 2014-8-5 22:26:31 | 显示全部楼层

RE:来高手哈,STM8S103 内部振荡HSI 波特率对,串口数据不对

问题解决了,我用同样的程序另外找了个USB转TTL的测试是好的,原因出在MAX3232芯片上,可能坏了,导致电平读取错误,以后有问题还得多注意下硬件
回复 支持 反对

使用道具 举报

16

主题

560

回帖

1

蝴蝶豆

金牌会员

最后登录
2020-6-25
发表于 2014-8-6 21:59:15 | 显示全部楼层

RE:来高手哈,STM8S103 内部振荡HSI 波特率对,串口数据不对

调试时用示波器观察就可判断是硬件或是软件问题,
回复 支持 反对

使用道具 举报

0

主题

8

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-8-16 17:17:17 | 显示全部楼层

RE:来高手哈,STM8S103 内部振荡HSI 波特率对,串口数据不对

STM8S内部振荡频率是16MHZ,但精度是正负5%,所以在传输频率高的情况下,数据的后几位会出错。可以测一下Occ管脚的输出频率,并计算出与设定的偏差,可以通过寄存器来修正,详细请参考AN2822文档。
回复 支持 反对

使用道具 举报

关于 意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版