如何配置MAX78615+LMU用于UART通信

描述

MAXREFDES14#为隔离式电能测量提供紧凑的解决方案,采用MAX78615+LMU。默认情况下,此参考设计配置为 SPI 通信。本应用笔记描述了如何配置MAX78615+LMU用于UART通信,并给出了该接口的一些交易示例。

配置串行接口

Maxim Integrated的所有电能测量器件均支持三种不同的串行接口,在与不同的主机处理器和应用接口时具有最大的灵活性。但是,一次只能有一个串行接口处于活动状态。上电期间,Maxim集成电能测量器件将轮询其硬件接口引脚的状态,以确定哪个串行协议处于活动状态。要在器件导通后更改通信模式,用户必须对器件执行电源重启,并将新的配置逻辑应用于接口引脚。MAX78615+LMU具有两个接口引脚:引脚16上的MP0/IFC1和引脚2上的IFC0。表1显示了哪个串行接口与上电时这些引脚的逻辑状态相对应。

表 1.串行接口选择逻辑
 

 

接口模式 IFC1 IFC0
SPI X 0
UART 0 1
I2C 1 1

 

MAXREFDES14#系统板如图1所示。该设计在IFC0和IFC1上均具有10kΩ下拉电阻,默认情况下选择SPI模式。要启用UART通信而不是SPI,原理图中的R10应上拉至V抄送而不是拉低到 GND。由于选择接口后MP0可用作“多用途”引脚,因此建议使用下拉,而不是将引脚直接连接到GND。通过这些连接,MAX78615+LMU将在上电期间配置为UART模式。UART 接口的默认设置为 38,400 波特、8 个数据位、无奇偶校验和一个停止位。

uart

图1.MAXREFDES14# 原理图 — 非隔离侧。

设置 SSI ID

用于通过UART通信的协议是简单串行接口或SSI。SPI和UART接口的一个主要区别是,SPI主机通过硬件芯片选择(MAX78615+LMU上的SSB)选择器件,而UART接口使用每个器件定义的SSI ID建立通信。MAX78615+LMU的SSI ID范围为1至255,SSI ID分两步选择。MAX78615+LMU中的DEVADDR[5:0]寄存器位用于定义SSI ID的前6位。SSI ID 的最低 2 位由硬件引脚 MP6/ADDR1 和 SPCK/ADDR0 引脚设置。这些引脚的状态在上电时采样的方式与MP0/IFC1和IFC0引脚采样以确定串行接口的方式相同。MAX78615+LMU SSI ID等于器件总地址+1。因此,如果 DEVADDR[5:0] = 000000 且 ADDR1 = ADDR0 = 0,则 SSI ID 将为 1。由于 255 是允许的最大 SSI ID,因此不支持设备总地址“FF”。MAX78615+LMU具有默认的DEVADDR = 0。

建立沟通

MAX78615+LMU在UART模式下上电并设置SSI ID后,可通过UART接口发送数据。下拉ADDR1和ADDR0将配置MAX78615+LMU,SSI ID为1。可以发送以下数据包以选择设备:

表 2.SSI 选择目标数据包
 

 

字节号 数据 描述
1 0xAA 标头字节
2 0x04 字节计数
3 0xC1 选择 SSI ID 目标“1”
4 0x91 校验和

 

校验和的计算方法是将前三个字节相加,并取总和的最低字节的两个补码。如果配置正确,MAX78615+LMU将以单字节响应0xAD响应,这是无数据的确认。图 2 显示了事务的逻辑分析器捕获。

uart

图2.SSI 选择目标逻辑波形。

更改 SSI ID

SSI ID 可以在固件和硬件中配置。DEVADDR 寄存器可以通过任何串行接口写入 — SPI、I2C 或 UART。要通过UART写入寄存器的内容,应发出“设置读/写地址”命令,然后首先发送两个表示寄存器字节地址的LSB。接下来是“写入 3 个字节”命令,后跟首先发送 LSB 的三个数据字节。只有 DEVADDR 的最低字节用于确定 SSI ID;上面的两个字节未使用。可以发送以下数据包以将 DEVADDR 寄存器设置为 1。MAX78615+LMU应响应“0xAD”——无需数据即可确认。

表 3.SSI DEVADDR 写入数据包示例
 

 

字节号 数据 描述
1 0xAA 标头字节
2 0x0A 字节计数
3 0xA3 设置读/写地址 [15:0]
4 0x69 DEVADDR 寄存器地址 [7:0]
5 0x00 DEVADDR 寄存器地址 [15:8]
6 0xD3 写入 3 字节命令
7 0x01 数据字节低
8 0x00 数据字节中
9 0x00 数据字节高
10 0x6C 校验和

 

最初,DEVADDR 寄存器的新内容不会保存到闪存中。要将设备地址存储在片上闪存中,必须专门调用闪存访问命令。否则,器件将在下一次上电时将先前存储的值加载到寄存器中。位于字地址 0 的 COMMAND 寄存器可用于启动校准、执行软件复位或将寄存器数据存储到闪存中。要访问闪存,请将0xACC2写入 COMMAND 寄存器的上部字节。可以发送以下数据包以将寄存器内容存储到闪存:

表 4.SSI 闪存访问命令数据包示例
 

 

字节号 数据 描述
1 0xAA 标头字节
2 0x0A 字节计数
3 0xA3 设置读/写地址 [15:0]
4 0x00 命令寄存器地址 [7:0]
5 0x00 命令寄存器地址 [15:8]
6 0xD3 写入 3 字节命令
7 0x00 数据字节低
8 0xC2 数据字节中
9 0xAC 数据字节高
10 0x68 校验和

 

执行此步骤后,寄存器内容将在下次上电时加载新的闪存内容。

区分 DEVADDR、设备地址和 SSI ID

由于使用的实现和命名约定,应在 DEVADDR、设备地址和 SSI ID 之间进行一些澄清。 DEVADDR 是存储用户可编程数据以设置设备地址的寄存器的名称。然而,实际的器件地址是DEVADDR的下六位与器件上电或复位时ADDR1和ADDR0引脚状态的组合。DEVADDR[5:0] 位对应于设备地址的前六位,ADDR1 分配给位 1,ADDR0 分配给位 0。设置设备地址后,SSI ID 只是设备地址 + 1。在上面的示例中,如果 DEVADDR[5:0] = 1 且 ADDR1 = ADDR0 = 0,则上电或复位后的新设备地址将为 4,这将使上例中的 SSI ID 值为 5。

总结

MAXREFDES14#隔离式电能测量子系统参考设计中的MAX78615+LMU支持SPI、I2C 和 UART 接口。参考设计默认配置了SPI接口。通过在上电时改变硬件引脚的逻辑状态,可以使能MAX78615+LMU上的UART接口。一旦激活,SSI 协议就会通过 UART 实现通信。通过硬件和固件设置唯一地址,可以并行连接多个设备。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分