硬件准备

ADSP-EDU-BF533:BF533开发板
AD-HP530ICE:ADI DSP仿真器

软件准备

Visual DSP++软件

硬件链接

硬件设计原理图

硬件实现原理

ADSP-EDU-BF533 开发板上的中断资源连接到了 CPLD,并通过 CPLD 将中断信号连接到 PF0 触发,通过 CPLD映射的寄存器读取中断源数据。

中断功能映射到 CPLD 寄存器中的 DEVICE_OE 和 INTERRUPT_DAT 两个寄存器,其映射内容如下:

DEVICE_OE 寄存器(读/写):
DEVICE_OE 寄存器地址:0x20320000
DEVICE_OE 寄存器设置硬件设备上一些控制管脚的电平状态。
DEVICE_OE 寄存器位功能:

PF0_SET:PF0 模拟 IIC 总线 SCL 接口或 PF0 中断功能使能

1:关闭 I2C_SCL 输入信号, 使能 PF0 中断信号
0:使能 I2C_SCL 输入信号,关闭 PF0 中断信号

使用中断时,将 I2C_SCL 位设置为1。
INTERRUPT_DAT 寄存器(读唯一):
INTERRUPT_DAT 寄存器地址:0x20360000

INTERRUPT_DAT 寄存器是板卡上所有中断资源的中断源数据寄存器,可以通过该寄存器数据判断出当前中断是哪一个设备产生的。

INTERRUPT_DAT 寄存器位功能:

当中断未触发时,读取的 Bit 位值为 1,当中断触发时,读取的 Bit 位值为 0,根据 Bit 位数据,获取中断设备。

SD_INF 为 SD 卡插入查询位,该 bit 位不会触发中断,只能通过读取该寄存器来查询 SD 卡否插入。

硬件连接示意图

代码实现功能

代码实现了利用板卡的中断机制,当有中断触发时,PF0脚产生中断,然后进入中断函数,通过INTERRUPT_DAT寄存器查询触发中断的中断源,并打印中断源信息。

调试步骤

  1. 将仿真器(ICE)与 ADSP-EDU-BF53x 开发板和计算机连接好。
  2. 先给 ADSP-EDU-BF53x 开发板上电,再为仿真器(ICE)上电。
  3. 运行 VisualDSP++ 5.0 软件,选择合适的 BF533 的 session 将仿真器与软件连接。
  4. 加载 VisualDSP++ 5.0 工程文件 BF53x_INTERRUPT.dpj,编译并全速运行。
  5. 点击触摸屏或者按按键测试中断触发。

测试结果

点击触摸屏或者按按键测试中断触发,代码打印出触发中断的中断源。

未插入 SD 卡和插入 SD 卡中断信息比较。

程序源码

#include <cdefBF533.h>
#include <sys\exception.h>
#include “cpld.h”

EX_INTERRUPT_HANDLER(FlagA_ISR);

void Set_PLL(unsigned int pmsel,unsigned int pssel)
{
unsigned int new_PLL_CTL;
*pPLL_DIV = pssel;
asm(“ssync;”);
new_PLL_CTL = (pmsel & 0x3f) << 9;
*pSIC_IWR |= 0xffffffff;
if (new_PLL_CTL != *pPLL_CTL)
{
*pPLL_CTL = new_PLL_CTL;
asm(“ssync;”);
asm(“idle;”);
}
}

void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0xffc07bb0;
*pEBIU_AMGCTL = 0x000f;
}

void Init_Flags(void)
{
*pFIO_INEN = 0x0001;
*pFIO_DIR = 0x0000;
*pFIO_EDGE = 0x0001;
*pFIO_POLAR = 0x0001;
*pFIO_MASKA_D = 0x0001;
}

void Init_Interrupts(void)
{
*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xffffffff;
*pSIC_IAR2 = 0xffff5fff;

register_handler(ik_ivg12, FlagA_ISR);
*pSIC_IMASK = 0x00080000;

}

EX_INTERRUPT_HANDLER(FlagA_ISR)
{
unsigned char interrupt=0;

interrupt = (~*pINTERRUPT_DAT&0x7f);
if(interrupt&KEY_INT)printf("The interrupt is keyboard!\n\r");
if(interrupt&TOUCH_INT)printf("The interrupt is touch interrupt!\n\r");
if(interrupt&TOUCH_BUSY)printf("The interrupt is touch busy!\n\r");
if(interrupt&LAN_IOWAIT)printf("The interrupt is lan iowait!\n\r");
if(interrupt&LAN_INT)printf("The interrupt is lan interrupt!\n\r");
if(interrupt&SD_INF)printf("SDCard inserted\n\r");
if(interrupt&EXT_IO_INT)printf("The interrupt is extend IO interrupt\n\r");
*pFIO_FLAG_C = 0x0001;

}

