> 文章列表 > C6678-控制GPIO输入/输出

C6678-控制GPIO输入/输出

C6678-控制GPIO输入/输出

C6678-控制GPIO输入/输出

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

术语

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

寄存器起始地址

C6678-控制GPIO输入/输出
引自数据手册第19页。

原理

C6678-控制GPIO输入/输出

输入输出测试

本工程采用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输入/输出
C6678-控制GPIO输入/输出
C6678-控制GPIO输入/输出
值得一提的是,6678的GPIO支持自回环模式,设置为输出模式后输出值可通过 输入寄存器回读,为硬件自测试提供的测试手段,但要注意的是,作为输出的GPIO不可有外部输出信号与之相连,防止损坏IO。

部分代码如下:

/* CSL Header file */
#include <ti/csl/csl_pscAux.h>
#include <ti/csl/csl_bootcfgAux.h>
#include <ti/csl/soc.h>#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 1i = gpio_read_input(GPIO_0);        gpio_clear_output(GPIO_0);//  set 0i = 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输入/输出

芯片中断控制器原理框图

C6678-控制GPIO输入/输出

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

内核中断控制器原理框图

C6678-控制GPIO输入/输出

中断路由架构

C6678-控制GPIO输入/输出

一级中断表

C6678-控制GPIO输入/输出
注:n 表示核心号。

二级中断表CIC0

C6678-控制GPIO输入/输出

二级中断CIC1

C6678-控制GPIO输入/输出

二级中断CIC2

C6678-控制GPIO输入/输出

二级中断CIC3

C6678-控制GPIO输入/输出

中断演示代码

C667x中断演示代码下载

参考资料

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