这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » UiBRG 比特率怎么计算

共5条 1/1 1 跳转至

UiBRG 比特率怎么计算

菜鸟
2008-09-19 15:42:11     打赏
10MZ精振 选取f1 波特率9600 那么U1BRG是多少。谢谢



关键词: UiBRG     比特率     怎么     计算    

菜鸟
2008-09-19 16:01:42     打赏
2楼

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

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


菜鸟
2008-09-19 16:12:35     打赏
3楼
我是采用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++;
  }
            }
头函数是从瑞萨网站下的通用头文件

菜鸟
2008-09-25 17:06:52     打赏
4楼

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

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

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

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


ti_u1c1是个只读位


菜鸟
2008-09-28 16:58:43     打赏
5楼

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


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]