一、 MPC5634的eTPU简介

eTPU2是一种片上可编程的I/O控制器,具有自己的核心和内存系统,使其能够独立于设备CPU执行复杂的定时和I/O管理。eTPU2本质上是一个独立的微控制器,设计用于定时控制、I/O处理、串行通信、电机控制和发动机控制应用,重点包括:

  1. 独立于主机核心执行程序
  2. 检测并精确记录输入事件的时间安排
  3. 生成复杂的输出波形
  4. 由核心控制,而不需要实时的主机处理
  5. eTPU2专用通道包括两个匹配寄存器和两个捕获寄存器
  6. eTPU2包括最多两个eTPU引擎,它们通过服务通道硬件的特定指令进行优化
  7. eTPU2不会为服务定时事件创建主机开销

eTPU框图:

eTPU引擎的方框图:

eTPU2是一个实时微处理器子系统。因此,它从指令存储器(SCM)中运行微引擎代码来处理特定的事件,并为参数、工作数据和应用程序状态信息访问数据存储器(SDM)。事件可以来自I/O通道(由于引脚转换和/或时间基础匹配)、设备核心请求或通道间请求。调用本地eTPU处理的事件通过发出服务请求来激活微引擎。服务请求微码可以向设备核心发送一个中断,但设备核心不能被I/O通道事件直接中断。

每个通道都与一个定义其行为的函数相关联。函数是由一组微引擎例程组成的软件实体,称为线程,它们响应eTPU2服务请求。位于单片机中的功能例程也负责通道配置。一个函数可以分配给多个通道,但一个通道只能在给定的时刻与一个函数相关联。如果设备核心重新配置了通道功能,则eTPU2可以改变分配给该通道的功能。功能和通道之间的关联由设备核心定义。

eTPU2引擎处理输入引脚转换并产生输出引脚波形。这些事件是由eTPU2计时器(时间基)触发的,它由一个系统时钟驱动,以提供绝对的时间控制,或由一个异步计数器,如一个角度时钟,可以跟踪一个旋转轴的角度。

eTPU引擎有两个24位计数寄存器(TCR1和TCR2),它们为所有匹配和输入捕获事件提供参考时间基础。这两个时间基的预测器都由设备核心通过eTPU引擎配置寄存器中的位字段来控制。每个TCR1和TCR2计数器寄存器的值可以独立地从系统时钟或通过TCRCLK引脚从外部输入中导出。此外,TCR2时间基可以从特殊的角度时钟硬件中获得,从而能够实现基于角度的功能。添加此功能是为了支持高级的基于角度的引擎控制应用程序。TCR还可以通过共享时间和计数器(STAC)总线驱动eMIOS时间库,或者它们可以由eTPU2功能软件编写。

eTPU2引擎有32个相同的独立通道。每个通道对应于一个输入/输出信号对。每个通道都可以访问24位计数器寄存器,TCR1和TCR2。每个通道由事件逻辑组成,它总共支持四个事件:两个捕获和两个匹配事件。事件逻辑包含两个24位捕获寄存器和两个24位匹配寄存器。匹配寄存器通过大于或等于仅的比较器与选定的TCR进行比较。匹配和比较寄存器对支持单操作功能和双操作函数的许多组合。

eTPU2微引擎是一个简单的RISC实现,它在两个系统时钟的微周期中执行每一条指令,同时通过一个指令管道预抓取下一条指令。对于算术逻辑单元(ALU),指令执行时间是恒定的,除非它从SDM仲裁中获得等待状态。

二、编程知识点

2.1.硬件底层简介

