• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

【代码库】如何在 MCXE31 上实现 Tamagawa 协议

09/28 08:39
267
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

an-digital-encoder-tamagawa-on-mcx31-main.zip

共1个文件

如何在 MCXE31 上实现 Tamagawa 协议

该演示展示了如何使用 FlexIO 模块在 MCXE31 上实现 Tamagawa 协议(T 格式和 A 格式)来模拟数字编码器通信。

背景

Tamagawa 协议概述

Tamagawa 是一种广泛应用于工业自动化和电机控制应用的数字编码器通信协议。它为伺服电机和其他运动控制系统提供高精度位置反馈。该协议支持绝对式和增量式位置数据传输,并内置错误检测和校正功能。

Tamagawa 协议的主要特点:

  • ?高精度?:支持多圈和单圈绝对位置数据
  • ?错误检测?:内置 CRC(循环冗余校验)确保数据完整性
  • ?温度监控?:编码器实时温度反馈
  • ?状态信息?:全面的错误和警报报告
  • ?灵活通信?:支持多种数据格式(T格式和A格式)

协议格式:

  1. ?T格式(Tamagawa格式)?:
    • 同步串行通信
    • 带有起始/停止位的 8 位数据帧
    • 命令规范的控制字段(CF)
    • 编码器状态的状态字段(SF)
    • 支持绝对位置 (ABS)、多圈 (ABM)、编码器 ID 和温度数据
  2. ?A格式(高级格式)?:
    • 增强型通信协议
    • 支持CRC3和CRC8错误检测
    • 多种数据读出模式(单圈、多圈、组合)
    • 用于配置的 EEPROM 访问
    • 温度和状态监控

MCXE31B FlexIO 实现

本应用演示如何使用MCXE31B的FlexIO(灵活I/O)模块实现Tamagawa协议通信:

  • ?FlexIO 模块?:可配置外设,可模拟各种通信协议
  • ?引脚配置?:使用三个引脚用于 TX(发送)、RX(接收)和 DR(数据就绪)
  • ?定时器和移位器资源?:利用 FlexIO 定时器和移位器进行精确的时序控制
  • ?协议模拟?:实现完整的Tamagawa T格式通信堆栈

应用程序特点:

  • 实时编码器位置读数(17位单圈,16位多圈)
  • 编码器ID检测和验证
  • 温度监测与变化检测
  • 具有可配置更新率的连续位置监控
  • 全面的错误处理和状态报告
  • 通过 UART 进行调试输出,用于监控和诊断

主板:FRDM-MCXE31B

类别:电机控制

外设:FlexIO

工具链:MCUXpresso IDE

目录

  1. 软件
  2. 硬件
  3. 设置
  4. 结果
  5. 常见问题解答
  6. 支持
  7. 发行说明

1.软件

所需软件工具:

  • ?MCUXpresso IDE?:版本 11.6.0 或更高版本
  • ?MCUXpresso SDK?:MCXE31B SDK包
    • 提供设备驱动程序中间件和示例项目
    • 包括对 MCXE31B 的 FlexIO 驱动程序支持
    • 可通过 MCUXpresso SDK Builder 获取
  • ?终端仿真器?:用于查看调试输出
    • 推荐:Tera Term、PuTTY 或 MCUXpresso IDE 内置终端
    • 配置:115200 波特,8-N-1