void main(void)
{
Set_PLL(16,4);
Init_EBIU();
ExtIO_Interrupt_Enable();
Interrupt_Enable();
Init_Flags();
Init_Interrupts();
while(1);
}

ADI Blackfin DSP处理器-BF533的开发详解18:用触摸屏的例程来理解中断(含源码)相关推荐

  1. ADI Blackfin DSP处理器-BF533的开发详解70:NES 红白机模拟器(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 代码实现功能 代码实现了 NES 游戏模拟器在 ...

  2. ADI Blackfin DSP处理器-BF533的开发详解24:触摸屏的实现和应用(含源代码)

    硬件准备** ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 使用到硬件模块原理图 功能介绍 四线电阻式 ...

  3. ADI Blackfin DSP处理器-BF533的开发详解10:SPORT-IIS口驱动和应用(含源代码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 接口功能介绍 ADSP-BF533上有两个 S ...

  4. ADI Blackfin DSP处理器-BF533的开发详解1:软件和硬件的准备

    BF533是ADI Blackfin系列DSP处理器里的最经典型号,这个DSP我用了20年,单就这一颗DSP来讲,我相信国内应该没有比我更资深的了,下面就来说一说这颗DSP. 这颗IC是Blackfi ...

  5. ADI Blackfin DSP处理器-BF533的开发详解3:GPIO(含源代码)

    我们从最基础的GPIO开始,先讲外设,这玩意不管是单片机,还是ARM,又或是FPGA,甚至SOC的芯片,都有GPIO,有共性,就好理解,让我们看看在ADI的DSP里头,GPIO是怎么一回事吧. 硬件准 ...

  6. ADI Blackfin DSP处理器-BF533的开发详解58:DSP控制ADXL345三轴加速度传感器的应用(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

  7. ADI Blackfin DSP处理器-BF533的开发详解60:DSP控制ADXL345三轴加速度传感器-电子水平仪(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

  8. ADI Blackfin DSP处理器-BF533的开发详解21:RTC实时时钟的原理及应用(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 功能介绍 ADSP-BF53x ...

  9. ADI Blackfin DSP处理器-BF533的开发详解55:CVBS输入-DSP和ADV7180的应用详解(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 CVBS IN 视频输入 硬件实现原理 CVB ...

最新文章

  1. Fully Convolutional Networks
  2. 除硬件外计算机系统不可缺少的是,除硬件外,计算机系统不可缺少的另外一部分是( )。...
  3. oracle 函数索引
  4. Android插件化技术调研
  5. plus 什么是mybais_谈谈自己用mybatis-plus中的一些经验。
  6. 科学家用计算机模拟后确认 60个n原子,科学家用计算机模拟后确认,60个N原子可结合成N60分子。下列关于N60的叙述中正确的是A.N60是一种新型的化合物...
  7. 判断给定森林中有多少棵树特别版
  8. 重温《数据库系统概论》【第一篇 基础篇】【第5章 数据库完整性】
  9. Google全新AI实战课发布:从原理到代码,手把手带你入门机器学习
  10. idea2018版本集成mysql_idea如何集成mysql
  11. pip install transformers
  12. 灵悟礼品网上专卖店——分析类似项目的优缺点
  13. 无线局域网和蜂窝移动网络_苹果调整 iPhone 移动数据下载限制:从 150 MB 升至 200 MB...
  14. DHCP配置实验(包括接口模式、全局模式和中继模式)
  15. java set方法_Set的常用方法(java)
  16. 外贸找客户软件-Bitrecover Email Extractor
  17. C语言实现三子棋(嘎嘎权威)
  18. 走进河北石家庄市以富裕闻名的城中村:槐底村
  19. 20170909深度学习solar测试日志
  20. codeforce-298B Sail(模拟)

热门文章

  1. FPS 游戏自瞄原理
  2. 基于Echarts的销售企业经营数据分析-价格范围
  3. mysql安装了libaio还是报错_ubuntu安装mysql遇到的坑----解决Mysql报错缺少libaio.so.1
  4. Twitter发力区块链+社交?区块链社交应用场景应该满足的三个维度
  5. 比较流行的几种区块链共识算法
  6. 顺序表基本操作实现(详细)
  7. BigGAN-论文阅读笔记
  8. 基于区域的图像分割matlab
  9. 华科实验室信息汇总:
  10. 如何推广新品?新产品上市如何做网络推广?