您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> SPI0溢出中断问题。
本帖共有454个阅读者
发表帖子 发表投票 回复主题
SPI0溢出中断问题。
Ling_Zero00(论坛新手)
Ling_Zero00
头衔:社区公民
帮派:无帮无派
帖数:37
金钱:436
积分:50
注册时间:2014/9/16
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
SPI0溢出中断问题。
请问,如何开SPI0的溢出中断源,以及中断结束后如何清中断标志位。我没找到相应的寄存器。


ADSP
等级:论坛新手 参考IP地址:*.*.*.*
2014/11/12 10:42:38
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
在VDSP帮助文件中,找到相应处理器的中断配置相关的表 ,叫Peripheral Interrupt Events,以BF518为例,在中断向量表中,可以看到 SPI0 status 中断,位于SIC_IAR5[27:24] ,SIC_IMASK1的Bit 15,按通用的中断配置方式打开即可。当进入中断后,读取SPI状态寄存器,判断是否为溢出。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/11/12 22:09:00
Ling_Zero00(论坛新手)
Ling_Zero00
头衔:社区公民
帮派:无帮无派
帖数:37
金钱:436
积分:50
注册时间:2014/9/16
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
还是不太明白,比如定时器中断,当设置寄存器使得一个周期后中断,实际运行时就是当一个周期的下降沿开始后自动进入中断程序。SPI为什么还要读判断是否为溢出呢?当设置控制寄存器的[1:0]TIMOD时选的为01即:以写SPI_TDBR开始传输,当SPI_TDBR为空时产生中断,寄存器写时先将数据放到缓存寄存器中SPI_TDBR,当数据传输时SPI_TDBR中的数据放到移位寄存器中,此时SPI_TDBR中为空,就会跳到中断程序中不是吗?

ADSP
等级:论坛新手 参考IP地址:*.*.*.*
2014/11/12 22:59:39
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
定时器中断和SPI中断没有任何关系,如果设置SPI传输中断,当传输FIFO中的数据发送完毕后,就会产生中断。
如果你看到的官方代码有定时器,那是用于判断超时操作的,防止代码死在判断SPI传输或者接收部分。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/11/18 21:45:09
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159138 Call, 1 Queries, Processed in 0.015625 second(s),