ZHCUC77 August   2024

 

  1.   1
  2.   说明
  3.   资源
  4.   特性
  5.   应用
  6.   6
  7. 1系统说明
    1. 1.1 主要系统规格
    2. 1.2 终端设备
    3. 1.3 电表
    4. 1.4 电能质量监测仪,电能质量分析仪
  8. 2系统概述
    1. 2.1 方框图
    2. 2.2 设计注意事项
      1. 2.2.1 使用 TMAG5273 线性 3D 霍尔效应传感器进行磁篡改检测
      2. 2.2.2 独立 ADC 的模拟输入
      3. 2.2.3 电压测量模拟前端
      4. 2.2.4 用于电流测量的模拟前端
    3. 2.3 主要米6体育平台手机版_好二三四
      1. 2.3.1 AMC131M03
      2. 2.3.2 ADS131M02
      3. 2.3.3 MSPM0G1106
      4. 2.3.4 TMAG5273
      5. 2.3.5 ISO6731
      6. 2.3.6 TRS3232E
      7. 2.3.7 TPS709
  9. 3硬件、软件、测试要求和测试结果
    1. 3.1 硬件要求
      1. 3.1.1  软件要求
      2. 3.1.2  用于 PC GUI 通信的 UART
      3. 3.1.3  直接存储器存取 (DMA)
      4. 3.1.4  ADC 设置
      5. 3.1.5  前台进程
      6. 3.1.6  公式
        1. 3.1.6.1 标准计量参数
        2. 3.1.6.2 电能质量公式
      7. 3.1.7  后台进程
      8. 3.1.8  软件函数 per_sample_dsp()
      9. 3.1.9  电压和电流信号
      10. 3.1.10 纯波形样本
      11. 3.1.11 频率测量和周期跟踪
      12. 3.1.12 LED 脉冲生成
      13. 3.1.13 相位补偿
    2. 3.2 测试设置
      1. 3.2.1 电源选项和跳线设置
      2. 3.2.2 电表计量精度测试
      3. 3.2.3 查看计量读数和校准
        1. 3.2.3.1 从 PC 校准和查看结果
      4. 3.2.4 MSPM0+ MCU 的校准和闪存设置
      5. 3.2.5 增益校准
      6. 3.2.6 电压和电流增益校准
      7. 3.2.7 有源功率增益校准
      8. 3.2.8 偏移校准
      9. 3.2.9 相位校准
    3. 3.3 测试结果
      1. 3.3.1 能量计量精度结果
  10. 4设计和文档支持
    1. 4.1 设计文件
      1. 4.1.1 原理图
      2. 4.1.2 BOM
      3. 4.1.3 PCB 布局建议
      4. 4.1.4 布局图
      5. 4.1.5 Altium 工程
      6. 4.1.6 Gerber 文件
      7. 4.1.7 装配图
    2. 4.2 工具与软件
    3. 4.3 文档支持
    4. 4.4 支持资源
    5. 4.5 商标
  11. 5关于作者

后台进程

图 3-3 显示了进行电压和电流采样时发生的不同事件,其中用绿色标出的项目由 MSPM0G1106 硬件模块完成。

TIDA-010944 电压和电流采样事件图 3-3 电压和电流采样事件

每个相位的新电流样本在每 OSR(此设计中为 1024 个调制时钟周期)准备就绪,从而在连接到 MSPM0+ MCU 的 SPI 总线上每秒产生 4000 个样本。数据传输包含两个事务:第一个是 12 个字节的样本,两个 ADS131M02 通道各包含其中 3 个字节的数据;第二个是另外 15 个字节,包含 AMC131M03 上一个通道用于分流器的数据,还有未使用和通过软件禁用的另外两个模拟输入通道的 0x00 00 00 数据。

假设 ADS131M02 和 AMC131M03 器件最近一次就绪的相电流和电压样本对应于第 Nth - 1 个电流和电压样本,即 Iphx[N - 1] 和 Vphx[N - 1],一旦新样本准备就绪,ADS131M02 就会将 DRDY 引脚置为低电平有效。ADS131M02 DRDY 引脚的下降沿会导致 MSPM0+ MCU 上的 GPIO 端口中断,从而触发端口 ISR,让后台进程在端口 ISR 运行。AMC131M03 还会生成 DRDY 引脚中断,并在通过 SPI 读出 ADS131M02 后立即提供该中断。

图 3-4 显示了后台进程,该进程主要处理测试软件中有严格时序要求的事件。

TIDA-010944 后台进程图 3-4 后台进程

在后台进程中,先前获得的电压样本 (Vphx[N - 2]) 和先前获得的电流样本 (Iphx[N - 2]) 会存储起来,以便稍后供 per_sample_dsp () 函数使用,该函数负责更新用于计算计量参数的中间点积数量。

在存储先前从 ADS131M02 和 AMC131M03 获得的电压和电流样本后,通过将相应的片选信号置为低电平有效,来启用与 ADS131M02 的通信。然后,将 DMA 配置为针对 ADS131M02 器件最新电流和电压样本(Iphx[N – 1] 和
Vphx[N – 1])发送请求,并接收来自 ADS131M02 的数据包响应。最新 ADC 数据样本的请求(发送虚拟数据 0x00)和接收由 DMA 模块自动完成。

