0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Zynq中断的三个部分:SGI、PPI、SPI

454398 来源:瓜大三哥 作者:米果不回来 2020-11-16 17:21 次阅读

Zynq中断大致可分为三个部分

第一部分为SGI,软件生成的中断,共16个端口

第二部分为PPICPU私有外设中断,有5个;

第三部分为SPI,共享外设中断,来自于44个PS端的IO外设以及16个PL端的中断。中间部分为GIC,也即中断控制器,用于对中断进行使能、关闭、掩码、设置优先等。


以下为中断控制器框图,主要的控制器部分为ICC和ICD,ICD连接SGI和PPI,ICD连接SPI,可配置两者的寄存器来控制中断。


SGI中断(软件产生中断),共16个IRQ ID号


PPI中断,CPU私有中断,共5个IRQ ID号


SPI中断部分,共60个IRQ ID号



接下来设置带有中断的GPIO

INT_MASK:中断掩码

INT_DIS: 中断关闭

INT_EN: 中断使能

INT_TYPE: 中断类型,设置电平敏感还是边沿敏感

INT_POLARITY:中断极性,设置低电平或下降沿还是高电平或上升沿

INT_ANY: 边沿触发方式,需要INT_TYPE设置为边沿敏感才能使用


GPIO初始化→设置按键和LED方向→设置产生中断方式→设置中断→打开中断控制器→打开中断异常→打开GPIO中断→判断KEY_FLAG值,是1,写LED

GPIO_CONFIG =XGpioPs_LookupConfig(MIO_0_ID) ;
Status =XGpioPs_CfgInitialize(&GPIO_PTR, GPIO_CONFIG, PIO_CONFIG->BaseAddr) ;
    //设置LED方向
    XGpioPs_SetDirectionPin(&GPIO_PTR,0, GPIO_OUTPUT) ;
    XGpioPs_SetDirectionPin(&GPIO_PTR,13, GPIO_OUTPUT) ;
    //设置按键方向
    XGpioPs_SetDirectionPin(&GPIO_PTR,PS_KEY1, GPIO_INPUT) ;
    XGpioPs_SetDirectionPin(&GPIO_PTR,PS_KEY2, GPIO_INPUT) ;
    //使能LED输出
    XGpioPs_SetOutputEnablePin(&GPIO_PTR,0, GPIO_OUTPUT) ;
    XGpioPs_SetOutputEnablePin(&GPIO_PTR,13, GPIO_OUTPUT) ; 
    //设置中断类型 0表示上升沿  
XGpioPs_SetIntrTypePin(&GPIO_PTR,PS_KEY1, 0);//rising edge
    XGpioPs_SetIntrTypePin(&GPIO_PTR,PS_KEY2, 0);//rising edge
    //设置按键使能
    XGpioPs_IntrEnablePin(&GPIO_PTR,PS_KEY1) ;
    XGpioPs_IntrEnablePin(&GPIO_PTR,PS_KEY2) ;
    //设置中断
    Status= IntrInitFuntion(&INTCInst, MIO_0_ID, &GPIO_PTR) ;
    //产生按键的GPIO
    while(1)
            {
                if (key_flag)
                {
                    XGpioPs_WritePin(&GPIO_PTR,0, key_val) ;
                    XGpioPs_WritePin(&GPIO_PTR,13, key_val) ;
                    key_val= ~key_val ;
                    key_flag= 0 ;
                }
            }
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10456

    浏览量

    206694
  • MIO
    MIO
    +关注

    关注

    0

    文章

    12

    浏览量

    8121
  • Zynq
    +关注

    关注

    9

    文章

    600

    浏览量

    46672
