如何使用RX MCU的多功能定时器连接ABZ相对编码器

控制/MCU

1832人已加入

描述

介绍

前面很多的文章已经有介绍过RX系列32位高性能MCU,特别是RX-T系列,如何在电机驱动控制上使用,以及如何实现无感测向量等高性能电机控制技术。

今天我们回头来看一看如何使用RX MCU的多功能定时器(MTU - Multi-function Timer Unit,其实有更多人称之为Motor Timer Unit),连接传统的ABZ相对编码器。

本文章使用了RX671开发板作为例子,使用任何RX系列MCU,操作上也是基本相同的。

内容

1

打开e2 studio IDE,创建RX工程,选择Renesas CC-RX C/C++ Executable Project。

mcu

2

选择工程对应的存储路径,工程命名为“prj”。

mcu

3

选择最新版本的CCRX Toolchain、对应的芯片型号、仿真器等。

mcu

4

勾选Use Smart Configurator,一直点击“Next”,直到工程创建完成。

mcu

 

mcu

 

mcu

5

点击prj.scfg,会出现图Smart Configurator操控界面。设置时钟源为HOCO 20MHz,以及后面的分频器也一同设置。

mcu

6

更新BSP至最新版本。

mcu

 

mcu

7

为了方便测试,这里会使用MCU中的一个100us定时器产生中断,控制P3.2和P3.3作为模拟编码器的A/B信号输出。

添加CMT 100us定时器中断。

mcu

 

mcu

 

mcu

8

添加MTU1,设置为16-bit Phase Counting Mode Timer,作为编码器A/B信号的输入,具体的参数使用默认值即可。

接线方法为编码器A/B信号线连接P2.4 (MTCLKA)/P2.5 (MTCLKB),在无编码器的情况下可以使用P3.2/P3.3作模拟(在CMT0的中断函数,以软件控制P3.2/P3.3)。

mcu

 

mcu

 

mcu

9

添加MTU0,设置为Normal Mode Timer,使用的是2pins Capture,TGRA0作为输入捕捉计时器,TGRC0用作TGRA0的Buffer。可以设置中断用作调试验证。

mcu

 

mcu

 

mcu

 

mcu

 

mcu

 

mcu

10

设置IO口P3.2、P3.3作输出,用来模拟编码器的输出信号。使用P2.4、P2.5的上拉电阻。

mcu

 

mcu

 

mcu

 

mcu

 

mcu

11

配置好底层驱动后,生成代码。

mcu

mcu

 

mcu

至此完成Smart Configurator配置,后续就是代码部分了:

mcu

 

mcu

1

Config_CMT0_user.c,CMT 100us定时器中断程序。

使用P3.2、P3.3作为模拟编码器的信号输出。仿真过程中可以通过修改变量g_led_delay_cnt来改变信号的频率。

接线方法为编码器A/B信号线连接P2.4 (MTCLKA)/P2.5 (MTCLKB),在无编码器的情况下可以使用P3.2/P3.3作模拟。

mcu

2

Config_MTU0_user.c,使用MTU0捕捉中断和溢出中断,用来作调试验证用,实际使用时可以取消。

mcu

3

prj.c,主程序。实现简单的循环读取编码器脉冲计数值与定时器值。

mcu

mcu

 

mcu

开始仿真测试,测试结果如下:

mcu

 

mcu

通过调整g_led_delay_cnt数值模拟不同频率下的脉冲输入。

当g_led_delay_cnt=1000时:

mcu

当g_led_delay_cnt=100时:

mcu

当g_led_delay_cnt=10时:

mcu

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分