你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32F103R8TB AD中断和TIM1中断里不能SPI

[复制链接]
witty01-302388 提问时间:2018-7-30 09:58 /
本帖最后由 witty01-302388 于 2018-7-30 12:00 编辑

最近在用F103R8T6做电机控制,SPI定时读旋变解码信号,获得位置信息。2.0的库,角度是在做电流环控制的时候读的,是在AD中断里做的,和载波周期一个频率。
这个SPI如果在systick中断里定时读,完全没有问题,结果放在AD中断里就不成功,一直停在spi的等待while里。开始以为是时间不够用,后来发现根本不是。就是这个AD中断里,SPI的功能貌似不行了。后来开了tim1中断做spi,结果同AD中断。时间完全够用的,就是SPI功能没了。

现在能跑的程序是将spi放在systick里,250us定时读角度值。因系统执行pwm计算的周期是69us,我觉得如果250us定时读,那每次做角度变换的值都不是最新的,如果放在69us的中断里去读,每次都是最新的,比250u好,结果spi不能用了。

250us定时读电机是可以运行。只是想知道为什么spi放在AD中断里不能用了。
有人碰到过这个问题吗?普通MCU貌似不会这样,是因为arm核吗?

收藏 评论12 发布时间:2018-7-30 09:58

举报

12个回答
butterflyspring 回答时间:2018-7-30 11:20:07
如果你的SPI放在中断,你的spi是否用了中断或者DMA模式?

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

回答时间:2018-7-30 10:02:39
AD配置的中断采集时间是多长?另外,不建议中断中处理这些,如果有需要,建议用系统来做。终端中做的事情越多,程序出问题的几率越高。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

witty01-302388 回答时间:2018-7-30 11:54:15
butterflyspring 发表于 2018-7-30 11:20
如果你的SPI放在中断,你的spi是否用了中断或者DMA模式?

SPI读数据发送数据的功能放在AD中断里了,SPI没开中断,因为只有一个数据,也没用DMA
witty01-302388 回答时间:2018-7-30 11:58:37
安 发表于 2018-7-30 10:02
AD配置的中断采集时间是多长?另外,不建议中断中处理这些,如果有需要,建议用系统来做。终端中做的事情越 ...

ad中断执行时间19us,周期69.4us. spi时间8us。所以时间都够用。
现在能跑的程序是将spi放在systick里,250us定时读角度值。因系统执行pwm计算的周期是69us,我觉得如果250us定时读,那每次做角度变换的值都不是最新的,如果放在69us的中断里去读,每次都是最新的,比250u好,结果spi不能用了。

现在250us定时读可以运行。只是想知道为什么spi放在AD中断里不能用了
toofree 回答时间:2018-7-30 12:00:31
SPI是否用了中断?如果用了中断话,中断优先级不能比ADC、TIM2中断优先级高。
优先级高的中断可以打断优先级的低的中断,相同优先级的中断,也不能打断。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

回答时间:2018-7-30 13:42:24
楼主,你的systick配置是250us?我们一般是1ms。我认为是AD中断太快,SPI根本响应不了。8us是怎么算出来的?
witty01-302388 回答时间:2018-7-30 13:56:02
本帖最后由 witty01-302388 于 2018-7-30 13:58 编辑
toofree 发表于 2018-7-30 12:00
SPI是否用了中断?如果用了中断话,中断优先级不能比ADC、TIM2中断优先级高。
优先级高的中断可以打断优先 ...

SPI没有用中断,就是在AD中断里使能,然后就收发2个byte.SPI的响应挺快的,我现在波特率寄存器设的是16分频,很快,时间够用
witty01-302388 回答时间:2018-7-30 13:57:49
安 发表于 2018-7-30 13:42
楼主,你的systick配置是250us?我们一般是1ms。我认为是AD中断太快,SPI根本响应不了。8us是怎么算出来的? ...

改的,之前是500us的。为了快点读角度,改成250us了。
AD中断不快了,跟载波一个频率。
8us是在示波器上,用IO口测出来的,执行spi的时候IO置位,退出的时候清零, 测高电平时间
回答时间:2018-7-30 14:09:36
楼主,你测试的是SPI的CS引吗?我就是想不明白,为什么非要在中断中做这个处理呢?
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版