找回密码
 立即注册
查看: 46|回复: 3

我不明白!普通SPI工作始终频率如何计算?

[复制链接]

67

主题

220

回帖

2519

积分

金牌会员

积分
2519
发表于 2026-9-4 16:17:09 | 显示全部楼层 |阅读模式

实验平台:
AI8051U
问题描述:

我按照AI8051手册第8.1节的时钟流,配置普通SPI外设的工作时钟,并不能凭图示中的描述配置到想要的SPI时钟频率。
例如:FOSC=12.8 MHz,想要得到SPI时钟频率3.2 MHz。我给HSCLKDIV配置2分频。很显然,得到的HSCLK = FOSC / 2,SPI_CLKDIV配置为1分频。如果SPCTL[1:0] = 11B,理应得到SPI时钟FOSC / 4.事实却不是,得到FOSC / 2 .除非SPI_CLKDIV配置为2分频才能得到SPI时钟 = FOSC / 4 = 3.2 MHz。非常不明白。恳请大佬解答 :-)
谢谢先
回复

使用道具 举报 送花

83

主题

8219

回帖

1万

积分

超级版主

积分
17644
发表于 2026-9-4 16:37:17 | 显示全部楼层
HSCLKDIV    = 1;
SPI_CLKDIV = 1;
SPICTL=0: fosc/4,  =1: fosc/8,  =2: fosc/16,  =3: fosc/2

所以,你的设置就是FOSC/2。
你要FOSC/4,要 SPICTL=0; //fosc/4
回复

使用道具 举报 送花

67

主题

220

回帖

2519

积分

金牌会员

积分
2519
 楼主| 发表于 2026-9-4 16:52:05 | 显示全部楼层
梁*** 发表于 2026-9-4 16:37
HSCLKDIV    = 1;
SPI_CLKDIV = 1;
SPICTL=0: fosc/4,  =1: fosc/8,  =2: fosc/16,  =3: fosc/2

您说的我明白。
我不明白的点在于:HSCLKDIV配置为2分频输出,SPICTL = 3的时候理应得到SPI输入时钟FOSC / 4,但实测得到的却是FOSC / 2

点评

没有问题。 HSCLKDIV = 2; SPI时钟马上为一半,即FOSC/4。 你再仔细检查测试下。  详情 回复 发表于 2026-9-4 17:22
回复

使用道具 举报 送花

83

主题

8219

回帖

1万

积分

超级版主

积分
17644
发表于 2026-9-4 17:22:43 | 显示全部楼层
BeHa*** 发表于 2026-9-4 16:52
您说的我明白。
我不明白的点在于:HSCLKDIV配置为2分频输出,SPICTL = 3的时候理应得到SPI输入时钟FOSC  ...

没有问题。
HSCLKDIV = 2;
SPI时钟马上为一半,即FOSC/4。
你再仔细检查测试下。
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-9-23 16:11 , Processed in 0.067605 second(s), 56 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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