收藏 人收藏

    评论

    相关推荐

    stm8s三个按键接PC5 PC6 PC7,设置的下降沿中断,为啥按键按下去不松还不停的进入中断函数?

    我的三个按键接PC5 PC6 PC7,设置的下降沿中断。为啥我按键按下去不松还不停的进入中断函数?我的硬件是直接将按键那一端和GND相连。
    发表于 04-30 07:56

    TIM_PWM+DMA输出三个不同占空比的单脉冲,为什么第三个数据总是第一输出?

    使用TIM_PWM + DMA,DMA传输长度为3,即顺序输出3不同占空比的单脉冲(10%,20%,50%),三个脉冲输出完成后进入DMA传输完成中断,关闭定时器。通过抓图形发现,实际输出是50%,10%,20%,请问这是为什
    发表于 04-03 07:23

    请问STM32U575SPI可以同时工作吗?

    U575有SPI,分别在三个APB上。现在要使用SPI驱动块ADC芯片,求问这路可以同
    发表于 03-18 07:29

    KPA 6EDL_SPI_LINK三个GPIO引脚需要3LUT吗?

    请找到 KPA 6EDL_SPI_LINK ,我们对这个 KPA 有疑问。在 project perceptive 中,我们只能配置一 LUT,以及一配置了 TCPWM 外设的曲柄信号输入。
    发表于 01-19 06:29

    中断的基础概念

    2-中断类型(红色是gicv2特有) • ◾PPI:(private peripheral interrupt),私有外设中断,该中断来源于外设,但是该
    的头像 发表于 11-07 18:01 419次阅读
    <b class='flag-5'>中断</b>的基础概念

    GIC中断 redistributor介绍

    跟distributor连接的部分就不说了。Cpu_active是指示cluster或core的状态,可以用于idle管理。ppi_id用于多核设计时,区分每个redistributor。PPIs
    的头像 发表于 11-07 17:38 287次阅读
    GIC<b class='flag-5'>中断</b> redistributor介绍

    51单片机如何用三个开关控制三个直流电机?

    51单片机用三个开关控制三个直流电机要做到现先启动先停止
    发表于 10-26 06:09

    ARM通用中断控制器GIC之中断控制介绍

    对于SGI中断是否能通过上述两个寄存器来enable和disable,这个由具体的实现( IMPLEMENTATION DEFINED)来定义。
    发表于 09-19 17:09 860次阅读
    ARM通用<b class='flag-5'>中断</b>控制器GIC之<b class='flag-5'>中断</b>控制介绍

    请问STM32U575SPI可以同时工作吗?

    U575有SPI,分别在三个APB上。现在要使用SPI驱动块ADC芯片,求问这路可以同
    发表于 08-07 07:22

    看门狗在Zynq MPSoC上的使用技巧

    Zynq MPSoC的器件里,PS (Processing System )集成了三个看门狗,分别是CSU SWDT,LPD SWDT和FPD SWDT。
    的头像 发表于 06-30 09:47 940次阅读
    看门狗在<b class='flag-5'>Zynq</b> MPSoC上的使用技巧

    ZYNQ(FPGA)与DSP之间GPIO通信实现

    1.1.3.3.2 ZYNQ程序运行结果点击hw_ila_1窗口上角符号的采集触发按钮,如下图①处标识的按钮,可查看到DSP通过GPIO29、GPIO30两GPIO管脚发过来的方波信号: 1.1.3.4
    发表于 06-16 16:02

    AXU2CGB Zynq UltraScale板上的GNU Radio工具包 第4部分

    电子发烧友网站提供《AXU2CGB Zynq UltraScale板上的GNU Radio工具包 第4部分.zip》资料免费下载
    发表于 06-14 15:08 0次下载
    AXU2CGB <b class='flag-5'>Zynq</b> UltraScale板上的GNU Radio工具包 第4<b class='flag-5'>部分</b>

    AXU2CGB Zynq UltraScale板上的GNU Radio工具包 第1部分

    电子发烧友网站提供《AXU2CGB Zynq UltraScale板上的GNU Radio工具包 第1部分.zip》资料免费下载
    发表于 06-14 15:04 2次下载
    AXU2CGB <b class='flag-5'>Zynq</b> UltraScale板上的GNU Radio工具包 第1<b class='flag-5'>部分</b>

    如何使用中断的快速/非阻塞SPI

    数据,它会启用 TRANSMISSION_END 中断并使用它来重新填充缓冲区。我很感激你对此的想法我完全不确定我是否正确处理了中断。据我所知,SPI1 和 SPI0 的
    发表于 05-29 08:01

    STC12C5A60S2-SPI-主机查询发送-从机中断接收源代码

    STC12C5A60S2-SPI-主机查询发送-从机中断接收源代码
    发表于 05-17 15:19 3次下载