ADI Blackfin DSP处理器-BF533的开发详解18:用触摸屏的例程来理解中断(含源码)
硬件准备
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寄存器查询触发中断的中断源,并打印中断源信息。
调试步骤
- 将仿真器(ICE)与 ADSP-EDU-BF53x 开发板和计算机连接好。
- 先给 ADSP-EDU-BF53x 开发板上电,再为仿真器(ICE)上电。
- 运行 VisualDSP++ 5.0 软件,选择合适的 BF533 的 session 将仿真器与软件连接。
- 加载 VisualDSP++ 5.0 工程文件 BF53x_INTERRUPT.dpj,编译并全速运行。
- 点击触摸屏或者按按键测试中断触发。
测试结果
点击触摸屏或者按按键测试中断触发,代码打印出触发中断的中断源。
未插入 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:用触摸屏的例程来理解中断(含源码)相关推荐
- ADI Blackfin DSP处理器-BF533的开发详解70:NES 红白机模拟器(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 代码实现功能 代码实现了 NES 游戏模拟器在 ...
- ADI Blackfin DSP处理器-BF533的开发详解24:触摸屏的实现和应用(含源代码)
硬件准备** ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 使用到硬件模块原理图 功能介绍 四线电阻式 ...
- ADI Blackfin DSP处理器-BF533的开发详解10:SPORT-IIS口驱动和应用(含源代码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 接口功能介绍 ADSP-BF533上有两个 S ...
- ADI Blackfin DSP处理器-BF533的开发详解1:软件和硬件的准备
BF533是ADI Blackfin系列DSP处理器里的最经典型号,这个DSP我用了20年,单就这一颗DSP来讲,我相信国内应该没有比我更资深的了,下面就来说一说这颗DSP. 这颗IC是Blackfi ...
- ADI Blackfin DSP处理器-BF533的开发详解3:GPIO(含源代码)
我们从最基础的GPIO开始,先讲外设,这玩意不管是单片机,还是ARM,又或是FPGA,甚至SOC的芯片,都有GPIO,有共性,就好理解,让我们看看在ADI的DSP里头,GPIO是怎么一回事吧. 硬件准 ...
- ADI Blackfin DSP处理器-BF533的开发详解58:DSP控制ADXL345三轴加速度传感器的应用(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...
- ADI Blackfin DSP处理器-BF533的开发详解60:DSP控制ADXL345三轴加速度传感器-电子水平仪(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...
- ADI Blackfin DSP处理器-BF533的开发详解21:RTC实时时钟的原理及应用(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 功能介绍 ADSP-BF53x ...
- ADI Blackfin DSP处理器-BF533的开发详解55:CVBS输入-DSP和ADV7180的应用详解(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 CVBS IN 视频输入 硬件实现原理 CVB ...
最新文章
- Fully Convolutional Networks
- 除硬件外计算机系统不可缺少的是,除硬件外,计算机系统不可缺少的另外一部分是( )。...
- oracle 函数索引
- Android插件化技术调研
- plus 什么是mybais_谈谈自己用mybatis-plus中的一些经验。
- 科学家用计算机模拟后确认 60个n原子,科学家用计算机模拟后确认,60个N原子可结合成N60分子。下列关于N60的叙述中正确的是A.N60是一种新型的化合物...
- 判断给定森林中有多少棵树特别版
- 重温《数据库系统概论》【第一篇 基础篇】【第5章 数据库完整性】
- Google全新AI实战课发布:从原理到代码,手把手带你入门机器学习
- idea2018版本集成mysql_idea如何集成mysql
- pip install transformers
- 灵悟礼品网上专卖店——分析类似项目的优缺点
- 无线局域网和蜂窝移动网络_苹果调整 iPhone 移动数据下载限制:从 150 MB 升至 200 MB...
- DHCP配置实验(包括接口模式、全局模式和中继模式)
- java set方法_Set的常用方法(java)
- 外贸找客户软件-Bitrecover Email Extractor
- C语言实现三子棋(嘎嘎权威)
- 走进河北石家庄市以富裕闻名的城中村:槐底村
- 20170909深度学习solar测试日志
- codeforce-298B Sail(模拟)