查看: 1352|回复: 3

关于MC9S08PT32波特率问题

[复制链接]

该用户从未签到

1

主题

87

帖子

0

中级会员

Rank: 3Rank: 3

积分
277
最后登录
2020-2-24
发表于 2015-8-18 15:07:15 | 显示全部楼层 |阅读模式
最近在用S08PT32的SCI和另外一块(不是飞思卡尔的MCU)板子通信,波特率设置为9615,但是用示波器量到Tx上的波特率超过10000,导致另外一块板子有很大概率收到错误的数据,我用电脑接收PT32发的数据也不是每次都能正确。
另外一块板子的波特也设置为9615,用示波器量到波特率差不多是9783,PT32每次都可以正确的接收到数据。

我自己写的SCI初始化程序和PE生成的代码一样,
想请教下,波特率发生器的误差会有这么大吗?将近5%?
  1.     /* SCI1 */
  2.     (void)   SCI1_S1;               // Dummy read of the SCI1S1 registr to clear flags
  3.     (void)   SCI1_D;      
  4.     SCI1_C1 = 0x00;
  5.     SCI1_C3 = 0x00;
  6.     SCI1_C2 = 0x00;
  7.     SCI1_S2 = 0x00;
  8.     SCI1_BDH = 0x00U;//总线频率是16MHz,用FEI和FBELP都试过,结果一样
  9.     SCI1_BDL = 0x68U;//9615
复制代码

评分

参与人数 1NXP金币 +3 收起 理由
小七 + 3

查看全部评分

回复

使用道具 举报

该用户从未签到

1

主题

87

帖子

0

中级会员

Rank: 3Rank: 3

积分
277
最后登录
2020-2-24
 楼主| 发表于 2015-8-19 08:57:37 | 显示全部楼层
哈哈,不是波特率发生器的问题~
我昨天在ICS设置为FEI时,用定时器测试了下总线频率,发现总线频率快了5%,原因是我想用31250的内部时钟产生16Mhz的CLKout,但是DebugSetting那边没有将Trim值改成31250,还是默认的32768,所以ICS_C3的值错了,刚好快了4.8%。说到这,问题来了,我这个工程是用PE生成的,我设置时钟的时候,PE怎么没有帮我把这个改一下,连个错误提示都没有?

DebugSetting

DebugSetting


另外,我用PE生成的代码ICS设置成FBELP模式,也必须要把这个内部时钟设置为31250,系统频率才能准确。
想请教下各位,我想选外部晶振(16MHz)做时钟源的话应该怎么设置?
我看规格书上的FBE的例子,需要有个等待的while,但是我按这种方法设置后,程序根本运行不过去。
而PE生成的FBELP的初始化代码和这个又不一样,没有这个等待。
  1. Example: 8.3.4.1 FBE mode initialization routine
  2. /* the following code segment demonstrates setting ICS to FBE mode generating 20MHZ bus*/
  3. /* supposing external 20MHZ crystal is installed in high gain mode */
  4. ICS_OSCSC = 0x96; /* high-range, high-gain, oscillator required */
  5. <b>while (ICS_OSCINIT == 0); /* waiting until oscillator is ready *///程序执行到这会死循环。</b>
  6. ICS_C1 = 0x80; /* external clock reference (20MHZ) to FLL output */
  7. ICS_C2 = 0x00; /* BDIV = 0, prescalar = 1 */
复制代码

回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

45

帖子

0

注册会员

Rank: 2

积分
146
最后登录
1970-1-1
发表于 2015-8-19 09:44:43 | 显示全部楼层
(1)pe真的不给你检查,在clock那个地方需要填入你trim后的时钟的频率
(2)如果使用PBE的话,需要初始化OSC,这边需要等待晶振完全起震,你可以从下面链接下载示例代码,另外FBE功耗低,但是如果你想追求EMC性能稳定性的话,建议使用FEE mode
https://www.freescale.co
m/weba ... b=Documentation_Tab

回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

87

帖子

0

中级会员

Rank: 3Rank: 3

积分
277
最后登录
2020-2-24
 楼主| 发表于 2015-8-26 10:13:15 | 显示全部楼层
谢谢回复~
我前几天先在FEI模式下调试程序功能。这两天才回过头来检查OSC的问题。
之前说的程序会死循环在等待晶振完全起振,我用示波器量了下,晶振确实没有起振,原因是硬件工程师忘了给时钟电路加1Mohm的反馈电阻,我加上就可以了。

时钟电路

时钟电路



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-4-26 21:29 , Processed in 0.131602 second(s), 24 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表