打印
[技术问题解答]

MCF51JM128中SPI波特率的计算

[复制链接]
1920|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
spi, ISO, vi, TE, ck
我想设置SPI的波特率,如下:

设置寄存器【SPI2BR】的值为(0x00),即:
PrescalerDivisor = 1;
RateDivisor = 2;
那么,BaudRateDivisor = 16(可以认为预分频为16)
BaudRate = BusClock / 16。

请问,BusClock的值为多少?(我查找了MCF51JM128的手册,没找到)
谢谢。

相关帖子

沙发
FSL_TICS_ZJJ| | 2014-4-28 17:41 | 只看该作者
楼主你好,busclock是你的总线时钟,在配置时钟系统的时候就定下来了。

使用特权

评论回复
板凳
MCF54418|  楼主 | 2014-4-28 18:26 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-4-28 17:41
楼主你好,busclock是你的总线时钟,在配置时钟系统的时候就定下来了。

我这是在看TWR-LCD(JM128芯片)提供的一个例程《JM128_BL_EGUI_SPI》。
请问,我如何查找总线时钟的值,是查文档,还是查代码中的配置??
您可否直接提供给我,总线时钟的值,甚至出处??

万分感谢。

使用特权

评论回复
地板
MCF54418|  楼主 | 2014-4-28 18:38 | 只看该作者
MCF54418 发表于 2014-4-28 18:26
我这是在看TWR-LCD(JM128芯片)提供的一个例程《JM128_BL_EGUI_SPI》。
请问,我如何查找总线时钟的值, ...

在文件d4dlcd_SSD1289_cfg.h中,有如下定义:
#define D4DLCD_MCU_BUS_CLOCK 24000000  /* Mcu bus clock in Hz */
请问,此定义是我需要的总线时钟吗?

如果是,那么我的SPI波特率为24000000 / 16 = 1500000Hz???

使用特权

评论回复
5
FSL_TICS_ZJJ| | 2014-4-29 14:22 | 只看该作者
MCF54418 发表于 2014-4-28 18:38
在文件d4dlcd_SSD1289_cfg.h中,有如下定义:
#define D4DLCD_MCU_BUS_CLOCK 24000000  /* Mcu bus clock ...

总线时钟是由你的程序配置决定的,具体的SPI波特率的计算公式,需要查看你的芯片的用户手册。

使用特权

评论回复
6
FSL_TICS_ZJJ| | 2014-4-29 14:24 | 只看该作者
你的芯片的文档显示公式是这样的:

你看看你的SPPR和SPR值都配置为多少,是不是除16.

使用特权

评论回复
7
MCF54418|  楼主 | 2014-4-29 15:14 | 只看该作者
本帖最后由 MCF54418 于 2014-4-29 17:12 编辑
FSL_TICS_ZJJ 发表于 2014-4-29 14:24
你的芯片的文档显示公式是这样的:

你看看你的SPPR和SPR值都配置为多少,是不是除16.


因为SPI2BR = 0x00,即得出BardRate = BusClock / 16的结论。
我现在只需要确定BusClock就Ok了。我再看看吧。

非常感谢您不厌其烦的沟通。

使用特权

评论回复
8
FSL_TICS_ZJJ| | 2014-4-29 15:27 | 只看该作者
MCF54418 发表于 2014-4-29 15:14
因为SPI2BR = 0x00,即得出BardRate = BusClock / 16的结论。
我现在只需要确定BusClock就Ok了。我再看看 ...

不客气,那么你就看看你的代码的busclock是多少就行了。还有,建议你看看用户手册的时钟章节,会将如何分配busclock,然后再结合代码,你就看的很清楚了。
我不是CF的工程师,但是你的问题并不是很复杂,如果深入的CF问题,我会找相关的专家过来帮你解答。
有问题欢迎多交流哦!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

29

帖子

0

粉丝