1、RTI中断模块,为了支持RTOS操作系统,这些要根据设备来选择
2、vim
中断支持128个通道,包括寄存器向量中断和硬件向量中断模式,优先级可编程
两种软件调度:索引中断,寄存器向量中断
奇偶校验保护软件向量表,以防止软错误
三步:
1·当外设发生事件时,外设向vim发出请求
2·vim优先接受外设的请求,并向cpu提供最高优先级中断服务函数的地址
3·最终cpu从该地址开始执行。
某些设备外设能够在多个中断请求线上请求中断
发生事件并不一定会产生中断,需满足两个条件:
1·有中断标志位能标志会产生中断
2·中断使能位使能
arm cpu为中断请求提供了两个中断向量
快速中断请求FIQS和普通中断请求IQRS
FIQS相比于IQRS具备更高的优先级,并且能够打断IQRS
小提示:
【cortex-r4f中的FIQ是不可屏蔽快速中断,一旦FIQ使能(通过清除cpsr中的F位)它将不可通过设置CPSR中的F位来失能,只能通过复位和FIQ才能设置CPSR中的F位
通过硬件,FIQ不可重入???
】
在复位之后,FIQS和IRQ都将失能,CPU可以通过CPSR
(当前程序状态寄存器)的设置来使能这些中断请求通道
必须通过CPSR清除6,7位,才能使能CPU中的FIQ和IRQ中断请求
当CPU接收中断请求,CPSR的模式字段改变成FIQ和IRQ模式,
当收到IRQ,CPU通过设置CPSR的7位来禁止其他的IRQ
当收到FIQ,CPU通过设置CPSR中的6,7位来禁止其他的IRQ和FIQ
软件中断处理选项:
1·索引中断模式(兼容上代的遗留)
2·注册向量中断(自动为应用程序提供向量地址)
启动中断之前,应用程序还必须启动中断向量表,一旦vim接受到中断,它会从中断向量表中加载ISR的地址,并将其存储在中断向量寄存器中
之后,cpu接收到中断,CPU从中断向量寄存器中加载到ISR的地址
3·硬件向量中断(自动调度到ISR,仅IRQ)
每32位ISR地址都有一位奇偶校验,当将地址写入中断向量表中,将奇偶校验位写入相应的奇偶校验区
3、TMS570基本的架构概念被称为安全岛屿
电源,时钟,复位等基本功能受到保护,可在硬件中实现高水平的诊断覆盖,特点是:
双核锁步,围绕ARM Cortex-r4f cpu构建,可周期检测核心边界的故障。都围绕着减轻cpu和常见故障而实现的
SRAM上的ECC和flash都紧密耦合到R4F,ECC控制器就在CPU的内部这有两个优点:诊断包括CPU和内存的互联,能逐步循环检查ECC本身
带有先进的定时器N2HET
频率调制锁相环FMPLL将外部频率乘以更高的频率供内部使用
大端BE32
将重要的字节存储在最低的内存地址中,此外字段的地址是最低地址
4、架构基于TMS570平台架构,该架构定义了总线主控器和总线从控器的之间的互联
存储器映射:cortex-r4f使用32位地址总线,可以访问4GB的内存空间,空间分为几个区域,每个区域由不同的存储器选择。
主flash默认从0x00000000开始,这也是复位向量时,cortex-r4f会从此处开始执行,默认情况下RAM的地址从0x08000000开始
该设备也支持指令存储器flash和数据存储器RAM的交换,在此情况下,交换后从0x00000000开始访问数据RAM,从0x00400000开始访问RAM ECC位置,从0x08000000开始访问flash。
每个模块的控制和状态寄存器都映射在cpu的4GB存储空间内,一些模块还具有相关的存储器,也映射在这个空间。
当访问超过一定的偏移值,会产生中止
5、异常是指使处理器暂时停止正常程序执行流程的事件
有三种异常:复位
中止
中断
当满足一定条件,会触发复位
当cortex-r4f的内存系统不能成功完成内存访问,发生中止,当指令获取时发生错误,发生预取中止,当数据访问时发生错误,发生数据中止,中止也被分类为精确和不精确
6、ePWM
高度可编程且非常灵活,由较小的单通道模块构建,可以根据需要一起操作,形成系统,产生正交的架构,各个模块也都能独立运行
·专用的16位时钟计数器,用来控制周期和频率
·每个的EPWM模块都代表着完整的输出通道,由EPWMxA和EPWMxB组成
·通过独立的上升下降沿延时,生成死区
·Trip-zone 信号表明是错误或者是触发条件发生了
每个EPWM由8个子模块组成
·TB(time base)时基子模块
每隔EPWM都有自己的时基子模块,用来确定任何时间发生的时序,使得每个ePWM可作为单独的系统工作
配置时基子模块可以:
指定时基寄存器的频率和周期来控制事件的发生
管理与其他ePWM的时基同步
设置时基计数器向上向下 上下模式
生成事件ctr=prd/0,即计数器等于0或设定值时产生事件
TBCLK是从VCLK分频得到的
配置外设时钟输入的预分频版本,来控制时钟速率
理解:整个epwm的计数器
TBPRD是时基的周期,有阴影寄存器
TBCTR是时基的计数器,其CTR等于0和PRD,会产生事件
时基的同步,此epwm与其他epwm时基同步
·CC(counter compare)计数比较子模块
时基计数器的值输入到计数比较子模块,时基的值不断与CMPA寄存器(counter-compare A)和CMPB寄存器(counter-compare B)进行比较,当比较相等时,计数比较单元产生相应的事件
根据这两个比较寄存器,生成两个独立的比较事件
cmpa 和cmpb 每个都有预装载寄存器
具备影子寄存器(预装载寄存器)
影子寄存器缓冲临时保持要写入寄存器的值,对硬件没有任何影响,当某个时刻,其存储的值就被传送给寄存器,其目的是为了防止,软件异步修改寄存器时,可能的损坏和虚假操作。
阴影模式:如果阴影寄存器使能,CMPCTL寄存器设定好时,当发生ctr=0或prd 时(可设定) 就会加载到当前寄存器
立即加载模式:对寄存器的读和写,直接操作当前寄存器
外部EPWMxSYNCI external synchronization event可能会造成TBCTR计数器的不连续,需要考虑到
·AQ(action-qualifiler)动作限定子模块
其在波形构造和pwm生成中起着重要的作用,决定着将事件转换为各种的动作类型,从而在EPWMxA和EPWMxB中输出所需的波形
任何事件都可以配置,在给定输出上生成事件,CMPA和CMPB都可以在epwmxA上发生
对 CTR=PRD/0/CMPA/CMPB事件进行限定和生成,并管理优先级
关闭功能使用的是,do nothing 这样就不能生成事件了
软件强制事件有最高的优先级
通常,当前寄存器每周期从预加载寄存器中更新,但可能会延迟一段时间,要留下一个时钟周期来加载,这不是计数周期,通常这个周期可以忽略,当然我也可以把它忽略
向上向下计数,只要设定一个相等的比较值,就可以实现
0-100的占空比
对于向上和向下计数:看来似乎零和到达周期的值,是同时发生的,但其实相差一个TBCLK周期,所以PWM的周期是(TBPRD+1)*Ttbclk
对于向上向下计数:此时没有延迟时间,没有相差的一个周期,所以pwm的周期是2TBPRDTtbclk
·DB(dead-band)死区子模块
可以设定上升沿,下降沿延时的值,即死区的时间
也可以不加修饰,不在PWM波上附加死区
可以通过AQ生成死区,但如果需要具有极性控制的基于边缘延迟的死区,还是要通过死区模块
·PC
斩波模块
使用高频载波信号去调制pwm波形
当需要,栅极驱动脉冲变压去控制功率开关元件,此模块就比较重要
·TZ
每个pwm都连接着6个信号,
1到3是gpio mux
4是eqep
5是系统的振荡器和PLL时钟错误标志
6是调试模式
最少3个宽度的 低脉冲会触发错误条件 3*TBCLK
当one-shot(OSHT)发生时,
TZCTL的TZA位和TZB位立即变成,EPWMA和EPWMB的输出,如果寄存器使能的话,此时TZFLG的OST位被设置了,同时TZINT中断被产生了
必须通过设置TZCLR的OST位,来清除这一条件
TZFRC发生一次OSHT事件
可谓每一个输出的pwm的pin脚配置,当触发发生时的事件
·ET
接收时基 、计数比较和数字比较子模块,产生的输入
可以发出中断请求和ADC开始转换标志
哪个时间可以触发中断和ADC转换,由这个模块管理
7、ADC
最多两个adc模块实例
其主要特点有:可选择10位或12位分辨率
有三个转换组-group1 group2 和event group
所有三个转换组都可配置为硬件触发,事件组只能是硬件触发的,group1和group2 默认是由软件触发
转换结果存储在64字SRAM里
两个ADC模块共享16个通道
ADC1支持24个通道,ADC2支持16个通道并且所有通道都与ADC1共用
ADC内核基于 逐次逼近寄存器(successive approximation resister)
转换组的划分,为了触发的分组,不同时间可以分别触发,同一转换组是一同按照升序进行采样
·一个模拟输入可以被分配给多个转换组,允许通道被多个采样组重复采样,此时,当一次触发多个转换组时,使用内置的优先级方案,event最高,之后是group1 最后是group2,
·组中有多个通道时,转换按通道编号,升序进行
每个转换组都有一组独立的控制寄存器:
选择要转换的输入通道
配置转换模式,单个转换或连续转换
配置输入通道转换时间
配置中断和/DMA请求
·adc模块支持两种不同的通道选择模式,用于选择要转换的模拟输入通道,顺序通道选择和增强通道选择
·ADC的采样和保持时间由adclk频率和每个转换组的samp寄存器定义
其的采样时间的范围:最小2个ADCLK,最大4098个ADCLK
最后的获取时间,是寄存器值加2
对于增强通道选择模式不使能时,也就是顺序通道模式,组中可以选择多个通道,但是每次转换的只能是一个是通道。
·其具有定序器来协调ADC的操作,包括多路复用器,ADC内核,结果存储单元。
·根据触发的时间,划分组别,同时被触发的通道划分到一个组,里面采样时间是是按顺序升序进行
·组的模式 可配置单次转换和连续转换,连续转换下,只需要触发一次,已选中的通道就会重复进行转换,其标志位也一直为1,但不能所有这三个组都配为连续转换模式。
ADC存储在RAM的3个独立存储区域,每个存储区域都是一个堆缓冲器,每个缓冲器都能保持一个转换结果
不要看初始化啊,重要的是配置的过程,整个程序是怎么走的,框架是什么样
8、RDC模块
12位分辨率,旋变数字转换器,集成了板载可编程正弦振荡器,可以为旋转变压器提供正弦波激励,但建议使用外部晶振来获得精确的时间参考,激励频率:10khz,12,15和20
系统故障检测:旋转变压器信号丢失,输入信号超出范围,输入信号不匹配,和位置跟踪丢失
输入:
3.15V左右,sin和cos接收10khz-20khz
采用2型伺服回路,来跟踪输入,并将输入的sin和cos信息转换为输入角度和速率,转换器的最大跟踪速率由内部的输入时钟频率决定
输出:二进制补码形式
12位并行端口,3线串行接口
工作原理:当旋转变压器移动到最低有效位时,将输出一个LSB
转换器通过产生输出角,来跟踪轴转角,输出角反馈并和输入角比较,正常跟踪时,两者之差为零
使用闭环对其进行处理
芯片选择引脚 cs 必须置低才能使能器件
SOE保持高电平,使能并行串口,
保持低电平,使能串行接口,此时DB0-DB9为高阻态,
DB11为串行输出(SO)DB10为串行时钟输入(SCLK)
RD输入被用来 读取输出寄存器中的数据,并且使能输出缓冲器
sample信号,发生由高至低的跳变时,数据从位置和速度积分器,分别传入到位置和速度寄存器,此时引脚必须保持低电平至少1ns
sample的上升沿,会复位监控信号最大幅度和最小幅度的内部寄存器
串行三条线,SO RD SCLK 时钟频率可达到25Mhz
数据从位置和速度积分器,分别传入到位置和速度寄存器,轴角位置和轴角速度就可以从这两个12位寄存器获得
RDVEL是 极性选择PIN脚 用来选择是将位置寄存器还是将速度寄存器的值,送入到输出寄存器
RD从输出寄存器读出值,并提供给SO(DB11)
输出移位寄存器是16位的,16位由12位数据组成
(由RDVEL决定是位置还是速度)
剩下四个位,为RDVEL位,奇偶校验位,信号衰减位,丢失跟踪位。
首先读出MSB第15位,位15到位4对应角度信息,
位3RDVEL位 置1为位置,2为速度
位2是DOS 信号衰减位
位1是LOT 丢失跟踪位
位0是PAR 奇偶校验位
RD由高到低必须在SCLK为高时完成
9、CAN
·多主通信,速度高达1Mbit/s 共有三个can控制器
适用ISO11898-1 标准 支持can协议版本
支持两个中断线路,level0和level1
消息对象和标志符掩码都被存储在消息RAM中
can模块的内部功能有 报文的过滤 报文从信箱到RAM的传输
处理传输请求 生成中断和DMA请求
·can core:由can协议控制器和rx/tx移位寄存器组成,它用来处理所有的11898-1协议。
·message handler:是一个状态机,控制单端口
message RAM和can core中rx/tx移位寄存器的数据传输,同时也处理接受的过滤,并且能控制可编程的中断和DMA的发生
对接收的信息进行过滤,并将接受的帧存储在指定的消息对象中
·message RAM:用来存储can的消息,保存message objects和它的极性位
·message RAM interface: 控制CPU对消息RAM的读写访问,有三个寄存器IF1/IF2/IF3
IF1和IF2读写都可以
IF3为只读
·DCAN有两个时钟源:VCLK和VCLKA
·位时序,一个位传输中的组成,里面又能被分为几个单元,单元内的最小单位是tq
位时序可划分为四个单元:
1同步段
2传播时序段
3相位缓冲段一
4相位缓冲段二
其的最小单元Tq 是位时序的基本单元,通过can—clk和波特率预分频器给定,
Tq=Baud rate prescaler/CAN_CLK
除了同步段的固定长度,其他单元都可编程修改
同步段
传播时序段:用来补偿can的延时时间,包括总线上的信号传播时间和can节点的内部延迟时间
相位缓冲段和同步:
通过对每一个tq的电平进行采样,并与上一个采样点的电平,比较来检测边缘。只有在前一个采样点是隐形,当前采样点是显性时,才能进行同步。
message objects 必须要通过IFx ,不能与CPU直连
·can message transfer
can的传输有两种模式:中断模式、轮询模式
CPU会并行轮询所有的mmessage object的newdat位和txrqst位
通过轮询,所有的传输对象以低号分组,而接受对象以高的号分组,这将使事情变得容易
接收到的消息如果他们通过了筛选器,将会传到合适的message object中
默认的,当can处于总线关闭态,cpu可以通过设置复位初始化位,否则,模块将保持总线关闭态
10、DWD(digitial watchdog)
用来侦测CPU是否跑飞,可以生成复位和无标志的中断NMI,
一个可编程的周期后,或者没有将正确的key值序列写入到RTIWDKEY寄存器,都会触发
只在复位和热复位,才会重置
DWD默认是失能的,要往RTIDWDCTRL中写入一个32位值才可使能
正确值写入到,RTIWDKEY寄存器,DWD向下计数器重新加载
·digitial windowed watchdog (DWWD)
为了增强安全性,除了在单个时间阈值检查,还在时间窗口检查
其使用dwd的预加载寄存器
与dwd不同,其在失能后仍然能进行配置
11、pmm
核心逻辑被划分为几个域,可以根据应用的需要开关,这可以减少流向应用未使用的模块的电流
一共有五个逻辑域,其中有两个只内存电源域
PSCON是一个有限状态机,控制着从一个状态到另一个状态的电源域的电源序列
PD1时常开域并且其不受PMM控制,
PD3包含着一些常用外设
PD5包含着epwm nqep ecap
RAM_PD1和RAM_PD2每个都包含64k的紧耦合RAM
一旦被配置,如果没有系统复位,电源域的状态是不能改变的
每个电源域可以处在这三个状态:
active 正常提供电压
idle 时钟关掉 电压仍然维持在正常水平
off 完全关断