您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> [求助]BF518如何进入SPI中断?
本帖共有602个阅读者
发表帖子 发表投票 回复主题
[求助]BF518如何进入SPI中断?
AD7685(论坛新手)
AD7685
头衔:社区公民
帮派:无帮无派
帖数:7
金钱:165
积分:11
注册时间:2013/7/29
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
[求助]BF518如何进入SPI中断?
void SPI_init(void)
{
*pSPI1_BAUD = 2;       //配置速率为1/4系统时钟  SPI速率 = SCLK/2*SPI_BAUD
*pSPI1_FLG |=FLS2;      //选择SPI1SEL2接口
*pSPI1_CTL = 0x1001|CPHA|0x0100|SPE;
*pPORTF_FER =  PF0;      
*pPORTF_MUX =  0x0002;

*pPORTH_FER =  PH0|PH1|PH2|PH3;      
*pPORTH_MUX =  0x0021;
}

void Init_Interrupts(void)
{
*pSIC_IAR6 = 0xfffffff0;  
register_handler(ik_ivg7,sync_isr);  
*pSIC_IMASK1 |= 0x00010000;  
}

EX_INTERRUPT_HANDLER(sync_isr)
{  
//中断函数
}

通过查询的方式可以使用SPI收发数据,但是查询的方式占用的运算太多。
想采用SPI中断的形式读写。

但是像上面这样配置的话。

向SPI发送一个数据。SPI的时钟信号正常,按理说传送结束应该会触发一个SPI中断吧。
但是无论怎样都进不到中断函数里。

这是什么原因?请版主解答一下。


「该帖子被 AD7685 在 2013-08-13 16:18:04 编辑过」

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/8/13 15:37:30
AD7685(论坛新手)
AD7685
头衔:社区公民
帮派:无帮无派
帖数:7
金钱:165
积分:11
注册时间:2013/7/29
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
没有版主过来帮帮忙吗、、实在是自己解决不了。。

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/8/14 16:24:44
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
代码没发现问题,你看一下 你通过VDSP下寄存器菜单,看一下中断寄存器配置的值是否写入正确。   当你的代码发送完数据完成后,看一下SPI的状态寄存器,Buffer为空标识是否为1。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/8/14 20:56:31
AD7685(论坛新手)
AD7685
头衔:社区公民
帮派:无帮无派
帖数:7
金钱:165
积分:11
注册时间:2013/7/29
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
寄存器也没找出问题来。。。先用比较偷懒的方法解决了。
之后需要的时候再看看是怎么回事吧

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/8/15 11:19:41
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159347 Call, 1 Queries, Processed in 0.031006 second(s),