AN-7597:MAX14906PMB#配合TMCM-0960-MotionPy 使用
引言
本文介绍了MAX14906PMB#如何配合TMCM-0960-MotionPy V2.1使用。MAX14906PMB#是一款外设模块,用于快速搭建基于MAX14906 工业数字输入/数字输出器件的原型设计。该器件有四个通道,每个通道可单独配置为高边开关、推挽驱动器、1/3型数字输入或2型数字输入。欲了解更多信息,请参阅 MAX14906数据手册和 MAX14906PMB#产品页面。MAX14906 的基本功能在MicroPython 环境中实现,可在TMCM-0960-MotionPy板上使用。本文简要说明了如何使用这些基本功能,并概述了如何设置示例。
要求
- MAX14906PMB#,包含24V DC电源适配器
- USB-C电缆
- TMCM-0960-MotionPy V2.1 按照 AN061所述进行设置
- 端口连接到TMCM-0960-MotionPy 板
连接PmodTM板
MAX14906 利用 SPI 接口与主机控制器通信,该接口可通过 TMCM-0960-MotionPy V2.1 板上的PMOD1 和 PMOD2 连接器进行访问。默认连接对应于表 1 和图 2 所示的 PMOD1 连接器,MAX14906PMB#为从器件,TMCM-0960-MotionPy 为主器件。除了四个 SPI 信号(CS、SCLK、MOSI 和MISO)之外,还可以通过适当的GPIO引脚访问READY、SYNCH、EN和FAULT信号。
MAX14906PMB# J1 信号 | MAX14906PMB# J1 引脚编号 (注2) | TMCM-0960-MotionPy PMOD1信号 | TMCM-0960 MotionPy PMOD1 引脚编号(注2) | 说明 |
---|---|---|---|---|
DIO_SPI_SCLK | 4 | SPI1_SCLK | 7 | 串行时钟 |
DIO_SPI_MISO | 3 | SPI1_MISO | 5 | 主器件串行数据输入,从器件串行 数据输出 |
DIO_SPI_MOSI | 2 | SPI1_MOSI | 3 | 主器件串行数据输出,从器件串行 数据输入 |
DIO_SPI_CSB | 1 | CS01 | 1 | 片选 |
DIO_EN | 10 | GPO3 | 8 | MAX14906 DOI 使能输入 |
DIO_SYNCH | 9 | GPO2 | 6 | MAX14906 SYNCH 控制输入 |
DIO_READYB | 8 | GPO1 | 4 | MAX14906 逻辑电源就绪输出 |
DIO_FAULTB | 7 | CS02 | 2 | MAX14906 诊断故障输出 |
注1:在TMCM-0960-MotionPy V2.1原理图上,Pmod连接器标记为PMOD0和PMOD1,但在PCB丝印层上,它们标记为PMOD1和PMOD2。 在Python 驱动程序中,连接器变量称为pmod1和pmod2。
注2:在MAX14906PMB#上,连接器J1编号约定为:外行1至6,内行7至12。但在TMCM-0960-MotionPy V2.1上,Pmod连接器编号约 定为:一行上为1、3、5、7、9、11,另一行上为2、4、6、8、10、12。尽管编号方式不同,但物理信号映射是一致的。
结构和函数
MAX14906 通过 SPI 接口与主机控制器通信。max14906.py 脚本中已经实现了 SPI 初始化、寄存器读写、基本配置和监控。有关TMCM-0960-MotionPy及其文件系统的更多信息,请参阅AN061。
基本函数read(addr)和write(addr, data)用于读取和写入 MAX14906 中的寄存器。要将特定通道设置为数字输出或数字输入,可以使用set_DO(channel)和set_DI(channel)。
如果通道配置为数字输出,可以使用 static_high_mode(channel)或 static_low_mode(channel)开启或关闭通道。MAX14906 为每个通道提供了四种数字输出工作模式(高边模式、2倍冲击电流的高边模式、有源推挽模式和简单推挽模式),并为每个通道提供了四个限流值(130mA、300mA、600mA和1.2A)。这些模式和限流值可通 high_side_mode(channel)、high_side_modex2(channel)、 push_pull_mode_active(channel)、push_pull_mode_simple(channel)和 current_lim_set(channel, setCurr) 进行配置。high_z_mode(channel)函数用于将通道配置为低漏电流高阻抗模式。
如果通道配置为数字输入,DI_type(type)可用于将所有数字输入通道配置为1/3 型或2 型。欲了解更多信息,请参阅MAX14906数据手册。
注:由于内部电流沉全局设置为1/3型或2型,因此输入类型无法混用。如果选择2型,则所有数字输入通道都将设置为2型。
表 2 包含了 max14906.py 中实现的全部函数列表。欲了解完整寄存器映射和器件特性,请参阅MAX14906 数据手册。
函数 | 参数 | 说明 |
---|---|---|
read(addr) | addr(十六进制):有效寄存器地址 | 读取寄存器内容并验证CRC。返回24位二进制字 符串。 |
write(addr, data = "00000000") | addr(十六进制):有效寄存器地址 data(字符串):要写入寄存器的二进制字符串 | 将数据写入寄存器并验证CRC。返回24位二进制字符串。 |
set_DO(channel) | channel(整数):1、2、3、4 | 将指定通道设置为数字输出,并将输出设置为低 电平。 |
set_DI(channel) | channel(整数):1、2、3、4 | 将指定通道设置为数字输入。 |
high_z_mode(channel) | channel(整数):1、2、3、4 | 将指定通道设置为高阻模式。 |
static_low_mode(channel) | channel(整数):1、2、3、4 | 将指定通道设置为数字输出静态低电平。 |
static_high_mode(channel) | channel(整数):1、2、3、4 | 将指定通道设置为数字输出静态高电平。 |
high_side_mode(channel) | channel(整数):1、2、3、4 | 将指定通道设置为DO高边模式。 |
high_side_modex2(channel) | channel(整数):1、2、3、4 | 将指定通道设置为具有2倍冲击电流的DO高边 模式。 |
push_pull_mode_active(channel) | channel(整数):1、2、3、4 | 将指定通道设置为DO有源推挽模式。 |
push_pull_mode_simple(channel) | channel(整数):1、2、3、4 | 将指定通道设置为DO简单推挽模式。 |
current_lim_set(channel, setCurr) | channel(整数):1、2、3、4 setCurr(字符串):"600mA"、 "130mA"、"300mA"、"1.2A" | 将指定通道输出限流值设置为600mA、130mA、300mA 或1.2A。 |
DI_type(type) | type(整数):1、2、3 | 将所有通道的数字输入类型配置为1/3型或 2 型。 |
read_DI(channel) | channel(整数):1、2、3、4 | 读取指定通道的数字输入逻辑电平。返回“0”表示逻辑低电平,返回“1”表示逻辑高电平。 |
SLED_control(enable = 1) | enable(整数):0、1 | 使能或禁用用户对SLED的控制。如果禁用,SLED 将由MAX14906自主控制。 |
set_SLED(LED, val) | LED(整数):1、2、3、4 val(整数):0( 关 ), 1(开) | 开启或关闭特定SLED LED。 |
FLED_control(enable = 1) | enable(整数):0、1 | 使能或禁用用户对FLED的控制。如果禁用,FLED 将由MAX14906自主控制。 |
set_FLED(FLED, val) | LED(整数):1、2、3、4 val(整数):0( 关 ), 1(开) | 开启或关闭特定FLED LED。 |
EN(val) | val(整数):0(禁用),1(使能) | 驱动至高电平将使能所有DOI通道。驱动至低电平将禁用所有DOI通道。 |
SYNCH(val) | val(整数):0( 关 ), 1(开) | 将SYNCH驱动至低电平时,DOI输出不会改变,DOI 输入电平不会更新。将SYNCH驱动至高电平时,DOI输出状态和DOI输入状态会立即更新。在DO模式下,输出在SYNCH上升沿更新。在DO和DI模式下,逻辑电平在SYNCH下降沿读取并锁存。 |
enable_fault_latching(latching = 1) | 锁存(整数):0(禁用),1(使能) | 使能或禁用诊断故障位的锁存,包括开路故障和VDD短路故障。 |
read_global_err() | -- | 读取全局错误寄存器,以二进制字符串形式返回数据字节。 |
check_fault() | -- | 如果FAULT 信号有效则返回True, 如果FAULT 信号无效则返回False。 |
enable_OW_fault (channel) | channel(整数):1、2、3、4 | 使能特定通道的开路检测。 |
disable_OW_fault(channel) | channel(整数):1、2、3、4 | 禁用特定通道的开路检测。 |
read_OW_fault() | -- | 返回所有四个通道的开路故障位, 0 表示无故障,1表示有故障。 第一位代表通道4,最后一位代表通道1。 |
enable_ShVDD(channel) | channel(整数):1、2、3、4 | 使能特定通道的VDD短路检测。 |
disable_ShVDD(channel) | channel(整数):1、2、3、4 | 禁用特定通道的VDD短路检测。 |
read_ShVDD_fault() | -- | 返回所有四个通道的VDD短路故障位,0表示无故障,1表示有故障。第一位代表通道4,最后一位代表通道1。 |
enable_GDrv(channel) | channel(整数):1、2、3、4 | 使能特定通道上外部PMOS的栅极驱动器。 |
disable_GDrv(channel) | channel(整数):1、2、3、4 | 禁用特定通道上外部PMOS的栅极驱动器。 |
read_Interrupt() | -- | 以二进制字符串形式返回中断寄存器的内容。 |
masking(bit, enable = 1) | bit(整数):0、1、2、3、4、5、6、7 enable(整数):0、1 | 屏蔽指定的诊断故障(enable = 1),使其不会将FAULT 引脚置为有效;或者移除屏蔽(enable = 0)。有关哪个位对应哪个故障的详细信息,请参阅MAX14906数据手册。 |
运行示例
首先,使用示例脚本 max14906pmb.py。如图 2 所示,将 MAX14906PMB#连接到 TMCM-0960 MotionPy,并将 24V 电源适配器连接到 MAX14906PMB#连接器 J3。使用 USB-C 线缆将 TMCM 0960-MotionPy 连接到 PC,并启动串行终端连接。可使用以下命令来执行示例脚本:
示例脚本将通道1设置为数字输出高边模式。它每2.5秒切换DOI1为高电平或低电平,并开启或关闭SLED1 LED。通道2配置为1/3型数字输入,每2.5秒读取一次。全局错误、开路故障和VDD短路故障均已使能,每个周期都会监控。脚本持续运行,直到用户终止。终端每个周期都会显示DOI 状态,如下所示:
该示例还以注释的形式提供了其他配置,供用户修改和试验。
参考资料/其他资源
MAX14906:
https://www.maximintegrated.com/en/products/interface/signal-integrity/MAX14906.html
MAX14906PMB#:
https://www.maximintegrated.com/en/products/interface/signal-integrity/MAX14906PMB.html
TMCM-0960-MotionPy V21:
https://www.trinamic.com/products/modules/details/tmcm-0960-motionpy-v21/
TMCM-0960-MotionPy V21 with TMCL-Modules:
https://www.trinamic.com/products/modules/details/tmcm-0960-motionpy/
商标
Pmod 是Digilent, Inc.的商标。