C6678-控制GPIO输入/输出
- 术语
- 寄存器起始地址
- 原理
- 输入输出测试
- 中断功能原理
- 中断原理框图
- 芯片中断控制器原理框图
- 内核中断控制器原理框图
- 中断路由架构
- 一级中断表
- 二级中断表CIC0
- 二级中断CIC1
- 二级中断CIC2
- 二级中断CIC3
- 中断演示代码
- 参考资料
术语
- NMI: 不可屏蔽中断
- CIC: 芯片级中断控制器
寄存器起始地址
引自数据手册第19页。
原理
输入输出测试
本工程采用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)
值得一提的是,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 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。
中断原理框图
芯片中断控制器原理框图
多个系统事件可以映射到同一个主机中断,系统事件号越小优先级越高(如:事件号5和8映射到同一主机中断,事件5优先级高)。
内核中断控制器原理框图
中断路由架构
一级中断表
注:n 表示核心号。
二级中断表CIC0
二级中断CIC1
二级中断CIC2
二级中断CIC3
中断演示代码
C667x中断演示代码下载
参考资料
General Purpose Input Output (GPIO) User Guide
Chip Interrupt Controller (CIC) User Guide