C6678-控制GPIO输入/输出

C6678-控制GPIO输入/输出

  • 术语
  • 寄存器起始地址
  • 原理
  • 输入输出测试
  • 中断功能原理
      • 中断原理框图
      • 芯片中断控制器原理框图
      • 内核中断控制器原理框图
      • 中断路由架构
      • 一级中断表
      • 二级中断表CIC0
      • 二级中断CIC1
      • 二级中断CIC2
      • 二级中断CIC3
  • 中断演示代码
  • 参考资料

术语

  • NMI: 不可屏蔽中断
  • CIC: 芯片级中断控制器

寄存器起始地址

在这里插入图片描述
引自数据手册第19页。

原理

C6678-控制GPIO输入/输出_第1张图片

输入输出测试

本工程采用DSP裸机调用CSL库对16个GPIO进行了输出和输入测试,《C6678-GPIO测试代码》
由于工程使用了CSL库因此需在工程添加头文件路径和链接库路径:

"C:\ti\pdk_C6678_1_1_2_6\packages"
"C:\ti\pdk_C6678_1_1_2_6\packages\ti\csl\lib\ti.csl.ae66"—小端(大端对应:..ae66e)

C6678-控制GPIO输入/输出_第2张图片
C6678-控制GPIO输入/输出_第3张图片
C6678-控制GPIO输入/输出_第4张图片
值得一提的是,6678的GPIO支持自回环模式,设置为输出模式后输出值可通过 输入寄存器回读,为硬件自测试提供的测试手段,但要注意的是,作为输出的GPIO不可有外部输出信号与之相连,防止损坏IO。

部分代码如下:

/* CSL Header file */
#include 
#include 
#include 

#include "c66x_gpio.h"

int main(void)
{

unsigned char i;
    /* Enable the PSC */
    psc_init();
    gpio_set_direction(GPIO_0, GPIO_OUT);
    while(1) {
        gpio_set_output(GPIO_0 );// set 1
        i = gpio_read_input(GPIO_0);        
        gpio_clear_output(GPIO_0);//  set 0
        i = gpio_read_input(GPIO_0);        
    }
}

中断功能原理

当GPIO引脚被当做中断源和事件源处理时,输入模式配置不是必须的:

  • a) 当GPIO引脚为输入模式时,外部引脚电平沿的变化将产生中断或事件;
  • b) 当GPIO引脚处于输出模式时,可通过编程改变GPIO引脚状态,进而触发中断和事件(即可由软件内部触发GPIO中断和事件)
    通过寄存器SET_RIS_TRIG、CLR_RIS_TRIG、SET_FAL_TRIG和 CLR_FAL_TRIG指定上升沿、下降沿产生,每一位代表一个gpio。

中断原理框图

C6678-控制GPIO输入/输出_第5张图片

芯片中断控制器原理框图

C6678-控制GPIO输入/输出_第6张图片

多个系统事件可以映射到同一个主机中断,系统事件号越小优先级越高(如:事件号5和8映射到同一主机中断,事件5优先级高)。

内核中断控制器原理框图

C6678-控制GPIO输入/输出_第7张图片

中断路由架构

C6678-控制GPIO输入/输出_第8张图片

一级中断表

C6678-控制GPIO输入/输出_第9张图片
注:n 表示核心号。

二级中断表CIC0

C6678-控制GPIO输入/输出_第10张图片

二级中断CIC1

C6678-控制GPIO输入/输出_第11张图片

二级中断CIC2

C6678-控制GPIO输入/输出_第12张图片

二级中断CIC3

C6678-控制GPIO输入/输出_第13张图片

中断演示代码

C667x中断演示代码下载

参考资料

General Purpose Input Output (GPIO) User Guide
Chip Interrupt Controller (CIC) User Guide

你可能感兴趣的:(TMS320C6678开发技术,单片机,stm32,嵌入式硬件)