- 打卡等级:以坛为家III
- 打卡总天数:696
- 最近打卡:2026-03-06 00:31:34
荣誉版主
- 积分
- 4280
|
发表于 2025-7-9 18:21:09
|
显示全部楼层
在AiCube的SPI通用设置里,【SPI时钟分频】的选项,看得有些迷糊了
1、
系统时钟频率 写成了 SPICLK
给SPI的时钟进行分频 有些说不通。
查看STC8H和AI8051U的规格书,写的是 SYSclk
所以 SPI的时钟频率(SPICLK) 是将 输入给SPI的时钟(SYSCLK) 进行分频 才说得通。
以及,按照规格书的说法,“SPI时钟分频”的表述,或许也可以直接按照规格书里的叫法,写成“SPI时钟频率”(不知道工作量大不大)
===================================================
2、
频率列表列出的分频 “2,4,8,16” ,有些模糊
在AI8051U的规格书里,SPI的频率选择,是只有 “2,4,8,16”,所以列表选项里没有问题。
但在STC8H的规格书里可以看到,不同的系列,SPI支持的速度分成两种,
光是STC8H8K64U系列的A和BCD版本,对快速SPI就有不同的支持。

但在AiCube的STC8H的SPI频率列表中,只列出了包括快速SPI的 “2,4,8,16”,
而没有体现出只支持普通SPI的那些系列的 “4,8,16,32”。
假如用的是STC8H1K08单片机,可能会误以为 可以选择2分频,而运行时,实际上却是32分频。
由于两种系列的SPR配置里,前三个是相同的“4,8,16”,只有SPR=3的时候才有“/32”和“/2”的区别
所以建议可以在下方的说明栏里,把 不同系列适用哪些选项 这一点备注出来,(比如老版STC-ISP的延时函数生成器对不同选项支持哪些系列就有详细备注)
然后列表选项里,“4,8,16,32”之后,直接再追加一个“SYSCLK/2(快速SPI)”。
在生成的代码里
SPI_SetClockDivider2() 和 SPI_SetClockDivider32()
都调用 SPI_SetClockDivider(3)
这样就完美了
(或许将来更加完善之后,直接可以通过选择具体单片机型号,自动匹配列表里的分频数说明,就像STC15的两个系列)
======================================================
3、
AiCube的STC15的两个型号,频率一栏的输入时钟也是“SPICLK”。
==========================================================
==========================================================
综合前两点,感觉STC15的规格书里的表述方法就比较严谨。
在旧版规格书里,SPI时钟频率,写的就是“CPU_CLK”,最新STC15H2K64S4里面写的也是“SYSclk”
AiCube里对应的分频数都是正确的
  
|
|