- 杂志
 搜 索: 
 论坛 » MCU应用 » UiBRG 比特率怎么计算
广告招商
版主: renesasstk , QQMCU , renesaschina , l0p0c
 发表新贴 
 发表回复 
 UiBRG 比特率怎么计算  发表于 2008-09-19 15:42:11 [您是本帖的第224位阅读者]     [1楼] 
呢称:xiaoyi81
加我为好友
10MZ精振 选取f1 波特率9600 那么U1BRG是多少。谢谢
 
 RE: UiBRG 比特率怎么计算  发表于 2008-09-19 16:01:42 [2楼] 
呢称:Serina_xu
加我为好友

UiBRG寄存器的设定值 = fj / (位速率*16) - 1

BRG的设定值为129(81h),实际时间为9615.38bps


 
 RE: UiBRG 比特率怎么计算  发表于 2008-09-19 16:12:35 [3楼] 
呢称:xiaoyi81
加我为好友
我是采用M32C/87的单片机,现在我自己编写了一个简单的UART发送程序,采用的是波特率 9600 数据位 8位 停止位 1位 采用10M晶振 可是用逻辑分析仪分析出的数据却是不正确的,你能帮我看下程序是那里有问题吗
            main()
          {
                unsigned short trans_data =2;
  u1mr = 0x05;
  u1c0 = 0x10;
  u1c1 = 0x05;
  //u1brg = 103;
  u1brg = 129;
  u1smr = 0x00;
  u1smr2 = 0x00;
  u1smr3 = 0x00;
  u1smr4 = 0x00;
  ps0_7 = 1;
  //psl3_2 = 0;
  //psc_0=0;
  while(1) {
   u1tb=trans_data;
   while(ti_u1c1==0) ;
   ti_u1c1 = 0;
   //trans_data++;
  }
            }
头函数是从瑞萨网站下的通用头文件
 
 RE: UiBRG 比特率怎么计算  发表于 2008-09-25 17:06:52 [4楼] 
呢称:ammiezhang
加我为好友

你用10MHz的晶振,根据二楼的公式,可以自己算一下

UiBRG寄存器的设定值 = fj / (位速率*16) - 1=10MHz/(9600*16)-1=64

此外,发送的部分我觉得也不太对,应该是

 while(1) {
   while(ti_u1c1==0) ;
   u1tb=trans_data;


ti_u1c1是个只读位


 
 RE: UiBRG 比特率怎么计算  发表于 2008-09-28 16:58:43 [5楼] 
呢称:xiaoyi81
加我为好友

谢谢楼上的朋友关注。这个程序是比特率那边算错了。改成64就可以正常的发数据了


 
共5条 1/1 1   
   快速回复主题
  用户名 : 匿名不能发帖!请先 [ 登陆 ]
  标 题:
  内 容 :
 
EEPW元器件搜索  强力提供
关于我们 | 广告服务 | 企业会员服务 | 新手上路 | 联系我们 | 友情链接
《电子产品世界》杂志社 版权所有 北京东晓国际技术信息咨询有限公司
Copyright ©2002 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
京ICP备060382号