ZHCU480A April   2018  – November 2024

 

  1.   1
  2.   说明
  3.   资源
  4.   特性
  5.   应用
  6.   6
  7. 1系统说明
    1. 1.1 主要系统规格
  8. 2系统概述
    1. 2.1 方框图
    2. 2.2 主要产品
      1. 2.2.1 C2000 实时 MCU LaunchPad
      2. 2.2.2 SN65HVD78
      3. 2.2.3 TLV702
      4. 2.2.4 TPS22918-Q1
    3. 2.3 设计注意事项
      1. 2.3.1 BiSS-C 协议
        1. 2.3.1.1 线路延迟补偿
        2. 2.3.1.2 编码器处理时间请求
        3. 2.3.1.3 控制通信
      2. 2.3.2 C2000 BiSS-C 编码器接口概述
      3. 2.3.3 TIDM-1010 板实现
      4. 2.3.4 MCU 资源要求
        1. 2.3.4.1 输入、输出信号和 CLB 逻辑块
      5. 2.3.5 CLB BiSS-C 实现详细信息
        1. 2.3.5.1 事务波形
        2. 2.3.5.2 FRAME_STATE 生成
        3. 2.3.5.3 CLB_SPI_CLOCK 生成
        4. 2.3.5.4 ENCODER_CLOCK (MA) 生成
      6. 2.3.6 PM BiSS-C 接口库
        1. 2.3.6.1 PM BiSS-C 库函数
  9. 3硬件、软件、测试要求和测试结果
    1. 3.1 硬件
      1. 3.1.1 TIDM-1010 跳线配置
    2. 3.2 软件
      1. 3.2.1 C2000 驱动程序库 (DriverLib)
      2. 3.2.2 C2000 SysConfig
      3. 3.2.3 C2000 可配置逻辑块工具
      4. 3.2.4 安装 Code Composer Studio™ 和 C2000WARE-MOTORCONTROL-SDK
      5. 3.2.5 查找参考软件
    3. 3.3 测试和结果
      1. 3.3.1 硬件配置
      2. 3.3.2 构建和加载工程
      3. 3.3.3 运行示例代码
      4. 3.3.4 编码器测试
      5. 3.3.5 基准测试
      6. 3.3.6 故障排除
  10. 4设计文件
  11. 5软件文件
  12. 6相关文档
    1.     商标
  13. 7术语
  14. 8关于作者
  15. 9修订历史记录

FRAME_STATE 生成

本节深入讨论了 FRAME_STATE 生成。FRAME_STATE 负责确定在事务中的任意给定时间生成哪些时钟。

FRAME_STATE(FSM_1 s1、s0)在 4 种状态之间转换:

  • 空闲:
    • 无活动
    • CLB 等待 START_OPERATION 信号的上升沿开始传输编码器时钟。
  • TRANSMIT_MA:
    • 传输编码器时钟
    • 监控响应以获得编码器 ACK
  • TRANSMIT_MA_AND_RECEIVE_SL
    • 继续传输编码器时钟
    • 开始 SPI 时钟以接收响应
    • 在此期间,编码器时钟和 SPI 时钟均处于活动状态。
  • RECEIVE_SL:
    • 编码器时钟的传输完成
    • CDM 位在 MA 信号上处于活动状态
    • 通过为 SPI 提供时钟完成对响应的接收。
    • 根据数据长度和所使用的 SPI 宽度,可以生成额外的 SPI 时钟来触发 SPI 中断。
TIDM-1010 FRAME_STATE 生成图 2-13 FRAME_STATE 生成

一种推导相应公式的方法是使用卡诺图(表 2-5表 2-6)。生成的公式由 OR 运算符连接,并输入到 CLB 工具中。这些公式不需要简化为最简单的形式。

表 2-5 FRAME_STATE FSM_1 卡诺图,状态 s0
当前输入
(e1、e0)
RESPONSE_RE、START_OPERATION 或 ENCODER_CLOCK_COMPLETE
0.0 0.1 1.1 (1) 1.0
上一状态
s1, s0
0,0
IDLE
0 1 (2) 1 (2) 0
0,1
TRANSMIT_MA
1 (3) 1 (3) 0 0
1,1
RECEIVE_SL
1 (4) 1 (4) 1 (4) 1 (4)
1,0
TRANSMIT_MA
RECEIVE_SL
0 1 (5) 1 (5) 0
对应于无效或意外的 e1:e0 组合。系统设计人员决定这种情况下状态机的行为。
!s1 & !s0 & e0
!s1 & s0 & !e1
s1 & s0。C28x 会强制从状态 1,1 转换回 IDLE。
s1 & !s0 & e0
表 2-6 FRAME_STATE FSM_1 卡诺图,状态 s1
当前输入
(e1、e0)
RESPONSE_RE、START_OPERATION 或 ENCODER_CLOCK_COMPLETE
0.0 0.1 1.1 1.0
上一状态
s1, s0
0,0
IDLE
0 0 0 0
0,1
TRANSMIT_MA
0 0 1 (1) 1 (1)
1,1
RECEIVE_SL
1 (2) 1 (2) 1 (2) 1 (2)
1,0
TRANSMIT_MA RECEIVE_SL
1 (3) 1 (3) 1 (3) 1 (3)
!s1 & s0 & e1
s1 & s0。C28x 会强制从状态 1,1 转换回 IDLE。
s1 & !s0

来自 FSM_1 的 OUT 信号对应于空闲状态。

检测编码器的响应是该设计的另一个关键组成部分。图 2-13 中所示的 LUT_2 负责检测编码器的 ACK。如果 FRAME_STATE 为 WAIT_FOR_ACK (0,1) 并且 ENCODER_RESPONSE_RE 变为高电平,则表示检测到 ACK。这样会得到公式:i0 & (i1 & !i2):

  • i0 == 1:ENCODER_RESPONSE_RE 变为高电平
  • (!i2 & i1) == FRAME_STATE == WAIT_FOR_ACK (0,1)