编程其实还是配置基本的底层寄存器,这里我们需要了解eTPU的基本工作模式,它的基本工作模式主要有以下几个:

  1. 用户配置模式:通过访问共享代码存储器(SCM),该核心能够用时间函数对eTPU2核心进行                          编 程。
  2. 用户工作模式:该模式下,核心不访问eTPU2共享代码内存,使用eTPU2预定义的功能。
  3. 编程调试模式:通过Nexus接口访问特殊的跟踪和调试功能(需要自己开发接口)
  4. 模块禁用模式 :节省电源(停止输入采样),eTPU2引擎可以独立地处于禁用模式。模块禁用模式只停止eTPU引擎时钟,以便可以访问共享的BIU和全局通道寄存器

内存地址映射图

主要常用寄存器有:

  1.  ETPU_MCR: eTPU模块配置寄存器,ETPU_MCR收集eTPU系统中的全局配置和状态,包括全局异常
  2. ETPU_ECR:eTPU引擎配置寄存器,ETPU_ECR保存在eTPU引擎中编程的配置和状态字段
  3. ETPU_MISCCMPR:eTPUMISC比较寄存器,该寄存器必须由主机编写的32位字,以便在MISC周期结束时与计算出的签名进行比较。

2.2.编程思路

 2.2.1初始化:由于eTPU是独立运行的,首先我们要配置它,这里需要把配置写到它的RAM里,第一步首先初始化eTPU的RAM。初始化好eTPU内存才可以配置,好了,我们先初始化它的内存,必须先让它停下来,配置CPU可以写eTPU。

eTPU->ECR_A.B.MDIS = 1;    /* 关闭eTPU_A */
eTPU->ECR_B.B.MDIS = 1;    /* 关闭eTPU_B */
eTPU->MCR.B.VIS = 1;       /* 打开CPU写eTPU内存  */

 以下是相关寄存器:

把需要控制的基地值和代码命令拷贝到eTPU内存中,其余不用的必须清零处理

   //举例,类似C代码复制拷贝内存,基地值,配置内存代码,和尺寸
code_end = fs_memcpy32((uint32_t*)0xC3FD0000, code, code_size); fs_memset32(uint32_t *code_end, 0, unused_code_ram);//不用的内存清零eTPU->MCR.B.VIS = 0;      /* 关闭CPU写eTPU */

到这里我们的eTPU的内存已经初始化好了,我们可以直接操作寄存器进行配置了。

 // 配置 MISC eTPU->MISCCMPR.R = 0xA9C75408; //在MCR中启用之前写入MISC值 eTPU->MCR.R = 0x00000000;/*配置eTPU A */eTPU->ECR_A.R = 0x00048000;eTPU->TBCR_A.R = 0x5a008000;eTPU->REDCR_A.R = 0x40004000;/* 配置eTPU B */eTPU->ECR_B.R = 0x00000000;eTPU->TBCR_B.R = 0x18000000;eTPU->REDCR_B.R = 0x40004000;

 总结:

      初始化分为两个步骤,一是eTPU内存初始化和配置初始化,个人理解,如果有误欢迎指导!

