完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近在用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核吗? |
|
相关推荐
9个回答
|
|
楼主,你的systick配置是250us?我们一般是1ms。我认为是AD中断太快,SPI根本响应不了。8us是怎么算出来的?
|
|
|
|
本帖最后由 witty01-302388 于 2018-7-30 13:58 编辑
SPI没有用中断,就是在AD中断里使能,然后就收发2个byte.SPI的响应挺快的,我现在波特率寄存器设的是16分频,很快,时间够用 |
|
|
|
改的,之前是500us的。为了快点读角度,改成250us了。 AD中断不快了,跟载波一个频率。 8us是在示波器上,用IO口测出来的,执行spi的时候IO置位,退出的时候清零, 测高电平时间 |
|
|
|
楼主,你测试的是SPI的CS引吗?我就是想不明白,为什么非要在中断中做这个处理呢?
|
|
|
|
我的SPI是好用的,功能都全,放在systick里定时读,没问题的 |
|
|
|
今天吧spi的等待完成的while关了,看看有没有信号发出啦,结果看到clk信号和cs信号,完全变了中断外spi的时钟信号
在AD中断里spi的时钟信号 CS信号也是好的,但就是while不退出,去掉while能读到数,但是很长时间才刷新一次,应该是好久都接收不成功。 |
|
|
|
找到原因了,在AD中断里调用SPI是可以的,但是我错在 把spi的初始化放在了AD中断之后。AD中断之后就开始进中断了,这个时候SPI还没有初始化,然后就虾米了,唉,
|
|
|
|
这是什么鬼?
|
|
|
|
中断嵌套
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1129 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1075 浏览 2 评论
2175 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1269 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1693 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 03:41 , Processed in 0.753603 second(s), Total 58, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号