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 个数据位、无奇偶校验和一个停止位。
图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 显示了事务的逻辑分析器捕获。
图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 实现通信。通过硬件和固件设置唯一地址,可以并行连接多个设备。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !