打印
[STM32F3]

运行比预期慢

[复制链接]
1335|34
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xxrs|  楼主 | 2020-7-5 18:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
8MHZ内部晶振,配置时钟64MHZ(SPI 8分频,SPI_CLK频率7.58MHZ,说明64MHZ是正确的),程序中while(1){不延时,引脚电平翻转},引脚为高速模式(最大可以到50MHZ),但是引脚实际翻转频率只有4MHZ
PA8输出系统时钟,示波器测定为62.5MHZ
HAL_RCC_MCOConfig(RCC_MCO1,RCC_MCO1SOURCE_SYSCLK,RCC_MCODIV_1);
但是
while(1)
{
SPILCD_CS_SET;
SPILCD_CS_RESET;
}输出50%占空比方波,测定高电平296ns----3.38MHZ
什么原因导致程序运行时钟不等于系统时钟?

使用特权

评论回复
沙发
xxrs|  楼主 | 2020-7-5 18:12 | 只看该作者
请问stm32f373,一个IO指令需要多少个机器周期?

使用特权

评论回复
板凳
xxrs|  楼主 | 2020-7-5 18:15 | 只看该作者
你理解错了。IO翻转本身速率有限

使用特权

评论回复
地板
ousj| | 2020-7-5 18:19 | 只看该作者
大脑转得飞快
嘴巴不利索,不是说相声的!

使用特权

评论回复
5
xxmmi| | 2020-7-5 18:23 | 只看该作者
PIN脚设为高速模式,IO翻转不是最大能达到50MHZ吗?

使用特权

评论回复
6
xxmmi| | 2020-7-5 18:23 | 只看该作者
但我还是有些不太懂,虽然大于30MHZ输出波形波形就不是干净的方波了,因为PA8能输出62.5MHZ

使用特权

评论回复
7
東南博士| | 2020-7-6 09:16 | 只看该作者
多写几遍!!

使用特权

评论回复
8
香水城| | 2020-7-6 17:14 | 只看该作者
你如果想通过GPIO翻转实现电平翻转并希望尽量快的话,不要调用函数,直接操作ODR寄存器,
另外while里多写几行,以尽量平均掉while跳转所花的时间。

当然,GPIO实际翻转速率和GPIO的输出能力并不能打等号,就像马达的额定转速和实际转速往往并非相等。
一个可支持的能力,一个实际输出实现。

使用特权

评论回复
9
xxrs|  楼主 | 2020-7-24 18:22 | 只看该作者
那SPI采用2分频,CLK是能输出30MHZ的波形的,说明IO的速度应该能跟上吧?

使用特权

评论回复
10
xxrs|  楼主 | 2020-7-24 18:29 | 只看该作者
但是不知道主程序中输出频率为什么就降低了

使用特权

评论回复
11
wyjie| | 2020-7-24 18:35 | 只看该作者

你有什么打算呢?或者你想知道什么?

使用特权

评论回复
12
xxrs|  楼主 | 2020-7-24 18:40 | 只看该作者
我想做TFT彩屏的,现在刷新频率很低,刷新1帧差不多要0.5s,我是移植stm32F030的程序,时钟没变,但是刷新1副图片就变慢了

使用特权

评论回复
13
renyaq| | 2020-7-24 18:44 | 只看该作者
执行 while(1) 也是需要时间的,要跳转。
里面多放一些:
  SPILCD_CS_SET;
  SPILCD_CS_RESET;
这样大概能够测得 60ns 的周期,合着也就是 16MHz 多点。

使用特权

评论回复
14
xxrs|  楼主 | 2020-7-24 18:48 | 只看该作者
谢谢回复,虽然我也希望是这样,但是,我在循环中加20多条翻转指令(引脚配置为高速输出模式),观察波形,频率变化不大,基本上还是4MHZ,PLL时钟应该是配置正确的,(SPI4分频后CLK引脚有16MHZ波形),但是程序运行感觉像HSI/2=4MHZ ,

使用特权

评论回复
15
xxrs|  楼主 | 2020-7-24 18:52 | 只看该作者
有测到过16MHZ波形吗?我不知道我的配置是否存在其他问题

使用特权

评论回复
16
yufe| | 2020-7-24 18:55 | 只看该作者

昨天晚上顺手测了一下。
寄存器直接赋值的操作。

使用特权

评论回复
17
xxrs|  楼主 | 2020-7-24 18:58 | 只看该作者
多谢提醒,寄存器操作确实能达到18.5MHZ的波形,看来stm32库操作IO确实会牺牲很多速率,用寄存器操作能提高4倍以上的速率,函数调用可能牺牲了大部分时钟

使用特权

评论回复
18
xxrs|  楼主 | 2020-7-24 19:05 | 只看该作者
彩屏更新速度低的问题算是解决了(通过修改库函数,删除多余的报错和超时,和一堆乱七八糟的指令,刷新频率提高了,画面稍稍流畅了一些,虽然解决方法有点歪门邪道的感觉),库函数效率确实有点低,不太适合高速的场合

使用特权

评论回复
19
happy_10| | 2020-7-24 19:20 | 只看该作者
有些地方可以不用HAL库,用LL库。

使用特权

评论回复
20
xxrs|  楼主 | 2020-7-24 19:23 | 只看该作者
以前只用过标准库,第一次接触HAL库,比较菜,LL库没用过

使用特权

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

本版积分规则

405

主题

7415

帖子

1

粉丝