硬汉嵌入式论坛

 找回密码
 立即注册
查看: 420|回复: 8
收起左侧

[有问必答] 中断里面用hal库的spi函数耗时40uS,请问有优化时间的绝招吗?

[复制链接]

46

主题

251

回帖

389

积分

高级会员

积分
389
发表于 2026-3-19 20:31:51 | 显示全部楼层 |阅读模式
中断是4KHz,使用HAL库,9M时钟的SPI通讯在中断里面要耗时40uS,
请问有啥优化方法?

我现在想把spi函数放到ram中,但是RAM_FUNC关键字,非要把和这个函数所有相关的子函数,全部放进去,是不是可以在icf文件里面指定.out文件放到ram中?
回复

使用道具 举报

7

主题

418

回帖

439

积分

高级会员

积分
439
发表于 2026-3-20 08:41:14 | 显示全部楼层
中断4KHZ也不算低了,中断里只做一些简单的标志处理,不要做其它的,其它的在中断外部执行。
回复

使用道具 举报

1

主题

100

回帖

103

积分

初级会员

积分
103
发表于 2026-3-20 08:44:14 | 显示全部楼层
spi 仅用 hal 初始化,后续使用寄存器操作,参见:
https://github.com/dukelec/cdnet ... tm32/arch_wrapper.c
https://github.com/dukelec/cdstep
回复

使用道具 举报

4

主题

466

回帖

478

积分

高级会员

积分
478
发表于 2026-3-20 09:11:47 | 显示全部楼层
自己接管中断入口SPIx_IRQHandler呗
回复

使用道具 举报

0

主题

45

回帖

45

积分

新手上路

积分
45
发表于 2026-3-20 09:51:18 | 显示全部楼层
不用hal库
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
122007
QQ
发表于 2026-3-20 10:22:41 | 显示全部楼层
还要注意,如果是F4系列,放在CCM RAM里面,且这个RAM不要用于数据通信,否则没有加速效果。
回复

使用道具 举报

0

主题

320

回帖

320

积分

高级会员

积分
320
发表于 2026-3-20 11:04:15 | 显示全部楼层
试试用LL库
回复

使用道具 举报

5

主题

330

回帖

345

积分

高级会员

积分
345
发表于 2026-3-20 15:28:08 | 显示全部楼层
可以试试用spi dma,中断方式的spi没记错的话每传输一个字节或双字就中断一次,时序上会有空白间隔,可能会浪费点时间,改成dma的话可以减少这部分时间,而且也减少中断频率
回复

使用道具 举报

46

主题

251

回帖

389

积分

高级会员

积分
389
 楼主| 发表于 2026-3-20 19:40:52 | 显示全部楼层
dukelec 发表于 2026-3-20 08:44
spi 仅用 hal 初始化,后续使用寄存器操作,参见:
https://github.com/dukelec/cdnet/blob/master/arch/s ...

  谢谢,照着抄一下看看
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-4-12 19:28 , Processed in 0.503972 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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