This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C123GH6PM:对于使用正交编码器接口(QEI)进行的 RPM 计算有疑问

Guru**** 2442090 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/628113/tm4c123gh6pm-doubt-regarding-rpm-calculation-using-quadrature-encoder-interface-qei

器件型号:TM4C123GH6PM

有人能否解释一下 TIvaware 中提供的 API /driverlib/qei.h:

extern void QEIVelocityConfigure (uint32_t ui32Base、uint32_t ui32PreDiv、
uint32_t ui32Period); 

ui32Period 在这里是什么?

我编写了一个简单的程序来计算电机的位置、运动方向和速度:

/*!
*@作者 Yash Bansod
*@日期 2017年9月26日
*
*@简介 正交编码器
*@详细信息 该程序连接正交编码器外设以获取位置
* 和速度信息。
*@注意 tm4c123ghpm_startup_ccs.c 包含
*的矢量表 微控制器。 它经过修改、可在
*上执行指定的 ISR PortF 中断。
*/
/*------------------ 包含文件 ---------- */
#include //标准整数类型库
#include //标准布尔类型库
#include "inc/tm4c123gh6m.h" // Tiva C
#include "inc/hw_memmap.h"上中断和寄存器分配的定义 //定义 Tiva C 系列器件存储器映射
的宏#include "inc/hw_types.h" //定义常用类型和宏
#include "inc/hw_gpio.h" //为 GPIO 硬件定义宏
#include "inc/hw_qEI.h" //访问 QEI 硬件
#include "driverlib/debug.h"时使用的宏 //用于帮助调试驱动程序库
#include "driverlib/sysctl.h"的宏 //为 DriverLib
的系统控制 API 定义和宏#include "driverlib/interrupt.h" //为 DriverLib
的 NVIC 控制器 API 定义和宏#include "driverlib/gpio.h" //为 DriverLib 的 GPIO API 定义和宏
#include "driverlib/pin_map.h" //所有器件的外设到引脚的映射
#include "driverlib/rom.h" //为 driverLib 的 ROM API 定义和宏
#include "driverlib/QEI.h" //正交编码器驱动程序的原型

/*------------------------------------------------------- 全局变量 ---------- */
volatile uint32_t ui32Qe1Pos; //用于存储 QEI1
volatile Int32_t i32Qe1Dir 位置的变量; //用于存储 QEI1
volatile uint32_t ui32Qe1Vel 方向的变量; //用于存储 QEI1速度的变量

/*--------------- 函数原型 ---------- */

/*------------------ 主程序 ---------- */
int main (void){
//将系统时钟设置为80MHz,将 PWM 模块时钟设置为1.25MHz
ROM_SysCtlClockSet (SYSCTL_SYSDIV_2_5 |SYSCTL_USE_PLL |SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHz);

//启用外设 PortD 和 QEI1的时钟
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_QEI1);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC);

//为 QEI 信号配置 PC4、PC5、PC6
ROM_GPIOPinTypeQEI (GPIO_PORTC_BASE、GPIO_PIN_5 | GPIO_PIN_6);
ROM_GPIOPinConfigure (GPIO_PC5_PHA1);
ROM_GPIOPinConfigure (GPIO_PC6_PHB1);

//将 QEI1配置为使具有2400 PPR 的正交输入的 PhA 和 PhB 递增
ROM_QEIConfigure (QEI1_base、QEI_CONFIG_CAPTURE_A_B | QEI_CONFIG_QUIPOTIVATE、2400);

ROM_QEIVelocityConfigure (QEI1_base、QEI_VELDIV_1、10000);
ROM_QEIVelocityEnable (QEI1_base);

//启用 QEI1
ROM_QEIEnable (QEI1_BASE);

while (1){
ui32Qei1Pos = ROM_QEIPositionGet (QEI1_base);
i32Qe1Dir = ROM_QEIDirectionGet (QEI1_BASE);
ui32Qei1Vel = ROM_QEIVelocityGet (QEI1_base);
}
}/*

------------------ 函数定义 ---------- *

我从什么角度获取速度? 它是直接转换为 RPM 还是以滴答形式?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哦,还可以! 我在以下位置获得了有关 QEI 外设库源代码的说明:tivaed/driverlib/QEI.c
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很高兴您成功-查看"外设库用户指南"(通常)提供了更多详细信息...

    如果您在此处"提交了您的调查结果(正如您根据您的请求所做的那样)、是否不会"帮助他人"?"
    请注意、"授予验证"通常表示"验证"线程中存在(两者)问题及其解决方案!"