MPC5634的eTPU模块学习笔记(一)相关推荐

  1. Arduino模块学习笔记(一)—GPS模块的使用

    Arduino模块学习笔记(一)--GSP模块的使用 文章目录 Arduino模块学习笔记(一)--GSP模块的使用 所需组件 一.模块使用介绍 1.GPS模块(在室内时,一般获取不到位置信息) 2. ...

  2. python模块学习笔记

    python模块学习笔记 1.Python自动发送邮件smtplib 2.制作二维码图片MyQR 3.绝对值模块math 4.CSV模块 5.openpyxl 模块,操作Excel文件 ExcelMa ...

  3. cma linux 起始地址,CMA模块学习笔记

    CMA模块学习笔记 作者:linuxer 发布于:2017-6-28 18:29 分类:内存管理 前言 本文是近期学习CMA模块的一个学习笔记,方便日后遗忘的时候,回来查询以便迅速恢复上下文. 学习的 ...

  4. Python模块之Pandas模块学习笔记

    目录 一.模块的安装 二.数据结构 1. DataFrame的创建 2. DataFrame索引的修改 3. DataFrame数据信息查看 三.文件的读取和写入 1. 读取 2. 写入 四. 数据的 ...

  5. IPy-IPv4和IPv6地址处理模块学习笔记

    在日常网络规划中,会有很多关于IP地址的分配规划问题,如果是手动分配,在量很大的情况下,容易出错.而利用IPy这个python模块,可以很容易实现对iP地址的分配等操作. 以下是对IPy模块学习的一个 ...

  6. 《西游降魔录》模块学习笔记

    <三维游戏设计师宝典3>附带的光盘是错位的给的不是书中的例子所对应的光盘具体原因不得而知.尽管如此,该错位的光盘却有个非常好的例子<西游降魔录> 的游戏,前两天尝试着写了点自己 ...

  7. 启英泰伦cl1122模块学习笔记

    笔记目录 前言 一.CI1122芯片与其它型号对比 二.资料获取 1.启英泰伦语音AI平台 文档中心: 软硬件开发资料以及平台的使用方法 开发资料: SDK和固件下载,相关开发工具的下载,开发板的硬件 ...

  8. LCD1602液晶显示模块学习笔记

    LCD1602液晶显示模块 一.初识LCD602 1.1.实物图 1.2.引脚图 1.3.引脚功能说明 二.显示位置 三.显示内容 四.指令集 五.工作时序 5.1.写操作时序 5.2.读操作时序 六 ...

  9. NOKIA5110液晶显示模块学习笔记

    现在我们的嵌入式课程设计要求做一个超声波测距的倒车雷达,总体不是很难,但是其中要求的NOKIA显示屏从来没有接触过,在CSDN上也很难找到免费的比较完整的资料,因此就想把这部分的学习过程记录下来,分享 ...

最新文章

  1. 破局!Alan Yuille:深度学习关键在于克服组合爆炸
  2. openfire安装配置完全教程
  3. iredmail安装roundcube webmail插件
  4. 观察者模式在SAP UI5主题更改功能中的应用
  5. 无法复制winevt中的文件_u盘文件无法复制怎么解决 u盘文件无法复制解决方法【详细步骤】...
  6. GPU Pro2 - 1.Terrain and Ocean Rendering with Hardware Tessellation
  7. 用面向对象的方法写敲门砖
  8. 智还王项目中出现的问题和使用的一些方法
  9. 计算机一级考试系统改革,以等级考试为导向的大学计算机改革
  10. Linux基础——Linux 基本指令 ls 和 cd
  11. 苹果6用U盘越狱_iOS12.3.1 A12 支持在线越狱?作者黑人问号
  12. vue____后台管理系统搭建(推荐,懒得自己写了)
  13. Android App拥有system权限
  14. SIM800(GPRS)拨号上网失败未能连接服务器
  15. [转]王垠的过去和现状
  16. Contrastive Multiview Coding
  17. 无线网密码修改好了无法连接服务器,无线路由器修改密码后电脑无法上网如何解决...
  18. 金蝶kis记账王新建套账的操作方法
  19. PR调色 日常Vlog街拍时尚视频博客视频调色PR预设
  20. JS中预处理是一种好无节操的机制

热门文章

  1. vs2013 javascript语言服务遇到错误且已关闭解决方案
  2. HTTP常见的几种状态码及意义详解,如何批量获取网站HTTP状态码
  3. 天玑820相当于骁龙什么处理器 天玑820和骁龙765g哪个好
  4. 离散数学偏序关系哈斯图上(下)确界极小(大)值最大(小)值
  5. c++中 .hpp和.h文件的区别
  6. 制造企业为什么需要质量追溯管理系统?
  7. c语言编辑cad程序,CAD时钟生成,C语言实现
  8. PHP Secure E-mails
  9. 网络变压器的工作原理:网络变压器的回波损耗对传送电压信号有怎样的影响?
  10. 注册IxWebHosting免费域名的简易教程