文章信息
撰写日期 | 2018.12.20 |
---|---|
完稿日期 | 2018.12.20 |
最近维护 | 2019.07.14 |
本文作者 | multimicro |
联系方式 | multimicro@qq.com |
GitHub | https://github.com/wifialan |
本文地址 | https://blog.csdn.net/multimicro/article/details/85112066 |
开发环境
环境说明 | 详细信息 | 备注信息 |
---|---|---|
操作系统 | Win10_x64 | |
CCS版本 | Code Composer Studio v8 | 官网地址 |
controlSUITE | controlSUITE for C2000 MCUs | 官网地址 |
F28335 | 硬汉F28335开发板(150MHz时钟频率) | |
欧姆龙E6B2编码器 | E6B2-CWZ6C 1000 P/R |
捕获模块简介
F28335的Ecap模块捕获过程如下
该定时器是捕获模块专用定时器,在设定好捕获事件后,每捕获一个事件,对应的各级捕获寄存器就会把时间记录在捕获寄存器里面,通过这些时间信息即可计算出速度信息。
Ecap模块中比较重要的寄存器
- eCAP控制寄存器ECCTL1
用于配置触发捕获事件的条件和对应的计数器(一共四级,详见程序注释) - eCAP控制寄存器ECCTL2
用于配置eCAP的工作模式,包括进入中断的方式等 - eCAP捕获寄存器eCAPx
用于记录各级捕获事件发生时的时间 - 其余寄存器在代码中查看其作用
对与F2837xD,其配置捕获模块的程序和F28335的程序完全一样,唯一的不同就是配置Ecap输入引脚方式不同,F28335有固定的Ecap输入引脚,而F2837xD的捕获输入因为加入了Crossbar(X-BAR)机制,使得配置输入引脚其他C2000系列DSP更加灵活,可以使用任何一个GPIO口作为捕获输入,在TI官方的F2837xD文档Technical Reference Manual上面可以看到如下配置捕获引脚的说明(P1955):
F2837xD配置捕获输入的GPIO口的程序就两行:
若想进一步了解X-BAR,参考上面提到的文档P1151页。
详细代码
/*
* ecap.c
*
* Created on: 2018年12月14日
* Author: multimicro
*/
#include "project.h"
void InitECapture()
{
InitECapture1();
InitECapture2();
InitECapture3();
}
void InitECapture1()
{
ECap