经验分享 | HPM5300系列SEI串行编码器接口:如何设置通讯协议(上)
工程苗小兵
先楫资深FAE工程师
电力电子与电力传动专业硕士研究生,一个从事了20多年的功率控制的工程小兵,有多年的电机驱动和电源控制经验,专注电力电子控制方向。
01.串行编码器接口SEI 的应用场景
SEI 串行编码器接口
是HPM单片机独创的通信接口外设,可以在同一个硬件接口上实现不同类型的串行通信协议的数据收发。
是5300精确位置系统的一部分,可以与系统中的其它外设协同工作。
主要应用场景:
作为主机,从外部的串行编码器读取电机运动信息(绝对位置、速度、圈数、故障…等),交由 MMC单元 或 主控软件 进行电机驱动控制。
作为从机,QEIv2或RDC模块将从传感器(光、霍尔、旋变)获取的位置数据,经SEI转换成不同的协议后发送给外部的电机驱动器(PLC、运动控制卡、伺服驱动……)。
定制通讯,可以在多种不同的串行协议间进行转换;也可以根据自己的需要定制协议,并可实现硬件自主通讯。
(图示:5300精确位置系统)
02.串行编码器接口SEI 的主要特性
● 2 个 SEI 控制器
● 9 个数据寄存器组
● 最高支持 64 条指令
● 支持同步通信 和 异步通信
● 支持主机模式和从机模式(作为编码器)
● 支持 RS-485 及 RS-422 接口
● 每个 SEI 控制器支持共 3 种触发方式
外部触发,包括触发输入及触发输出各 8 路
周期性触发
软件触发
● 支持精确控制 SAMPLE 或 UPDATE 位置信息与时间戳的时机
● 支持命令匹配及指令跳转
● 支持自动 CRC 校验
● 支持自动奇偶校验
● 支持 WatchDog
● 支持超时 TIMEOUT 及收发 CDM/CDS
● 灵活实现多种编码器协议:Tamagawa、HIPERFACE、Nikon 、SSI、BiSS-C、EnDat2.1/2.2
03.HPM5300 串行编码器接口SEI 的组成结构
SEI模块的寄存器组成
● 引擎寄存器
负责模块使能控制、超时处理、看门狗配置,和反馈执行状态、指令指针等
● 收发控制
负责收发配置,数据传输长度、波特率、空闲状态、同步或异步控制模式等收发控制
● 触发
负责外部输入触发、周期触发、软件触发模式配置
负责输出触发,可以配置外部触发命令
● 命令
包含8个命令表及其相关的比较位和最大、最小值范围
负责命令数据的长度、校验、大小端格式等
● 锁存器
负责4个锁存器的跳转配置、输出延迟和输出选择
● 位置寄存器
包含sample和update对应的位置寄存器组
负责触发sample和update的配置
● 中断寄存器
负责中断使能配置、状态记录、中断指令和中断指令匹配的配置
● 指令内存
存放64条可配置的指令,SEI0 与 SEI1共用
● 数据寄存器组
存放9组数据寄存器, SEI0 与 SEI1共用
04.串行编码器接口SEI的工作原理:通讯指令
Tamagawa、BiSS-C和SSI,这三种不同协议的编码器为例,通信协议之前存在较大的差异:异步vs同步、校验方式、大小端、数据长度、返回信息延迟、通讯结束标志、触发采样和更新位置时刻等。
SEI 的大致方法是把通讯协议分解成多个典型节点,每个节点对应一条指令,通过不同指令组合实现通讯完成。
Tamagawa
BiSS-C
SSI
05.SEI示例
多摩川编码器主查询协议为例,调用指令设置函数sei_set_instr():
0阶段: 发送控制字,sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_SEND, 0, SEI_DAT_0, SEI_DAT_2, 8);
参数设置:指定SEI0/1;指定指令指针,OP:3无时限内发送 ;CK:异步传输统一为0;CRC:CRC放入无效数据寄存器DAT_0表示当前数据不计算CRC;传输数据:放入DAT2;数据长度:8bit。
1阶段: 接收控制字,sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_RECV_WDG, 0, SEI_DAT_9, SEI_DAT_3, 8);
参数定义:指定SEI0/1,指定指令指针,OP:6时限内接收 ,CK:异步传输统一为0, CRC:校验值放入数据寄存器DAT_9,传输数据放入DAT_3,数据长度为8bit。
2阶段: 接收传感器状态信息,sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_RECV_WDG, 0, SEI_DAT_9, SEI_DAT_4, 8);
参数定义:其他信息同上,传输数据放入DAT_4。
3阶段: 接收位置信息,sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_RECV_WDG, 0, SEI_DAT_9, SEI_DAT_5, 24);
参数定义:其他信息同上,传输数据放入DAT_5,数据长度为24bit。
4阶段: 接收ENID,sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_RECV_WDG, 0, SEI_DAT_9, SEI_DAT_6, 8);
参数定义:其他信息同上,传输数据放入DAT_6,数据长度为8bit。
5阶段: 接收圈数信息,sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_RECV_WDG, 0, SEI_DAT_9, SEI_DAT_7, 24);
参数定义:其他信息同上,传输数据放入DAT_7,数据长度为24bit。
6阶段: 接收报警信息,sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_RECV_WDG, 0, SEI_DAT_9, SEI_DAT_8, 8);
参数定义:其他信息同上,传输数据放入DAT_8,数据长度为8bit。
7阶段: 接收CRC,sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_RECV_WDG, 0, SEI_DAT_0, SEI_DAT_9, 8);
参数定义:其他参数同上, CRC:数据放入无效数据寄存器DAT_0表示该指令中接收到的数据不计算CRC;如果DAT_9配置为CRC模式,前期接收数据计算后的CRC校验值会与DAT_9接收值做对比,数据长度为8bit。
8阶段: 停止指令sei_set_instr(BOARD_SEI, instr_idx++, SEI_INSTR_OP_HALT, 0, SEI_DAT_0, SEI_DAT_0, 0)
参数定义:OP:0 停顿,其他参数均设为0。
通讯结束。
06.SEI 引擎寄存器
寄存器组成
● 引擎控制
负责模块使能控制、状态回倒、状态异常处理、触发使能控制、看门狗使能
● 指针地址配置
配置异常和初始执行指令地址指针,当执行不同数据通讯时可以修改初始执行指令地址指针实现调用不同的收发指令
● 看门狗配置、程序执行指针、当前指令、看门狗状态
负责监控当前工作状态
● SEI中有两组,分别应用于SEI0和SEI1
未完待续
“先楫半导体”(HPMicro)是一家致力于高性能嵌入式解决方案的半导体公司,总部位于上海,产品覆盖微控制器、微处理器和周边芯片,以及配套的开发工具和生态系统。公司成立于2020年6月,总部坐落于上海市张江高科技园区,并在天津、苏州、深圳和杭州均设立分公司。核心团队来自世界知名半导体公司管理团队,具有15年以上,超过20个SoC的丰富的研发及管理经验。先楫半导体以产品质量为本,所有产品均通过严格的可靠性测试。目前已经量产的高性能通用MCU产品包含HPM6700/6400、HPM6300、HPM6200及HPM5300四个系列,性能领先国际同类产品并通过AEC-Q100认证。公司已完成ISO9001质量管理认证和ISO 26262/IEC61508功能安全管理体系双认证,全力服务中国乃至全球的工业、汽车和能源市场。更多信息,请访问 https://hpmicro.com/