控制/MCU
介绍
前面很多的文章已经有介绍过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。
2
选择工程对应的存储路径,工程命名为“prj”。
3
选择最新版本的CCRX Toolchain、对应的芯片型号、仿真器等。
4
勾选Use Smart Configurator,一直点击“Next”,直到工程创建完成。
5
点击prj.scfg,会出现图Smart Configurator操控界面。设置时钟源为HOCO 20MHz,以及后面的分频器也一同设置。
6
更新BSP至最新版本。
7
为了方便测试,这里会使用MCU中的一个100us定时器产生中断,控制P3.2和P3.3作为模拟编码器的A/B信号输出。
添加CMT 100us定时器中断。
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)。
9
添加MTU0,设置为Normal Mode Timer,使用的是2pins Capture,TGRA0作为输入捕捉计时器,TGRC0用作TGRA0的Buffer。可以设置中断用作调试验证。
10
设置IO口P3.2、P3.3作输出,用来模拟编码器的输出信号。使用P2.4、P2.5的上拉电阻。
11
配置好底层驱动后,生成代码。
至此完成Smart Configurator配置,后续就是代码部分了:
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作模拟。
2
Config_MTU0_user.c,使用MTU0捕捉中断和溢出中断,用来作调试验证用,实际使用时可以取消。
3
prj.c,主程序。实现简单的循环读取编码器脉冲计数值与定时器值。
开始仿真测试,测试结果如下:
通过调整g_led_delay_cnt数值模拟不同频率下的脉冲输入。
当g_led_delay_cnt=1000时:
当g_led_delay_cnt=100时:
当g_led_delay_cnt=10时:
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !