C2837x入门指南(九) — 控制类外设PWM CAP QEP(上)
Loading the player...
将在30s后自动为您播放下一课程
大家好 这一章我们给大家介绍C2000最重要的外设 控制类外设 控制类外设 主要是指PWM eCAP EQEP 这一章重点讲一下这三个模块的架构 以及功能 以及F2837X在其中的重要改进 对于一个PWM模块 有输入和输出两个部分 从输入来看 可以input x-bar 以及pwm x-bar 输入到TD模块 或者DC模块 作为一个保护 或者同步的功能 从输出看 PWM可以触发PWM的时钟中断 和TD保护中断 当然 最重要的功能是产生PWM纹波 同时输出SOC信号 给ADC作为采样 最后PWM还有同步功能 可以接受上一个信号的同步信号输入 以及发送同步信号给下一个模块 从PWM的内部看 ePWM模块主要由框图中的几个模块组成 首先 PWM接受系统时钟的输入 可以通过分频寄存器 得到用户需要的PWM频率 TBCLK 然后 TBCLK输入PWM的16位寄存器 作为PWM的计数器时机 后面匹配信号都是以计数器时机或寄存器 compare模块主要是采集匹配事件 输入给AQ 控制PWM的输出动作 AQ模块会控制产生的PWM的波形 DB模块 是时区生成器 可以给输出加上死去 PWM chopper主要是PWM输出事件内 再产生调制波形 让控制更精细的PWM功能 trip zone主要是保护模块 用于PWM在紧急情况下的保护 DC模块主要是处理外部事件 比如TD角输入和比较器的处理 等单元 它会根据事件来触发保护 后面会根据这个框图对每个模块介绍 首先 我们看看TB模块 也就是时机模块 TB模块的核心是16位的计时器 TBCTR 它会在使能时钟给定后 开始计数 每次收到一个CLK就计时一次 TBPRD是周期寄存器 如果在它里面设置了周期值 那TBPRD就匹配到计时器后 就会清零 或者改变计数方向 PWM支持三种计时方式 单增计数 TBCTR计数到TBPRD就清零 重新计数 不断反复 单点计数 会在开始计数后 转载TBPRD值 到TBCTR 然后每个CLK减 一直到CBCTR等于0 然后重新装载 TBPRD的值 不断反复 第三种是增减计数 一般用于需要对称波形的场合 这种模式会在计数开始后 TBCTR从0开始 每次CLK加1 就会计数加1 直到计数到CBPRD的值 然后在每个CLK减1 直到到0 不断反复 时机模块 除了决定PWM的时钟和频率外 还有一个功能是设置相位 如果你的应用需要多个PWM之间保持相同的相位 比如90度 或者180度 那就需要一个相位寄存器 和同步信号的加入 通知PWM 123 通过同步信号同步 每个PWM在收到同步信号后 就会瞬间把phase寄存器 的值加载到TBCTR寄存器中 同时可以选择是否将同步信号发送给下一个PWM模块 F2837X由于增加了compare C和compareD 所以可以设置匹配 这两个寄存器后 发送同步信号 图中就通过这个功能 完成了三个PWM之家120度的相位移动情况 PWM1的同步信号 是外部GPL的脉冲信号 所以TB模块有两个设计寄存器 状态寄存器 相位寄存器 计入寄存器和周期值寄存器组成 设置寄存器的高8位 可以设置PWM寄存器的仿真状态的 技术模式 设置同步后的技术方向 以及时针的分频数 低8位寄存器可以强制触发一次同步事件 选择同步源的发出时刻 是否使能你的寄存器模式 以及技术模式 所以TB模块是整个PWM模块的核心 后面的模块是根据TBCTL的计数值 来运算的 看完了TB模块 我们来看CC模块 也就是compare logic模块 比较事件产生是如何运作的 CC模块是由compareA compareB两个寄存器组成 F2837X还增加了compareC和compareD两个寄存器 这四个寄存器是16位的 会在TBCTR的计数值和它们的值相当时 发出一个事件信号 如图中的红点所示 单增和单减计数是一个周期 一个寄存器只会匹配一次 也就是触发一次事件 而增减计数模式下 一个比较寄存器的值 可以在增减计数下各出现一个事件 等于一个周期 一个寄存器可以匹配两个事件 这个事件会用于后面的AQ模块 使用 CC模块主要有控制寄存器 四个比较寄存器组成 看看主要寄存器 控制寄存器1用于检测当前寄存器是否有数据 以及compareA compareB加载到active寄存器的模式 可以设置立即加载 或者当TBCTR等于0的时候 和周期点的时候 进行加载 控制寄存器2的主要功能是compare C和compareD的数据更新模式 compareC和D可以选择在收到同步信号后加载 也可以和compareA 和B一样在零点周期点立即加载最新值 模式 看完了CC模块 接下来就是AQ模块 也就是PWM真正输出动作的模块 AQ的主要功能是通过CC模块 和TB模块产生的事件 来改变PWM的输出电平 主要动作有四种 X是不动作 下箭头是置低 上箭头是置高 T是翻转 如最右边所示 每一个事件都会配置动作的触发源 而可以用的事件 由软件触发 compareA compareB 零点 周期点 以及F2837X最特殊的T1、T2事件 其他都和PQ系列相同 T1和T2是F2837X新加入的事件 这个事件的功能是让DC模块 以及外部TC引脚 以及同步事件的触发 可以回到AC模块控制PWM输出 而不是像PQ系列 只能通过TZ模块 强制把电平加到PWM输出上 这样做的功能是 外部信号 可以触发翻转 通过AQ 以后的信号 还能实现死去的功能 因为AQ是输出是DB模块的输入 是死去模块的输入 所以相对于TD模块直接输入到PWM电平而言 它可以通过DB模块 增加一个死去的功能 这是一个PWM单增技术的例子 设置PWMA是在零点高 compareA点至D 匹配其他点的动作 而PWMB是在compareB 图中的波形就是配置这样的AQ输出波形 所以compareA和B是生成两路不同的波形 当然 compareA和B也可以都给PWMA的输出 来用 这样的话 PWMA可以输出一个上升沿和下降沿都被设置的波形 PWMB的设置 为零点的翻转 这样PWM就会一直处于一个占空比50%的波形 如果是增减计数模式 就可以通过compareA和B 生成对称的PWMAB的波形 当然和前面一样 也可以让PWMA使用两个比较寄存器 生成不对称波形 而PWMB可以设置成0至D 周期点至高的波形 所以AQ模式让PWM输出更加灵活 可以按照不同需求 在不同点 生成想要的波形 AQ模块 主要分为设置寄存器 AB路的设计寄存器 以及软件强制控制寄存器 AQ控制寄存器 是F2837X新加的一个寄存器 因为新的PWM模块 AQ增加了引子寄存器 所以可以选择AQ模块的加载方式 可以选择收到同步信号 在零点和周期点加载 AQCTL设置匹配事件 刚才说到的 在零点 周期点 compareA和B 匹配动作 T1和2是F2837X新增的事件 CTLR用于设置T1、2事件的匹配 T1和T2事件和其他事件不同 不是由计数器匹配出发的 而是由DC模块的事件 或者TC角 从同步信号出发 除了事件出发 AQ还可以设置软件强制电平 并且可以设置立即装载 或者在零点周期点装载 而且AB路可以分开控制 同时通过OTSFB A设置是否是单次改变的输出 SFRC用于设置周期 强制改变寄存器 去改变AQ输出的电平是高还是低
大家好 这一章我们给大家介绍C2000最重要的外设 控制类外设 控制类外设 主要是指PWM eCAP EQEP 这一章重点讲一下这三个模块的架构 以及功能 以及F2837X在其中的重要改进 对于一个PWM模块 有输入和输出两个部分 从输入来看 可以input x-bar 以及pwm x-bar 输入到TD模块 或者DC模块 作为一个保护 或者同步的功能 从输出看 PWM可以触发PWM的时钟中断 和TD保护中断 当然 最重要的功能是产生PWM纹波 同时输出SOC信号 给ADC作为采样 最后PWM还有同步功能 可以接受上一个信号的同步信号输入 以及发送同步信号给下一个模块 从PWM的内部看 ePWM模块主要由框图中的几个模块组成 首先 PWM接受系统时钟的输入 可以通过分频寄存器 得到用户需要的PWM频率 TBCLK 然后 TBCLK输入PWM的16位寄存器 作为PWM的计数器时机 后面匹配信号都是以计数器时机或寄存器 compare模块主要是采集匹配事件 输入给AQ 控制PWM的输出动作 AQ模块会控制产生的PWM的波形 DB模块 是时区生成器 可以给输出加上死去 PWM chopper主要是PWM输出事件内 再产生调制波形 让控制更精细的PWM功能 trip zone主要是保护模块 用于PWM在紧急情况下的保护 DC模块主要是处理外部事件 比如TD角输入和比较器的处理 等单元 它会根据事件来触发保护 后面会根据这个框图对每个模块介绍 首先 我们看看TB模块 也就是时机模块 TB模块的核心是16位的计时器 TBCTR 它会在使能时钟给定后 开始计数 每次收到一个CLK就计时一次 TBPRD是周期寄存器 如果在它里面设置了周期值 那TBPRD就匹配到计时器后 就会清零 或者改变计数方向 PWM支持三种计时方式 单增计数 TBCTR计数到TBPRD就清零 重新计数 不断反复 单点计数 会在开始计数后 转载TBPRD值 到TBCTR 然后每个CLK减 一直到CBCTR等于0 然后重新装载 TBPRD的值 不断反复 第三种是增减计数 一般用于需要对称波形的场合 这种模式会在计数开始后 TBCTR从0开始 每次CLK加1 就会计数加1 直到计数到CBPRD的值 然后在每个CLK减1 直到到0 不断反复 时机模块 除了决定PWM的时钟和频率外 还有一个功能是设置相位 如果你的应用需要多个PWM之间保持相同的相位 比如90度 或者180度 那就需要一个相位寄存器 和同步信号的加入 通知PWM 123 通过同步信号同步 每个PWM在收到同步信号后 就会瞬间把phase寄存器 的值加载到TBCTR寄存器中 同时可以选择是否将同步信号发送给下一个PWM模块 F2837X由于增加了compare C和compareD 所以可以设置匹配 这两个寄存器后 发送同步信号 图中就通过这个功能 完成了三个PWM之家120度的相位移动情况 PWM1的同步信号 是外部GPL的脉冲信号 所以TB模块有两个设计寄存器 状态寄存器 相位寄存器 计入寄存器和周期值寄存器组成 设置寄存器的高8位 可以设置PWM寄存器的仿真状态的 技术模式 设置同步后的技术方向 以及时针的分频数 低8位寄存器可以强制触发一次同步事件 选择同步源的发出时刻 是否使能你的寄存器模式 以及技术模式 所以TB模块是整个PWM模块的核心 后面的模块是根据TBCTL的计数值 来运算的 看完了TB模块 我们来看CC模块 也就是compare logic模块 比较事件产生是如何运作的 CC模块是由compareA compareB两个寄存器组成 F2837X还增加了compareC和compareD两个寄存器 这四个寄存器是16位的 会在TBCTR的计数值和它们的值相当时 发出一个事件信号 如图中的红点所示 单增和单减计数是一个周期 一个寄存器只会匹配一次 也就是触发一次事件 而增减计数模式下 一个比较寄存器的值 可以在增减计数下各出现一个事件 等于一个周期 一个寄存器可以匹配两个事件 这个事件会用于后面的AQ模块 使用 CC模块主要有控制寄存器 四个比较寄存器组成 看看主要寄存器 控制寄存器1用于检测当前寄存器是否有数据 以及compareA compareB加载到active寄存器的模式 可以设置立即加载 或者当TBCTR等于0的时候 和周期点的时候 进行加载 控制寄存器2的主要功能是compare C和compareD的数据更新模式 compareC和D可以选择在收到同步信号后加载 也可以和compareA 和B一样在零点周期点立即加载最新值 模式 看完了CC模块 接下来就是AQ模块 也就是PWM真正输出动作的模块 AQ的主要功能是通过CC模块 和TB模块产生的事件 来改变PWM的输出电平 主要动作有四种 X是不动作 下箭头是置低 上箭头是置高 T是翻转 如最右边所示 每一个事件都会配置动作的触发源 而可以用的事件 由软件触发 compareA compareB 零点 周期点 以及F2837X最特殊的T1、T2事件 其他都和PQ系列相同 T1和T2是F2837X新加入的事件 这个事件的功能是让DC模块 以及外部TC引脚 以及同步事件的触发 可以回到AC模块控制PWM输出 而不是像PQ系列 只能通过TZ模块 强制把电平加到PWM输出上 这样做的功能是 外部信号 可以触发翻转 通过AQ 以后的信号 还能实现死去的功能 因为AQ是输出是DB模块的输入 是死去模块的输入 所以相对于TD模块直接输入到PWM电平而言 它可以通过DB模块 增加一个死去的功能 这是一个PWM单增技术的例子 设置PWMA是在零点高 compareA点至D 匹配其他点的动作 而PWMB是在compareB 图中的波形就是配置这样的AQ输出波形 所以compareA和B是生成两路不同的波形 当然 compareA和B也可以都给PWMA的输出 来用 这样的话 PWMA可以输出一个上升沿和下降沿都被设置的波形 PWMB的设置 为零点的翻转 这样PWM就会一直处于一个占空比50%的波形 如果是增减计数模式 就可以通过compareA和B 生成对称的PWMAB的波形 当然和前面一样 也可以让PWMA使用两个比较寄存器 生成不对称波形 而PWMB可以设置成0至D 周期点至高的波形 所以AQ模式让PWM输出更加灵活 可以按照不同需求 在不同点 生成想要的波形 AQ模块 主要分为设置寄存器 AB路的设计寄存器 以及软件强制控制寄存器 AQ控制寄存器 是F2837X新加的一个寄存器 因为新的PWM模块 AQ增加了引子寄存器 所以可以选择AQ模块的加载方式 可以选择收到同步信号 在零点和周期点加载 AQCTL设置匹配事件 刚才说到的 在零点 周期点 compareA和B 匹配动作 T1和2是F2837X新增的事件 CTLR用于设置T1、2事件的匹配 T1和T2事件和其他事件不同 不是由计数器匹配出发的 而是由DC模块的事件 或者TC角 从同步信号出发 除了事件出发 AQ还可以设置软件强制电平 并且可以设置立即装载 或者在零点周期点装载 而且AB路可以分开控制 同时通过OTSFB A设置是否是单次改变的输出 SFRC用于设置周期 强制改变寄存器 去改变AQ输出的电平是高还是低
大家好 这一章我们给大家介绍C2000最重要的外设
控制类外设
控制类外设 主要是指PWM eCAP EQEP
这一章重点讲一下这三个模块的架构
以及功能 以及F2837X在其中的重要改进
对于一个PWM模块 有输入和输出两个部分
从输入来看 可以input x-bar
以及pwm x-bar
输入到TD模块
或者DC模块 作为一个保护
或者同步的功能
从输出看 PWM可以触发PWM的时钟中断
和TD保护中断
当然 最重要的功能是产生PWM纹波
同时输出SOC信号 给ADC作为采样
最后PWM还有同步功能
可以接受上一个信号的同步信号输入
以及发送同步信号给下一个模块
从PWM的内部看 ePWM模块主要由框图中的几个模块组成
首先 PWM接受系统时钟的输入
可以通过分频寄存器 得到用户需要的PWM频率
TBCLK
然后 TBCLK输入PWM的16位寄存器
作为PWM的计数器时机
后面匹配信号都是以计数器时机或寄存器
compare模块主要是采集匹配事件
输入给AQ 控制PWM的输出动作
AQ模块会控制产生的PWM的波形
DB模块 是时区生成器
可以给输出加上死去
PWM chopper主要是PWM输出事件内
再产生调制波形 让控制更精细的PWM功能
trip zone主要是保护模块
用于PWM在紧急情况下的保护
DC模块主要是处理外部事件 比如TD角输入和比较器的处理
等单元
它会根据事件来触发保护
后面会根据这个框图对每个模块介绍
首先 我们看看TB模块
也就是时机模块 TB模块的核心是16位的计时器
TBCTR 它会在使能时钟给定后
开始计数 每次收到一个CLK就计时一次
TBPRD是周期寄存器
如果在它里面设置了周期值
那TBPRD就匹配到计时器后
就会清零
或者改变计数方向
PWM支持三种计时方式
单增计数 TBCTR计数到TBPRD就清零
重新计数 不断反复
单点计数 会在开始计数后
转载TBPRD值
到TBCTR 然后每个CLK减 一直到CBCTR等于0
然后重新装载
TBPRD的值 不断反复
第三种是增减计数 一般用于需要对称波形的场合
这种模式会在计数开始后
TBCTR从0开始
每次CLK加1 就会计数加1
直到计数到CBPRD的值
然后在每个CLK减1
直到到0
不断反复 时机模块
除了决定PWM的时钟和频率外
还有一个功能是设置相位
如果你的应用需要多个PWM之间保持相同的相位
比如90度 或者180度
那就需要一个相位寄存器 和同步信号的加入
通知PWM 123 通过同步信号同步
每个PWM在收到同步信号后 就会瞬间把phase寄存器
的值加载到TBCTR寄存器中
同时可以选择是否将同步信号发送给下一个PWM模块
F2837X由于增加了compare C和compareD
所以可以设置匹配 这两个寄存器后
发送同步信号 图中就通过这个功能
完成了三个PWM之家120度的相位移动情况
PWM1的同步信号 是外部GPL的脉冲信号
所以TB模块有两个设计寄存器
状态寄存器 相位寄存器 计入寄存器和周期值寄存器组成
设置寄存器的高8位 可以设置PWM寄存器的仿真状态的
技术模式
设置同步后的技术方向
以及时针的分频数
低8位寄存器可以强制触发一次同步事件
选择同步源的发出时刻
是否使能你的寄存器模式
以及技术模式 所以TB模块是整个PWM模块的核心
后面的模块是根据TBCTL的计数值
来运算的
看完了TB模块 我们来看CC模块
也就是compare logic模块
比较事件产生是如何运作的
CC模块是由compareA compareB两个寄存器组成
F2837X还增加了compareC和compareD两个寄存器
这四个寄存器是16位的
会在TBCTR的计数值和它们的值相当时
发出一个事件信号
如图中的红点所示
单增和单减计数是一个周期
一个寄存器只会匹配一次
也就是触发一次事件
而增减计数模式下
一个比较寄存器的值 可以在增减计数下各出现一个事件
等于一个周期 一个寄存器可以匹配两个事件
这个事件会用于后面的AQ模块
使用
CC模块主要有控制寄存器 四个比较寄存器组成
看看主要寄存器 控制寄存器1用于检测当前寄存器是否有数据
以及compareA compareB加载到active寄存器的模式
可以设置立即加载 或者当TBCTR等于0的时候
和周期点的时候 进行加载
控制寄存器2的主要功能是compare C和compareD的数据更新模式
compareC和D可以选择在收到同步信号后加载
也可以和compareA 和B一样在零点周期点立即加载最新值
模式
看完了CC模块 接下来就是AQ模块
也就是PWM真正输出动作的模块
AQ的主要功能是通过CC模块 和TB模块产生的事件
来改变PWM的输出电平
主要动作有四种 X是不动作
下箭头是置低 上箭头是置高
T是翻转 如最右边所示
每一个事件都会配置动作的触发源
而可以用的事件 由软件触发
compareA compareB 零点 周期点
以及F2837X最特殊的T1、T2事件
其他都和PQ系列相同
T1和T2是F2837X新加入的事件
这个事件的功能是让DC模块 以及外部TC引脚
以及同步事件的触发
可以回到AC模块控制PWM输出
而不是像PQ系列
只能通过TZ模块 强制把电平加到PWM输出上
这样做的功能是 外部信号
可以触发翻转 通过AQ 以后的信号
还能实现死去的功能
因为AQ是输出是DB模块的输入
是死去模块的输入
所以相对于TD模块直接输入到PWM电平而言
它可以通过DB模块 增加一个死去的功能
这是一个PWM单增技术的例子
设置PWMA是在零点高
compareA点至D
匹配其他点的动作
而PWMB是在compareB
图中的波形就是配置这样的AQ输出波形
所以compareA和B是生成两路不同的波形
当然 compareA和B也可以都给PWMA的输出
来用
这样的话 PWMA可以输出一个上升沿和下降沿都被设置的波形
PWMB的设置 为零点的翻转
这样PWM就会一直处于一个占空比50%的波形
如果是增减计数模式
就可以通过compareA和B
生成对称的PWMAB的波形
当然和前面一样
也可以让PWMA使用两个比较寄存器
生成不对称波形 而PWMB可以设置成0至D
周期点至高的波形 所以AQ模式让PWM输出更加灵活
可以按照不同需求 在不同点 生成想要的波形
AQ模块 主要分为设置寄存器 AB路的设计寄存器
以及软件强制控制寄存器
AQ控制寄存器 是F2837X新加的一个寄存器
因为新的PWM模块 AQ增加了引子寄存器
所以可以选择AQ模块的加载方式
可以选择收到同步信号 在零点和周期点加载
AQCTL设置匹配事件
刚才说到的 在零点 周期点 compareA和B
匹配动作
T1和2是F2837X新增的事件
CTLR用于设置T1、2事件的匹配
T1和T2事件和其他事件不同
不是由计数器匹配出发的
而是由DC模块的事件 或者TC角
从同步信号出发
除了事件出发 AQ还可以设置软件强制电平
并且可以设置立即装载
或者在零点周期点装载
而且AB路可以分开控制
同时通过OTSFB
A设置是否是单次改变的输出
SFRC用于设置周期 强制改变寄存器
去改变AQ输出的电平是高还是低
大家好 这一章我们给大家介绍C2000最重要的外设 控制类外设 控制类外设 主要是指PWM eCAP EQEP 这一章重点讲一下这三个模块的架构 以及功能 以及F2837X在其中的重要改进 对于一个PWM模块 有输入和输出两个部分 从输入来看 可以input x-bar 以及pwm x-bar 输入到TD模块 或者DC模块 作为一个保护 或者同步的功能 从输出看 PWM可以触发PWM的时钟中断 和TD保护中断 当然 最重要的功能是产生PWM纹波 同时输出SOC信号 给ADC作为采样 最后PWM还有同步功能 可以接受上一个信号的同步信号输入 以及发送同步信号给下一个模块 从PWM的内部看 ePWM模块主要由框图中的几个模块组成 首先 PWM接受系统时钟的输入 可以通过分频寄存器 得到用户需要的PWM频率 TBCLK 然后 TBCLK输入PWM的16位寄存器 作为PWM的计数器时机 后面匹配信号都是以计数器时机或寄存器 compare模块主要是采集匹配事件 输入给AQ 控制PWM的输出动作 AQ模块会控制产生的PWM的波形 DB模块 是时区生成器 可以给输出加上死去 PWM chopper主要是PWM输出事件内 再产生调制波形 让控制更精细的PWM功能 trip zone主要是保护模块 用于PWM在紧急情况下的保护 DC模块主要是处理外部事件 比如TD角输入和比较器的处理 等单元 它会根据事件来触发保护 后面会根据这个框图对每个模块介绍 首先 我们看看TB模块 也就是时机模块 TB模块的核心是16位的计时器 TBCTR 它会在使能时钟给定后 开始计数 每次收到一个CLK就计时一次 TBPRD是周期寄存器 如果在它里面设置了周期值 那TBPRD就匹配到计时器后 就会清零 或者改变计数方向 PWM支持三种计时方式 单增计数 TBCTR计数到TBPRD就清零 重新计数 不断反复 单点计数 会在开始计数后 转载TBPRD值 到TBCTR 然后每个CLK减 一直到CBCTR等于0 然后重新装载 TBPRD的值 不断反复 第三种是增减计数 一般用于需要对称波形的场合 这种模式会在计数开始后 TBCTR从0开始 每次CLK加1 就会计数加1 直到计数到CBPRD的值 然后在每个CLK减1 直到到0 不断反复 时机模块 除了决定PWM的时钟和频率外 还有一个功能是设置相位 如果你的应用需要多个PWM之间保持相同的相位 比如90度 或者180度 那就需要一个相位寄存器 和同步信号的加入 通知PWM 123 通过同步信号同步 每个PWM在收到同步信号后 就会瞬间把phase寄存器 的值加载到TBCTR寄存器中 同时可以选择是否将同步信号发送给下一个PWM模块 F2837X由于增加了compare C和compareD 所以可以设置匹配 这两个寄存器后 发送同步信号 图中就通过这个功能 完成了三个PWM之家120度的相位移动情况 PWM1的同步信号 是外部GPL的脉冲信号 所以TB模块有两个设计寄存器 状态寄存器 相位寄存器 计入寄存器和周期值寄存器组成 设置寄存器的高8位 可以设置PWM寄存器的仿真状态的 技术模式 设置同步后的技术方向 以及时针的分频数 低8位寄存器可以强制触发一次同步事件 选择同步源的发出时刻 是否使能你的寄存器模式 以及技术模式 所以TB模块是整个PWM模块的核心 后面的模块是根据TBCTL的计数值 来运算的 看完了TB模块 我们来看CC模块 也就是compare logic模块 比较事件产生是如何运作的 CC模块是由compareA compareB两个寄存器组成 F2837X还增加了compareC和compareD两个寄存器 这四个寄存器是16位的 会在TBCTR的计数值和它们的值相当时 发出一个事件信号 如图中的红点所示 单增和单减计数是一个周期 一个寄存器只会匹配一次 也就是触发一次事件 而增减计数模式下 一个比较寄存器的值 可以在增减计数下各出现一个事件 等于一个周期 一个寄存器可以匹配两个事件 这个事件会用于后面的AQ模块 使用 CC模块主要有控制寄存器 四个比较寄存器组成 看看主要寄存器 控制寄存器1用于检测当前寄存器是否有数据 以及compareA compareB加载到active寄存器的模式 可以设置立即加载 或者当TBCTR等于0的时候 和周期点的时候 进行加载 控制寄存器2的主要功能是compare C和compareD的数据更新模式 compareC和D可以选择在收到同步信号后加载 也可以和compareA 和B一样在零点周期点立即加载最新值 模式 看完了CC模块 接下来就是AQ模块 也就是PWM真正输出动作的模块 AQ的主要功能是通过CC模块 和TB模块产生的事件 来改变PWM的输出电平 主要动作有四种 X是不动作 下箭头是置低 上箭头是置高 T是翻转 如最右边所示 每一个事件都会配置动作的触发源 而可以用的事件 由软件触发 compareA compareB 零点 周期点 以及F2837X最特殊的T1、T2事件 其他都和PQ系列相同 T1和T2是F2837X新加入的事件 这个事件的功能是让DC模块 以及外部TC引脚 以及同步事件的触发 可以回到AC模块控制PWM输出 而不是像PQ系列 只能通过TZ模块 强制把电平加到PWM输出上 这样做的功能是 外部信号 可以触发翻转 通过AQ 以后的信号 还能实现死去的功能 因为AQ是输出是DB模块的输入 是死去模块的输入 所以相对于TD模块直接输入到PWM电平而言 它可以通过DB模块 增加一个死去的功能 这是一个PWM单增技术的例子 设置PWMA是在零点高 compareA点至D 匹配其他点的动作 而PWMB是在compareB 图中的波形就是配置这样的AQ输出波形 所以compareA和B是生成两路不同的波形 当然 compareA和B也可以都给PWMA的输出 来用 这样的话 PWMA可以输出一个上升沿和下降沿都被设置的波形 PWMB的设置 为零点的翻转 这样PWM就会一直处于一个占空比50%的波形 如果是增减计数模式 就可以通过compareA和B 生成对称的PWMAB的波形 当然和前面一样 也可以让PWMA使用两个比较寄存器 生成不对称波形 而PWMB可以设置成0至D 周期点至高的波形 所以AQ模式让PWM输出更加灵活 可以按照不同需求 在不同点 生成想要的波形 AQ模块 主要分为设置寄存器 AB路的设计寄存器 以及软件强制控制寄存器 AQ控制寄存器 是F2837X新加的一个寄存器 因为新的PWM模块 AQ增加了引子寄存器 所以可以选择AQ模块的加载方式 可以选择收到同步信号 在零点和周期点加载 AQCTL设置匹配事件 刚才说到的 在零点 周期点 compareA和B 匹配动作 T1和2是F2837X新增的事件 CTLR用于设置T1、2事件的匹配 T1和T2事件和其他事件不同 不是由计数器匹配出发的 而是由DC模块的事件 或者TC角 从同步信号出发 除了事件出发 AQ还可以设置软件强制电平 并且可以设置立即装载 或者在零点周期点装载 而且AB路可以分开控制 同时通过OTSFB A设置是否是单次改变的输出 SFRC用于设置周期 强制改变寄存器 去改变AQ输出的电平是高还是低
大家好 这一章我们给大家介绍C2000最重要的外设
控制类外设
控制类外设 主要是指PWM eCAP EQEP
这一章重点讲一下这三个模块的架构
以及功能 以及F2837X在其中的重要改进
对于一个PWM模块 有输入和输出两个部分
从输入来看 可以input x-bar
以及pwm x-bar
输入到TD模块
或者DC模块 作为一个保护
或者同步的功能
从输出看 PWM可以触发PWM的时钟中断
和TD保护中断
当然 最重要的功能是产生PWM纹波
同时输出SOC信号 给ADC作为采样
最后PWM还有同步功能
可以接受上一个信号的同步信号输入
以及发送同步信号给下一个模块
从PWM的内部看 ePWM模块主要由框图中的几个模块组成
首先 PWM接受系统时钟的输入
可以通过分频寄存器 得到用户需要的PWM频率
TBCLK
然后 TBCLK输入PWM的16位寄存器
作为PWM的计数器时机
后面匹配信号都是以计数器时机或寄存器
compare模块主要是采集匹配事件
输入给AQ 控制PWM的输出动作
AQ模块会控制产生的PWM的波形
DB模块 是时区生成器
可以给输出加上死去
PWM chopper主要是PWM输出事件内
再产生调制波形 让控制更精细的PWM功能
trip zone主要是保护模块
用于PWM在紧急情况下的保护
DC模块主要是处理外部事件 比如TD角输入和比较器的处理
等单元
它会根据事件来触发保护
后面会根据这个框图对每个模块介绍
首先 我们看看TB模块
也就是时机模块 TB模块的核心是16位的计时器
TBCTR 它会在使能时钟给定后
开始计数 每次收到一个CLK就计时一次
TBPRD是周期寄存器
如果在它里面设置了周期值
那TBPRD就匹配到计时器后
就会清零
或者改变计数方向
PWM支持三种计时方式
单增计数 TBCTR计数到TBPRD就清零
重新计数 不断反复
单点计数 会在开始计数后
转载TBPRD值
到TBCTR 然后每个CLK减 一直到CBCTR等于0
然后重新装载
TBPRD的值 不断反复
第三种是增减计数 一般用于需要对称波形的场合
这种模式会在计数开始后
TBCTR从0开始
每次CLK加1 就会计数加1
直到计数到CBPRD的值
然后在每个CLK减1
直到到0
不断反复 时机模块
除了决定PWM的时钟和频率外
还有一个功能是设置相位
如果你的应用需要多个PWM之间保持相同的相位
比如90度 或者180度
那就需要一个相位寄存器 和同步信号的加入
通知PWM 123 通过同步信号同步
每个PWM在收到同步信号后 就会瞬间把phase寄存器
的值加载到TBCTR寄存器中
同时可以选择是否将同步信号发送给下一个PWM模块
F2837X由于增加了compare C和compareD
所以可以设置匹配 这两个寄存器后
发送同步信号 图中就通过这个功能
完成了三个PWM之家120度的相位移动情况
PWM1的同步信号 是外部GPL的脉冲信号
所以TB模块有两个设计寄存器
状态寄存器 相位寄存器 计入寄存器和周期值寄存器组成
设置寄存器的高8位 可以设置PWM寄存器的仿真状态的
技术模式
设置同步后的技术方向
以及时针的分频数
低8位寄存器可以强制触发一次同步事件
选择同步源的发出时刻
是否使能你的寄存器模式
以及技术模式 所以TB模块是整个PWM模块的核心
后面的模块是根据TBCTL的计数值
来运算的
看完了TB模块 我们来看CC模块
也就是compare logic模块
比较事件产生是如何运作的
CC模块是由compareA compareB两个寄存器组成
F2837X还增加了compareC和compareD两个寄存器
这四个寄存器是16位的
会在TBCTR的计数值和它们的值相当时
发出一个事件信号
如图中的红点所示
单增和单减计数是一个周期
一个寄存器只会匹配一次
也就是触发一次事件
而增减计数模式下
一个比较寄存器的值 可以在增减计数下各出现一个事件
等于一个周期 一个寄存器可以匹配两个事件
这个事件会用于后面的AQ模块
使用
CC模块主要有控制寄存器 四个比较寄存器组成
看看主要寄存器 控制寄存器1用于检测当前寄存器是否有数据
以及compareA compareB加载到active寄存器的模式
可以设置立即加载 或者当TBCTR等于0的时候
和周期点的时候 进行加载
控制寄存器2的主要功能是compare C和compareD的数据更新模式
compareC和D可以选择在收到同步信号后加载
也可以和compareA 和B一样在零点周期点立即加载最新值
模式
看完了CC模块 接下来就是AQ模块
也就是PWM真正输出动作的模块
AQ的主要功能是通过CC模块 和TB模块产生的事件
来改变PWM的输出电平
主要动作有四种 X是不动作
下箭头是置低 上箭头是置高
T是翻转 如最右边所示
每一个事件都会配置动作的触发源
而可以用的事件 由软件触发
compareA compareB 零点 周期点
以及F2837X最特殊的T1、T2事件
其他都和PQ系列相同
T1和T2是F2837X新加入的事件
这个事件的功能是让DC模块 以及外部TC引脚
以及同步事件的触发
可以回到AC模块控制PWM输出
而不是像PQ系列
只能通过TZ模块 强制把电平加到PWM输出上
这样做的功能是 外部信号
可以触发翻转 通过AQ 以后的信号
还能实现死去的功能
因为AQ是输出是DB模块的输入
是死去模块的输入
所以相对于TD模块直接输入到PWM电平而言
它可以通过DB模块 增加一个死去的功能
这是一个PWM单增技术的例子
设置PWMA是在零点高
compareA点至D
匹配其他点的动作
而PWMB是在compareB
图中的波形就是配置这样的AQ输出波形
所以compareA和B是生成两路不同的波形
当然 compareA和B也可以都给PWMA的输出
来用
这样的话 PWMA可以输出一个上升沿和下降沿都被设置的波形
PWMB的设置 为零点的翻转
这样PWM就会一直处于一个占空比50%的波形
如果是增减计数模式
就可以通过compareA和B
生成对称的PWMAB的波形
当然和前面一样
也可以让PWMA使用两个比较寄存器
生成不对称波形 而PWMB可以设置成0至D
周期点至高的波形 所以AQ模式让PWM输出更加灵活
可以按照不同需求 在不同点 生成想要的波形
AQ模块 主要分为设置寄存器 AB路的设计寄存器
以及软件强制控制寄存器
AQ控制寄存器 是F2837X新加的一个寄存器
因为新的PWM模块 AQ增加了引子寄存器
所以可以选择AQ模块的加载方式
可以选择收到同步信号 在零点和周期点加载
AQCTL设置匹配事件
刚才说到的 在零点 周期点 compareA和B
匹配动作
T1和2是F2837X新增的事件
CTLR用于设置T1、2事件的匹配
T1和T2事件和其他事件不同
不是由计数器匹配出发的
而是由DC模块的事件 或者TC角
从同步信号出发
除了事件出发 AQ还可以设置软件强制电平
并且可以设置立即装载
或者在零点周期点装载
而且AB路可以分开控制
同时通过OTSFB
A设置是否是单次改变的输出
SFRC用于设置周期 强制改变寄存器
去改变AQ输出的电平是高还是低
视频报错
手机看
扫码用手机观看
收藏本课程
视频简介
C2837x入门指南(九) — 控制类外设PWM CAP QEP(上)
所属课程:C2837x入门指南
发布时间:2016.06.06
视频集数:28
本节视频时长:00:10:48
C2837x概述;芯片架构; 开发环境;外设寄存器操作;复位和中断;系统初始化;模拟子系统 ADC DAC CMP SDFM;控制类外设PWM CAP QEP。
//=$v1;?>
//=$v['id']?>//=$v['down_category']?>//=$v['link']?>//=$v['is_dl']?>//=$v['link']?>//=$v['name']?>//=$v['name']?>
//=$v['id']?>//=$v['down_category']?>//=$v['path']?>//=$v['is_dl']?>//=$v['path']?>//=$v['name']?>//=$v['name']?>
////=count($lesson['bbsinfo'])?>
//=$elink?>//=$elink?>//=$tags[0]?>//=$tags[0]?>//=$elink?>//= $elink?>//=$tags[1]?>//=$tags[1]?>
//=$lesson['bbs'];?>
//=count($lesson['bbsinfo'])?>