关键软件组件:

  • FlexIO T 格式驱动程序 ( fsl_flexio_t-format.c/h)
  • FlexIO A 格式驱动程序 ( fsl_flexio_a-format.c/h)
  • Tamagawa 协议实现(t-format.c/ha-format.c/h
  • 用于调试控制台输出的 LPUART 驱动程序
  • 时钟配置和电路板支持文件

2.硬件

所需硬件:

  • FRDM-MCXE31B开发板
    • NXP Freedom开发平台
    • 采用带有 ARM Cortex-M7 内核的 MCXE31B 微控制器
    • 内置OpenSDA调试接口
    • Arduino 兼容接头,方便扩展
  • ?Tamagawa 编码器?(用于真实硬件测试)
    • 任何兼容 Tamagawa 协议的绝对编码器
    • 支持T格式或A格式通信
    • 电源:通常为 5V 或 12V(检查编码器规格)
  • RS485
  • 连接电缆
    • 用于编码器连接的跳线或定制电缆
    • 用于电路板编程和调试通信的 USB 电缆

引脚连接(FlexIO):

| 功能 | MCXE31B 引脚 | FlexIO 引脚 | Arduino 接口 |
| ------------ | -------------- | ------------- | -------------- |
| 接收 | PTA8 | FLEXIOD6 | J1-2 |
| 德克萨斯州 | PTA9 | FLEXIO
D7 | J2-4 |
| 博士 | PTA13 | FLEXIO_D8 | J2-8 |

电源要求:

  • 板载电源:USB(5V)
  • 编码器电源:根据编码器规格单独供电
  • 电流消耗:典型值 50-100mA(仅限电路板)

可移植性注意事项:

  • 代码可适用于其他 MCXE 系列微控制器
  • FlexIO 引脚分配可以在源代码中修改
  • 定时器和移位器索引可能需要针对不同的 FlexIO 配置进行调整

3. 设置

3.1 项目导入与构建

  1. 将项目导入 MCUXpresso IDE:

    File → Import → General → Existing Projects into Workspace
    Select the project root directory
    Click "Finish" to import
  2. 构建项目:

    Right-click on project → Build Project
    Or use Ctrl+B to build
    Ensure no compilation errors
  3. 配置调试设置:
    • 在项目资源管理器中选择项目
    • 右键单击 → 调试为 → MCUXpresso IDE LinkServer(包括 CMSIS-DAP)探针
    • IDE 将自动检测 FRDM-MCXE31B 板

3.2 硬件连接

  1. 将 FRDM-MCXE31B 连接到 PC:
    • 使用USB线连接OpenSDA USB端口
    • 电路板应被识别为调试接口
  2. 连接 Tamagawa 编码器(可选):

    Encoder TX → FRDM-MCXE31B PTA17 (D3)
    Encoder RX → FRDM-MCXE31B PTA16 (D2)
    Encoder DR → FRDM-MCXE31B PTA18 (D4)
    Encoder GND → FRDM-MCXE31B GND
    Encoder VCC → External Power Supply
  3. 终端设置:
    • 打开终端仿真器(115200,8-N-1,无流量控制)
    • 连接到OpenSDA创建的虚拟COM端口

3.3 配置选项

关键参数可以在以下位置修改main.c

```c
// Encoder resolution configuration
encoder.singleTurnRevolution = 17; // 17-bit single turn (131,072 counts/rev)
encoder.multiTunrRevolution = 16; // 16-bit multi turn (65,536 revolutions)

// FlexIO pin assignments

define FLEXIOTFORMATTXPIN 16 // PTA16

define FLEXIOTFORMATRXPIN 17 // PTA17

define FLEXIOTFORMATDRPIN 18 // PTA18

```

4.结果

4.1 预期终端输出

当应用程序成功运行时,您应该看到类似以下内容的输出:

kCLOCK_CoreSysClk:150000000Hz
kCLOCK_FlexioClk:150000000Hz
Encoder T-format example
FlexIO Root Clock is 150 MHz
[T-format] Encoder ID: 0x12
Status: Success
[T-format] Multi-turn data: 1024, single-turn data: 65432
Status: Success
[T-format] Temperature: 25
[0.10s] Encoder ID: 0x12
Multi-turn data: 1024, single-turn data: 65500
Temperature: 25
[0.20s] Encoder ID: 0x12
Multi-turn data: 1024, single-turn data: 66000
Temperature: 25

4.2 应用程序行为

初始化阶段:

  1. 配置并显示系统时钟
  2. FlexIO 模块已初始化为 T 格式通信
  3. 读取并验证初始编码器 ID
  4. 获取第一个绝对位置 (ABS) 和多圈 (ABM) 数据
  5. 执行初始温度读数

运行时操作:

  1. ?连续监控?:每 90 毫秒,应用程序读取编码器位置
  2. ?变化检测?:位置或温度变化用时间戳记录
  3. ?错误处理?:检测并报告通信错误
  4. ?状态更新?:显示实时状态信息

4.3 数据解释

位置数据:

  • ?单圈?:0 至 131,071 个计数(17 位分辨率)
  • ?多圈?:0至65,535转(16位分辨率)
  • ?分辨率?:取决于编码器规格(通常为每计数 0.0027°)

状态信息:

  • ?成功?:正常运行,数据有效
  • ?帧错误?:检测到通信错误
  • ?CRC 错误?:数据完整性检查失败

温度数据:

  • 以摄氏度为单位
  • 当温度变化超过 1°C 时更新
  • 典型范围:-40°C 至 +85°C

4.4 故障排除

未连接编码器:

  • 应用程序将显示帧错误但继续运行
  • 适用于测试 FlexIO 配置和时序

沟通问题:

性能监控:

  • 监控 CPU 使用率和计时准确性
  • 验证 FlexIO 时钟频率是否符合要求
  • 检查示波器轨迹中的时间违规

5. 常见问题

问:如果没有物理 Tamagawa 编码器,我可以使用此代码吗? 答:可以,该应用程序将运行并演示 FlexIO 配置和时序。您会在输出中看到帧错误,但这在没有连接编码器的情况下是正常现象。

问:支持的最大通信速度是多少? 答:FlexIO 实现支持高达 2.5 MHz 的标准 Tamagawa 波特率。实际速度取决于编码器规格和电缆长度。

问:我可以修改引脚分配吗? 答:可以,您可以通过修改 中的定义来更改 FlexIO 引脚分配main.c。请确保所选引脚支持 MCXE31B 上的 FlexIO 功能。

6. 支持

技术支持资源:

项目元数据

董事会徽章

类别徽章

周边徽章

工具链徽章

来源:恩智浦appcodehub

  • an-digital-encoder-tamagawa-on-mcx31-main.zip
    下载
恩智浦

恩智浦

恩智浦半导体创立于2006年,其前身为荷兰飞利浦公司于1953年成立的半导体事业部,总部位于荷兰埃因霍温。恩智浦2010年在美国纳斯达克上市。恩智浦2010年在美国纳斯达克上市。恩智浦半导体致力于打造全球化解决方案,实现智慧生活,安全连结。

恩智浦半导体创立于2006年,其前身为荷兰飞利浦公司于1953年成立的半导体事业部,总部位于荷兰埃因霍温。恩智浦2010年在美国纳斯达克上市。恩智浦2010年在美国纳斯达克上市。恩智浦半导体致力于打造全球化解决方案,实现智慧生活,安全连结。收起

查看更多

相关推荐