图 3-5 显示了由 MSPM0+ MCU 的 DMA 发送的数据包,以及同样由 DMA 接收的来自 ADS131M02 或 AMC131M03 的响应数据包。发送和接收数据包中包含四个或五个字,其中每个字的长度为三个字节,从而在 SPI 总线上产生 12 或 15 字节的 DMA 事务。请注意,ADS131M02 数据包的长度为 12 个字节,因为仅通过 DMA 事务读出两个通道,每个通道各有三个字节,而 AMC131M03 需要 15 个字节。固件会自动处理 ADC 器件选择并循环读取数据,因为固件会更新每个 ADC 的 DMA 参数(包括数据包数据长度),并激活与每个 ADC 的正确 CS 线路。

TIDA-010944 ADS131M02 和 AMC131M03 ADC 采样请求数据包图 3-5 ADS131M02 和 AMC131M03 ADC 采样请求数据包

从 ADS131M02 器件请求 ADC 数据时,必须由 MSPM0+ MCU 发送的第一个字是命令字。测试软件不需要在典型的 ADC 样本读出期间更改 ADS131M02 的设置或读取任何寄存器,因此会向 ADS131M02 发送 NULL 命令,这使设计人员能够无需更改器件状态即可从 ADS131M02 获取 ADC 样本。

null 命令的实际大小是 16 位;但是,由于使用的是 24 位字,16 位命令必须在命令末尾填充一个额外的值 0x00。因此发送的 NULL 命令字的值为 0x00 00 00。当 MSPM0+ MCU 移出命令字时,MCU 同时将响应字移入前一个数据包的命令字。NULL 命令的响应字是 STATUS 寄存器的内容。此设计中不使用 STATUS 寄存器的内容,因此从 ADS131M02 接收到的第一个字将被忽略(未在软件代码中处理)。

写入命令字后,必须对每个要读取的字节执行一次虚拟写入。若要启用 SPI 时钟,便需要写入虚拟字节,这是从 ADS131M02 器件读取一个字节所必需的。每次写入虚拟字节时,都会将值 0x00 写入 SPI 发送寄存器。通过在写入命令字节后立即写入三个虚拟字节,MSPM0+ MCU 可以从 ADS131M02 的通道 0 接收 3 字节的 ADC 值。写入接下来的 3 个虚拟字节将获取通道 1 的 ADC 数据,写入接下来的 3 个虚拟字节将获取 CRC 字。CRC 字为 24 位;但是,请注意实际的 CRC 只有 16 位,这些位对应于 24 位字的最高有效位。因此,在解析 CRC 字时,不需要最后一个字节(但请注意,为了使 ADS131M02 正确运行,仍必须发送虚拟写入的这个零填充字节)。

每当 DMA 接收到整个 Iphx[N - 1] 数据包时,便会自动调用 DMA ISR。在 ISR 内,CRC 基于三个命令和 ADC 通道数据字计算(共计 3 x 3 = 9 字节)。此 CRC 计算可在两种模式下完成:使用 MSPM0G110 MCU 的 CRC 模块或使用 memcpy() 函数,将 9 字节 ADC 数据移动到自动计算 CRC16 的特殊存储器区域。

紧随从 AMC131M03 读取 SPI 数据后,但使用 NULL 命令和三个 24 位数据通道以及带有填充的 0x00 字节的 CRC16。这完成了对 AMC131M03 器件的当前样本 Iphx[N – 1] 的读取,然后还会检查 CRC16 校验和。

有关 CRC16 检查实现的详细信息,请参阅 ADS_verifyADSCRC()AMC_verifyAMCCRC() 例程。memcpy() 实现的计算速度比使用带字节馈送的 CRC16 寄存器快近 5 倍,并且在默认情况下使用。可以向 CRC 模块馈送 8 位或 16 位数据,并且由于共有 9 个字节,因此 CRC 模块正在逐字节更新。计算出数据包的 CRC 后,会将校验结果与从 ADS131M02 发送的数据包中获得的 CRC 进行比较。发送的 CRC 从字节 10 和 11 进行解析(最后一个字节 12 是 CRC16 的零填充,因此会忽略该值)。

如果计算出的 CRC 和解析的 CRC 相等,则 CRC 校验正确,并解析 ADC 数据以获取时间 N - 1 处的电压和电流样本值。有两个变量用于计算每个 ADC 的合格和不合格 CRC16 数据包,名为 crcPassCountcrcFailCount。解析的电压和电流样本被置于临时缓冲器中,以便在下一次中断调用 per_sample_dsp() 函数时使用此信息。当 DMA 上的 SPI 传输结束时,CS(芯片选择)线路再次从 MSPM0+ MCU 自动上拉回高电平,以便在下次电流样本读出准备就绪之前正确复位 AMC131M03 通信。

在使用 DMA 通道将最新电流和电压样本 Iphx[N - 1] 和 Vphx[N - 1] 传输到 MSPM0+ MCU 的同时,ADS131M02 已对下一个电压 (Vphx[N]) 和电流样本 (Iphx[N]) 进行采样,而测试软件对从 ADS131M02 和 AMC131M03 获取的早期电压 (Vphx[N - 2]) 和电流样本 (Iphx[N - 2]) 执行逐样本处理。可使用这种逐样本处理方法来更新用于计算计量参数的中间点积。处理样本后,后台进程使用 per_sample_energy_pulse_processing 执行电能比例脉冲的计算和输出。一旦 per_sample_energy_pulse_processing 完成,测试软件便会从端口 ISR 退出。

总之,在单个 DRDY 周期中有两个 SPI 读取数据周期,首先读取 ADS131M02 器件,然后是 AMC131M03。这两个 SPI 事务之间的唯一区别在于,ADS131M02 有两个通道,而 AMC131M03 有三个通道,因此 SPI 数据包的长度总共为 12 字节或 15 字节。