一、 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. AI科学家王怀清:机器视觉识别领域 或将出现AI独角兽
  2. 【Java Web开发指南】云服务器部署项目供外网访问(Tomcat)
  3. AI时代!我选Python因为Python是人工智能的未来
  4. mysql怎么查看代码_MySQL中的编码查看与设置(转载)
  5. 卷积神经网络计算题试题_卷积神经网络的计算
  6. asp.net 设置 excel alignment_教你如何用Python轻轻松松操作Excel、Word、CSV,一文就够了,赶紧码住!!!...
  7. 【python】获取PC机公网IP并发送至邮箱
  8. 信息学奥赛一本通C++语言——1028:字符菱形
  9. 深度学习去燥学习编码_通过编码学习编码
  10. 帆软报表跨域之插件开发中Controller中定义的方法实现JSONP跨域
  11. Windows中安装Electron说明
  12. Java基础方面(二)
  13. ADB常用命令及其用法大全
  14. 系统集成项目管理工程师思维导图
  15. 74AHC1G32GW 74系列逻辑芯片
  16. 【动画消消乐】HTML+CSS 自定义加载动画:清新折叠方块效果 063(附源码及原理详解)
  17. 使用DWR出现“例外被抛出且未被接住”错误的原因和解决办法
  18. CSDN、博文视点名家讲坛之夏昕、林信良谈Spring框架
  19. Ubuntu 安装显卡驱动 CUDA10 cuDNN详细教程
  20. “collect2: error: ld returned 1 exit status“解决方法

热门文章

  1. 下拉列表的两种实现方式
  2. 主机、虚拟机、开发板网络环境搭建小结备忘
  3. 无线运动耳机什么牌子好、六款最适合运动的蓝牙耳机推荐
  4. html5canvas绘图空白,html5 canvas toDataURL返回空白图像
  5. PTS产品质量追溯系统解决方案,有哪些管理方法和方式?
  6. (5)微信UI自动化-实现静默鼠标点击(C#)
  7. 微信公众号第三方网页授权
  8. python人工智能算法包_Python 人工智能算法工具包 SimpleAI
  9. 日语二级重要词汇之形容词/形容动词100
  10. 金融国企科技总监参加优普丰CSP敏捷教练学习之旅心得|Scrum认证心得分享