4.1 获取和验证ADC样品的程序
Loading the player...
将在30s后自动为您播放下一课程
[音乐播放] 在本视频中,在使用 独立ADC部分的 培训系列分相电能表 设计软件中, 我们讨论了初始化ADS131ML4, 从设备中获取样本, 并通过计算CRC校验 来验证样本的完整性的过程。 在左边,我们看到用于 初始化ADS131ML4的进程。 当MSP432单片机复位后, 第一次设置ADS131ML4时, 以及每次执行校准时, 都会执行此过程。 在设置ADS131ML4设备之前, 禁用了ML4的调制器时钟, 以防止ML4在尝试设置它时 生成新的样本。 调制器时钟是通过 禁用MSP432单片机上的 SM时钟输出来禁用的, 它被输入到引脚时钟 ADS131ML4上。 禁用SM时钟输出只需要 在校准后执行, 而不需要在MSP432微控制器 设置事件后执行, 因为在MSP432微控制器重置后, SM时钟输出将自动不输出。 禁用SM时钟输出后, 将MSP432单片机的 eUSCI B0 SPI模块 配置为与ADS131ML4设备通信。 eUSCI B0 SPI模块专门配置为 掩模设备,使用三线模式, 在该测试软件中 手动插入芯片选择信号, 而不是使用间谍模块的芯片 选择功能。 此外,SPI时钟据说是8.192兆赫, 这是从8.192兆赫SM时钟 派生出来的。 SPI设置好后,禁用所有中断, 并使用SPI将复位命令 从MSP432微控制器 发送到ADS131ML4。 然后重新启用中断, MSP432微控制器向ADS131ML4 发送命令来配置其寄存器。 此时,请注意调制时钟尚未 由MSP432微控制器输出, 这意味着采样尚未开始。 通过使用SPI 向ADS131ML4发送命令, 配置了ADS131ML4寄存器, 特别是针对所选CRC的 16位CCITT CRC选项, 将字大小设置为24位。 当没有新的ADC样本时, DRDY被设置为高值, 当ADC样本准备好时, DRDY被设置为低值。 此外,PGA增益被设置为 所有通道的增益之一。 此外,禁用当前检测模式。 对于这些设计, 相位增益校准寄存器没有使用, 因为这是在软件中完成的。 然而,ADC有能力做增益校准, 相位校准作为 条件选项。 最后,该设备的OSR配置为512。 启用所有通道,选择 高分辨率调制功率模式。 在正确初始化 ADS131ML4寄存器后, 将MSP432微控制器配置为 在D级引脚上发生跌落边缘时 产生较差的中断, 这表明ADS131ML4具有 新的电流样本电压可以使用。 接下来,MSP432单片机 将SM时钟 输出到ADS131ML4,开始电压 和电流采样过程。 顶部的图片显示了 采样电压和电流时 发生的不同事件。 在顶部的图片中,绿色的项目 是由硬件设置 自动完成的项目。 为了复习图中所示的过程, 每一个新的样品 都准备好了有效的OSR, 即512为本设计的调制时钟周期。 一旦新的样品准备好, DRDY引脚被ADS131ML4 插入低电平。 ADS131ML4上的DRDY引脚 导致GPIO端口中断, 从而触发MSP432上的端口ISR。 在ISR端口内,将ADS131ML4芯片 选择行插入到较低的位置, 以便与设备通信。 然后,DMA被设置为自动发送 对ADS131ML4最新样本, N-1样本的请求,并接收 来自ADS131ML4的数据包响应。 对电流和电压样本的请求 和接收由DMA模块自动完成。 在接收来自ML4的最新电压 和电流样本的同时, 对之前的样本, 即从ADS131ML4获得的 N-2减去2个样本, 进行单样本处理。 ADS131ML4目前正在采集 下一个电压和电流样本, 也就是第N个样本。 这种逐样处理用于 更新计算计量参数的 中间点积 数量。 当DMA从ML4获得整个N-1包时, DMA ISR将被自动调用。 在DMA ISR中, 如果CRC检查通过, 则解析N-1包,以便 在下一次调用每个样本TSP时, 将其用于电压和电流样本。 对于每个电压和电流样本, 都要遵循这个过程。 下图显示了 由MSP432微控制器的DMA 传输的数据包, 以及由DMA接收 并采样的ADS131ML4的 响应数据包。 传输和接收包 包含六个单词,每个单词 有三个字节长。 当为ADS131ML4设备 请求ADC数据时, 必须发送到 ADS131ML4的第一个单词 是命令单词。 由于测试软件不需要 更改ML4的设置, 也不需要在典型的ADC样本 读取期间读取任何寄存器, 并且没有任何命令 被发送到ML4, 这允许您 在不改变设备状态的情况下 从ML4获得ADC样本, 命令的实际大小为16位。 但是,由于使用了24位, 所以16位命令 必须在包的末尾填充一个 额外的值0x00。 因此,No命令将发送 一个值0x000000。 当MSP432微控制器 移出命令字时, MSP432同时将响应 字移到前一个包的 命令字。 No命令的响应字 是状态寄存器的内容。 在设计中不使用 状态寄存器的内容, 因此将忽略从ADS131ML4 接收到的第一个单词。 在编写命令字之后, 需要对要读取的每个字节 执行虚拟写入。 虚拟写人是启用SPI时钟 所必需的, SPI时钟是从ADS131ML4设备 读取字节所必需的。 对于每个W字节的写入, 都将一个值0x00 写入SPI传输寄存器。 在写入命令字节之后, 立即写入3个虚拟字节, 允许MSP432微控制器 从ML4的通道0 接收3字节ADC值。 接下来的9个伪字节分别获得 通道1、通道2和通道3的 ADC数据。 在读取通道3示例之后, 接下来的三个虚拟字节 将得到CRC字节。 CRC字是24位。 但是,请注意,实际的CRC 只有16位,它们被放在 24位单词中最重要的位中。 因此,在解析CRC字时, 不需要最后一个字节。 不过请注意,对于 正确的ADS131ML4操作, 这个零模式字节的哑字节 仍然必须发送。 ADS131ML4发送的包中的 最后一个字节 是CRC字节。 CRC可用于验证 从ADS131ML4发送的数据 是否已被MSP432正确接收。 ADS131ML4支持两种类型的 CRC计算。 对于本设计,使用 CRC16-CCITT CRC选项, 因为我们可以使用 MSP432 CRC模块 加速这些计算, 因为MSP42 CRC模块 专门使用CRC类型。 对于这种CRC类型, CRC是基于使用 这里显示的多项式 对ADS131ML4 进行多项式除法得到的。 当DMA从ADS131ML4接收到 一个完整的数据包时, DMA ISR将被自动调用。 在ISR中,CRC 通过五个命令和ADC单词计算, 总共15个字节。 该CRC计算使用 MSP432微控制器的CRC模块。 由于CRC模块使用偶数个字节, 但是总共有15个字节可用, 所以前14个字节使用CRC模块。 最后的CRC由软件 根据CRC模块的结果 和第15个字节计算得到。 注意,软件CRC 对最后一个字节的计算 是必要的,因为在本设计中, 字长可能是三个字节。 如果单词大小被选择为2字节, 或者改为4字节,则不需要 软件CRC计算,因为将有 偶数个字节。 下面的代码片段使用 MSP432 CRC模块和软件 计算15字节以上的CRC。 在这个代码片段中, 您可以看到 MSP432上的CRC模块 首先被初始化。 然后将ML4数据包 一次两个字节地输入到 MSP432 CRC模块, 直到输入了前14个字节为止。 然后将ML4包的第15个字节 和前14个字节的CRC结果 输入软件算法, 该算法由一个 MSP432 CRC代码示例获得, 计算最终的CRC。 在包上计算CRC之后, 将它与ML4发送的包中 获得的CRC进行比较。 发送的CRC从ML4包的字节16 和字节17解析出来。 如果计算的CRC 与解析的CRC相等, 则通过CRC校验, 解析ADC数据, 得到N-1电压 和电流样本值。 解析后的电压和电流样本 被放入临时缓冲器中, 以便下次在下一次中断时 调用解析后的样本DSP函数时 使用它们。 在DMA中断结束之前, 芯片选择行 再次被拉回高位, 这样我们就可以 在下一次正确地与ML4通信了。
[音乐播放] 在本视频中,在使用 独立ADC部分的 培训系列分相电能表 设计软件中, 我们讨论了初始化ADS131ML4, 从设备中获取样本, 并通过计算CRC校验 来验证样本的完整性的过程。 在左边,我们看到用于 初始化ADS131ML4的进程。 当MSP432单片机复位后, 第一次设置ADS131ML4时, 以及每次执行校准时, 都会执行此过程。 在设置ADS131ML4设备之前, 禁用了ML4的调制器时钟, 以防止ML4在尝试设置它时 生成新的样本。 调制器时钟是通过 禁用MSP432单片机上的 SM时钟输出来禁用的, 它被输入到引脚时钟 ADS131ML4上。 禁用SM时钟输出只需要 在校准后执行, 而不需要在MSP432微控制器 设置事件后执行, 因为在MSP432微控制器重置后, SM时钟输出将自动不输出。 禁用SM时钟输出后, 将MSP432单片机的 eUSCI B0 SPI模块 配置为与ADS131ML4设备通信。 eUSCI B0 SPI模块专门配置为 掩模设备,使用三线模式, 在该测试软件中 手动插入芯片选择信号, 而不是使用间谍模块的芯片 选择功能。 此外,SPI时钟据说是8.192兆赫, 这是从8.192兆赫SM时钟 派生出来的。 SPI设置好后,禁用所有中断, 并使用SPI将复位命令 从MSP432微控制器 发送到ADS131ML4。 然后重新启用中断, MSP432微控制器向ADS131ML4 发送命令来配置其寄存器。 此时,请注意调制时钟尚未 由MSP432微控制器输出, 这意味着采样尚未开始。 通过使用SPI 向ADS131ML4发送命令, 配置了ADS131ML4寄存器, 特别是针对所选CRC的 16位CCITT CRC选项, 将字大小设置为24位。 当没有新的ADC样本时, DRDY被设置为高值, 当ADC样本准备好时, DRDY被设置为低值。 此外,PGA增益被设置为 所有通道的增益之一。 此外,禁用当前检测模式。 对于这些设计, 相位增益校准寄存器没有使用, 因为这是在软件中完成的。 然而,ADC有能力做增益校准, 相位校准作为 条件选项。 最后,该设备的OSR配置为512。 启用所有通道,选择 高分辨率调制功率模式。 在正确初始化 ADS131ML4寄存器后, 将MSP432微控制器配置为 在D级引脚上发生跌落边缘时 产生较差的中断, 这表明ADS131ML4具有 新的电流样本电压可以使用。 接下来,MSP432单片机 将SM时钟 输出到ADS131ML4,开始电压 和电流采样过程。 顶部的图片显示了 采样电压和电流时 发生的不同事件。 在顶部的图片中,绿色的项目 是由硬件设置 自动完成的项目。 为了复习图中所示的过程, 每一个新的样品 都准备好了有效的OSR, 即512为本设计的调制时钟周期。 一旦新的样品准备好, DRDY引脚被ADS131ML4 插入低电平。 ADS131ML4上的DRDY引脚 导致GPIO端口中断, 从而触发MSP432上的端口ISR。 在ISR端口内,将ADS131ML4芯片 选择行插入到较低的位置, 以便与设备通信。 然后,DMA被设置为自动发送 对ADS131ML4最新样本, N-1样本的请求,并接收 来自ADS131ML4的数据包响应。 对电流和电压样本的请求 和接收由DMA模块自动完成。 在接收来自ML4的最新电压 和电流样本的同时, 对之前的样本, 即从ADS131ML4获得的 N-2减去2个样本, 进行单样本处理。 ADS131ML4目前正在采集 下一个电压和电流样本, 也就是第N个样本。 这种逐样处理用于 更新计算计量参数的 中间点积 数量。 当DMA从ML4获得整个N-1包时, DMA ISR将被自动调用。 在DMA ISR中, 如果CRC检查通过, 则解析N-1包,以便 在下一次调用每个样本TSP时, 将其用于电压和电流样本。 对于每个电压和电流样本, 都要遵循这个过程。 下图显示了 由MSP432微控制器的DMA 传输的数据包, 以及由DMA接收 并采样的ADS131ML4的 响应数据包。 传输和接收包 包含六个单词,每个单词 有三个字节长。 当为ADS131ML4设备 请求ADC数据时, 必须发送到 ADS131ML4的第一个单词 是命令单词。 由于测试软件不需要 更改ML4的设置, 也不需要在典型的ADC样本 读取期间读取任何寄存器, 并且没有任何命令 被发送到ML4, 这允许您 在不改变设备状态的情况下 从ML4获得ADC样本, 命令的实际大小为16位。 但是,由于使用了24位, 所以16位命令 必须在包的末尾填充一个 额外的值0x00。 因此,No命令将发送 一个值0x000000。 当MSP432微控制器 移出命令字时, MSP432同时将响应 字移到前一个包的 命令字。 No命令的响应字 是状态寄存器的内容。 在设计中不使用 状态寄存器的内容, 因此将忽略从ADS131ML4 接收到的第一个单词。 在编写命令字之后, 需要对要读取的每个字节 执行虚拟写入。 虚拟写人是启用SPI时钟 所必需的, SPI时钟是从ADS131ML4设备 读取字节所必需的。 对于每个W字节的写入, 都将一个值0x00 写入SPI传输寄存器。 在写入命令字节之后, 立即写入3个虚拟字节, 允许MSP432微控制器 从ML4的通道0 接收3字节ADC值。 接下来的9个伪字节分别获得 通道1、通道2和通道3的 ADC数据。 在读取通道3示例之后, 接下来的三个虚拟字节 将得到CRC字节。 CRC字是24位。 但是,请注意,实际的CRC 只有16位,它们被放在 24位单词中最重要的位中。 因此,在解析CRC字时, 不需要最后一个字节。 不过请注意,对于 正确的ADS131ML4操作, 这个零模式字节的哑字节 仍然必须发送。 ADS131ML4发送的包中的 最后一个字节 是CRC字节。 CRC可用于验证 从ADS131ML4发送的数据 是否已被MSP432正确接收。 ADS131ML4支持两种类型的 CRC计算。 对于本设计,使用 CRC16-CCITT CRC选项, 因为我们可以使用 MSP432 CRC模块 加速这些计算, 因为MSP42 CRC模块 专门使用CRC类型。 对于这种CRC类型, CRC是基于使用 这里显示的多项式 对ADS131ML4 进行多项式除法得到的。 当DMA从ADS131ML4接收到 一个完整的数据包时, DMA ISR将被自动调用。 在ISR中,CRC 通过五个命令和ADC单词计算, 总共15个字节。 该CRC计算使用 MSP432微控制器的CRC模块。 由于CRC模块使用偶数个字节, 但是总共有15个字节可用, 所以前14个字节使用CRC模块。 最后的CRC由软件 根据CRC模块的结果 和第15个字节计算得到。 注意,软件CRC 对最后一个字节的计算 是必要的,因为在本设计中, 字长可能是三个字节。 如果单词大小被选择为2字节, 或者改为4字节,则不需要 软件CRC计算,因为将有 偶数个字节。 下面的代码片段使用 MSP432 CRC模块和软件 计算15字节以上的CRC。 在这个代码片段中, 您可以看到 MSP432上的CRC模块 首先被初始化。 然后将ML4数据包 一次两个字节地输入到 MSP432 CRC模块, 直到输入了前14个字节为止。 然后将ML4包的第15个字节 和前14个字节的CRC结果 输入软件算法, 该算法由一个 MSP432 CRC代码示例获得, 计算最终的CRC。 在包上计算CRC之后, 将它与ML4发送的包中 获得的CRC进行比较。 发送的CRC从ML4包的字节16 和字节17解析出来。 如果计算的CRC 与解析的CRC相等, 则通过CRC校验, 解析ADC数据, 得到N-1电压 和电流样本值。 解析后的电压和电流样本 被放入临时缓冲器中, 以便下次在下一次中断时 调用解析后的样本DSP函数时 使用它们。 在DMA中断结束之前, 芯片选择行 再次被拉回高位, 这样我们就可以 在下一次正确地与ML4通信了。
[音乐播放]
在本视频中,在使用 独立ADC部分的
培训系列分相电能表
设计软件中,
我们讨论了初始化ADS131ML4,
从设备中获取样本,
并通过计算CRC校验
来验证样本的完整性的过程。
在左边,我们看到用于
初始化ADS131ML4的进程。
当MSP432单片机复位后,
第一次设置ADS131ML4时,
以及每次执行校准时, 都会执行此过程。
在设置ADS131ML4设备之前,
禁用了ML4的调制器时钟,
以防止ML4在尝试设置它时
生成新的样本。
调制器时钟是通过
禁用MSP432单片机上的 SM时钟输出来禁用的,
它被输入到引脚时钟 ADS131ML4上。
禁用SM时钟输出只需要
在校准后执行,
而不需要在MSP432微控制器 设置事件后执行,
因为在MSP432微控制器重置后,
SM时钟输出将自动不输出。
禁用SM时钟输出后,
将MSP432单片机的 eUSCI B0 SPI模块
配置为与ADS131ML4设备通信。
eUSCI B0 SPI模块专门配置为
掩模设备,使用三线模式,
在该测试软件中 手动插入芯片选择信号,
而不是使用间谍模块的芯片
选择功能。
此外,SPI时钟据说是8.192兆赫,
这是从8.192兆赫SM时钟
派生出来的。
SPI设置好后,禁用所有中断,
并使用SPI将复位命令
从MSP432微控制器 发送到ADS131ML4。
然后重新启用中断,
MSP432微控制器向ADS131ML4 发送命令来配置其寄存器。
此时,请注意调制时钟尚未
由MSP432微控制器输出,
这意味着采样尚未开始。
通过使用SPI 向ADS131ML4发送命令,
配置了ADS131ML4寄存器,
特别是针对所选CRC的 16位CCITT CRC选项,
将字大小设置为24位。
当没有新的ADC样本时, DRDY被设置为高值,
当ADC样本准备好时, DRDY被设置为低值。
此外,PGA增益被设置为 所有通道的增益之一。
此外,禁用当前检测模式。
对于这些设计, 相位增益校准寄存器没有使用,
因为这是在软件中完成的。
然而,ADC有能力做增益校准,
相位校准作为
条件选项。
最后,该设备的OSR配置为512。
启用所有通道,选择
高分辨率调制功率模式。
在正确初始化 ADS131ML4寄存器后,
将MSP432微控制器配置为
在D级引脚上发生跌落边缘时 产生较差的中断,
这表明ADS131ML4具有
新的电流样本电压可以使用。
接下来,MSP432单片机 将SM时钟
输出到ADS131ML4,开始电压
和电流采样过程。
顶部的图片显示了
采样电压和电流时 发生的不同事件。
在顶部的图片中,绿色的项目
是由硬件设置
自动完成的项目。
为了复习图中所示的过程,
每一个新的样品 都准备好了有效的OSR,
即512为本设计的调制时钟周期。
一旦新的样品准备好,
DRDY引脚被ADS131ML4 插入低电平。
ADS131ML4上的DRDY引脚 导致GPIO端口中断,
从而触发MSP432上的端口ISR。
在ISR端口内,将ADS131ML4芯片
选择行插入到较低的位置, 以便与设备通信。
然后,DMA被设置为自动发送
对ADS131ML4最新样本,
N-1样本的请求,并接收
来自ADS131ML4的数据包响应。
对电流和电压样本的请求
和接收由DMA模块自动完成。
在接收来自ML4的最新电压
和电流样本的同时,
对之前的样本,
即从ADS131ML4获得的 N-2减去2个样本,
进行单样本处理。
ADS131ML4目前正在采集
下一个电压和电流样本,
也就是第N个样本。
这种逐样处理用于
更新计算计量参数的
中间点积
数量。
当DMA从ML4获得整个N-1包时,
DMA ISR将被自动调用。
在DMA ISR中, 如果CRC检查通过,
则解析N-1包,以便
在下一次调用每个样本TSP时,
将其用于电压和电流样本。
对于每个电压和电流样本,
都要遵循这个过程。
下图显示了
由MSP432微控制器的DMA 传输的数据包,
以及由DMA接收 并采样的ADS131ML4的
响应数据包。
传输和接收包
包含六个单词,每个单词 有三个字节长。
当为ADS131ML4设备 请求ADC数据时,
必须发送到 ADS131ML4的第一个单词
是命令单词。
由于测试软件不需要 更改ML4的设置,
也不需要在典型的ADC样本
读取期间读取任何寄存器,
并且没有任何命令 被发送到ML4,
这允许您 在不改变设备状态的情况下
从ML4获得ADC样本,
命令的实际大小为16位。
但是,由于使用了24位, 所以16位命令
必须在包的末尾填充一个
额外的值0x00。
因此,No命令将发送 一个值0x000000。
当MSP432微控制器 移出命令字时,
MSP432同时将响应
字移到前一个包的
命令字。
No命令的响应字
是状态寄存器的内容。
在设计中不使用 状态寄存器的内容,
因此将忽略从ADS131ML4 接收到的第一个单词。
在编写命令字之后,
需要对要读取的每个字节
执行虚拟写入。
虚拟写人是启用SPI时钟 所必需的,
SPI时钟是从ADS131ML4设备 读取字节所必需的。
对于每个W字节的写入,
都将一个值0x00 写入SPI传输寄存器。
在写入命令字节之后,
立即写入3个虚拟字节, 允许MSP432微控制器
从ML4的通道0 接收3字节ADC值。
接下来的9个伪字节分别获得
通道1、通道2和通道3的 ADC数据。
在读取通道3示例之后,
接下来的三个虚拟字节 将得到CRC字节。
CRC字是24位。
但是,请注意,实际的CRC
只有16位,它们被放在
24位单词中最重要的位中。
因此,在解析CRC字时,
不需要最后一个字节。
不过请注意,对于 正确的ADS131ML4操作,
这个零模式字节的哑字节 仍然必须发送。
ADS131ML4发送的包中的 最后一个字节
是CRC字节。
CRC可用于验证
从ADS131ML4发送的数据
是否已被MSP432正确接收。
ADS131ML4支持两种类型的
CRC计算。
对于本设计,使用 CRC16-CCITT CRC选项,
因为我们可以使用 MSP432 CRC模块
加速这些计算, 因为MSP42 CRC模块
专门使用CRC类型。
对于这种CRC类型,
CRC是基于使用 这里显示的多项式
对ADS131ML4 进行多项式除法得到的。
当DMA从ADS131ML4接收到
一个完整的数据包时, DMA ISR将被自动调用。
在ISR中,CRC
通过五个命令和ADC单词计算, 总共15个字节。
该CRC计算使用
MSP432微控制器的CRC模块。
由于CRC模块使用偶数个字节,
但是总共有15个字节可用,
所以前14个字节使用CRC模块。
最后的CRC由软件
根据CRC模块的结果 和第15个字节计算得到。
注意,软件CRC 对最后一个字节的计算
是必要的,因为在本设计中,
字长可能是三个字节。
如果单词大小被选择为2字节,
或者改为4字节,则不需要
软件CRC计算,因为将有
偶数个字节。
下面的代码片段使用
MSP432 CRC模块和软件
计算15字节以上的CRC。
在这个代码片段中, 您可以看到
MSP432上的CRC模块 首先被初始化。
然后将ML4数据包
一次两个字节地输入到 MSP432 CRC模块,
直到输入了前14个字节为止。
然后将ML4包的第15个字节
和前14个字节的CRC结果 输入软件算法,
该算法由一个 MSP432 CRC代码示例获得,
计算最终的CRC。
在包上计算CRC之后,
将它与ML4发送的包中
获得的CRC进行比较。
发送的CRC从ML4包的字节16
和字节17解析出来。
如果计算的CRC 与解析的CRC相等,
则通过CRC校验, 解析ADC数据,
得到N-1电压
和电流样本值。
解析后的电压和电流样本
被放入临时缓冲器中,
以便下次在下一次中断时
调用解析后的样本DSP函数时 使用它们。
在DMA中断结束之前, 芯片选择行
再次被拉回高位, 这样我们就可以
在下一次正确地与ML4通信了。
[音乐播放] 在本视频中,在使用 独立ADC部分的 培训系列分相电能表 设计软件中, 我们讨论了初始化ADS131ML4, 从设备中获取样本, 并通过计算CRC校验 来验证样本的完整性的过程。 在左边,我们看到用于 初始化ADS131ML4的进程。 当MSP432单片机复位后, 第一次设置ADS131ML4时, 以及每次执行校准时, 都会执行此过程。 在设置ADS131ML4设备之前, 禁用了ML4的调制器时钟, 以防止ML4在尝试设置它时 生成新的样本。 调制器时钟是通过 禁用MSP432单片机上的 SM时钟输出来禁用的, 它被输入到引脚时钟 ADS131ML4上。 禁用SM时钟输出只需要 在校准后执行, 而不需要在MSP432微控制器 设置事件后执行, 因为在MSP432微控制器重置后, SM时钟输出将自动不输出。 禁用SM时钟输出后, 将MSP432单片机的 eUSCI B0 SPI模块 配置为与ADS131ML4设备通信。 eUSCI B0 SPI模块专门配置为 掩模设备,使用三线模式, 在该测试软件中 手动插入芯片选择信号, 而不是使用间谍模块的芯片 选择功能。 此外,SPI时钟据说是8.192兆赫, 这是从8.192兆赫SM时钟 派生出来的。 SPI设置好后,禁用所有中断, 并使用SPI将复位命令 从MSP432微控制器 发送到ADS131ML4。 然后重新启用中断, MSP432微控制器向ADS131ML4 发送命令来配置其寄存器。 此时,请注意调制时钟尚未 由MSP432微控制器输出, 这意味着采样尚未开始。 通过使用SPI 向ADS131ML4发送命令, 配置了ADS131ML4寄存器, 特别是针对所选CRC的 16位CCITT CRC选项, 将字大小设置为24位。 当没有新的ADC样本时, DRDY被设置为高值, 当ADC样本准备好时, DRDY被设置为低值。 此外,PGA增益被设置为 所有通道的增益之一。 此外,禁用当前检测模式。 对于这些设计, 相位增益校准寄存器没有使用, 因为这是在软件中完成的。 然而,ADC有能力做增益校准, 相位校准作为 条件选项。 最后,该设备的OSR配置为512。 启用所有通道,选择 高分辨率调制功率模式。 在正确初始化 ADS131ML4寄存器后, 将MSP432微控制器配置为 在D级引脚上发生跌落边缘时 产生较差的中断, 这表明ADS131ML4具有 新的电流样本电压可以使用。 接下来,MSP432单片机 将SM时钟 输出到ADS131ML4,开始电压 和电流采样过程。 顶部的图片显示了 采样电压和电流时 发生的不同事件。 在顶部的图片中,绿色的项目 是由硬件设置 自动完成的项目。 为了复习图中所示的过程, 每一个新的样品 都准备好了有效的OSR, 即512为本设计的调制时钟周期。 一旦新的样品准备好, DRDY引脚被ADS131ML4 插入低电平。 ADS131ML4上的DRDY引脚 导致GPIO端口中断, 从而触发MSP432上的端口ISR。 在ISR端口内,将ADS131ML4芯片 选择行插入到较低的位置, 以便与设备通信。 然后,DMA被设置为自动发送 对ADS131ML4最新样本, N-1样本的请求,并接收 来自ADS131ML4的数据包响应。 对电流和电压样本的请求 和接收由DMA模块自动完成。 在接收来自ML4的最新电压 和电流样本的同时, 对之前的样本, 即从ADS131ML4获得的 N-2减去2个样本, 进行单样本处理。 ADS131ML4目前正在采集 下一个电压和电流样本, 也就是第N个样本。 这种逐样处理用于 更新计算计量参数的 中间点积 数量。 当DMA从ML4获得整个N-1包时, DMA ISR将被自动调用。 在DMA ISR中, 如果CRC检查通过, 则解析N-1包,以便 在下一次调用每个样本TSP时, 将其用于电压和电流样本。 对于每个电压和电流样本, 都要遵循这个过程。 下图显示了 由MSP432微控制器的DMA 传输的数据包, 以及由DMA接收 并采样的ADS131ML4的 响应数据包。 传输和接收包 包含六个单词,每个单词 有三个字节长。 当为ADS131ML4设备 请求ADC数据时, 必须发送到 ADS131ML4的第一个单词 是命令单词。 由于测试软件不需要 更改ML4的设置, 也不需要在典型的ADC样本 读取期间读取任何寄存器, 并且没有任何命令 被发送到ML4, 这允许您 在不改变设备状态的情况下 从ML4获得ADC样本, 命令的实际大小为16位。 但是,由于使用了24位, 所以16位命令 必须在包的末尾填充一个 额外的值0x00。 因此,No命令将发送 一个值0x000000。 当MSP432微控制器 移出命令字时, MSP432同时将响应 字移到前一个包的 命令字。 No命令的响应字 是状态寄存器的内容。 在设计中不使用 状态寄存器的内容, 因此将忽略从ADS131ML4 接收到的第一个单词。 在编写命令字之后, 需要对要读取的每个字节 执行虚拟写入。 虚拟写人是启用SPI时钟 所必需的, SPI时钟是从ADS131ML4设备 读取字节所必需的。 对于每个W字节的写入, 都将一个值0x00 写入SPI传输寄存器。 在写入命令字节之后, 立即写入3个虚拟字节, 允许MSP432微控制器 从ML4的通道0 接收3字节ADC值。 接下来的9个伪字节分别获得 通道1、通道2和通道3的 ADC数据。 在读取通道3示例之后, 接下来的三个虚拟字节 将得到CRC字节。 CRC字是24位。 但是,请注意,实际的CRC 只有16位,它们被放在 24位单词中最重要的位中。 因此,在解析CRC字时, 不需要最后一个字节。 不过请注意,对于 正确的ADS131ML4操作, 这个零模式字节的哑字节 仍然必须发送。 ADS131ML4发送的包中的 最后一个字节 是CRC字节。 CRC可用于验证 从ADS131ML4发送的数据 是否已被MSP432正确接收。 ADS131ML4支持两种类型的 CRC计算。 对于本设计,使用 CRC16-CCITT CRC选项, 因为我们可以使用 MSP432 CRC模块 加速这些计算, 因为MSP42 CRC模块 专门使用CRC类型。 对于这种CRC类型, CRC是基于使用 这里显示的多项式 对ADS131ML4 进行多项式除法得到的。 当DMA从ADS131ML4接收到 一个完整的数据包时, DMA ISR将被自动调用。 在ISR中,CRC 通过五个命令和ADC单词计算, 总共15个字节。 该CRC计算使用 MSP432微控制器的CRC模块。 由于CRC模块使用偶数个字节, 但是总共有15个字节可用, 所以前14个字节使用CRC模块。 最后的CRC由软件 根据CRC模块的结果 和第15个字节计算得到。 注意,软件CRC 对最后一个字节的计算 是必要的,因为在本设计中, 字长可能是三个字节。 如果单词大小被选择为2字节, 或者改为4字节,则不需要 软件CRC计算,因为将有 偶数个字节。 下面的代码片段使用 MSP432 CRC模块和软件 计算15字节以上的CRC。 在这个代码片段中, 您可以看到 MSP432上的CRC模块 首先被初始化。 然后将ML4数据包 一次两个字节地输入到 MSP432 CRC模块, 直到输入了前14个字节为止。 然后将ML4包的第15个字节 和前14个字节的CRC结果 输入软件算法, 该算法由一个 MSP432 CRC代码示例获得, 计算最终的CRC。 在包上计算CRC之后, 将它与ML4发送的包中 获得的CRC进行比较。 发送的CRC从ML4包的字节16 和字节17解析出来。 如果计算的CRC 与解析的CRC相等, 则通过CRC校验, 解析ADC数据, 得到N-1电压 和电流样本值。 解析后的电压和电流样本 被放入临时缓冲器中, 以便下次在下一次中断时 调用解析后的样本DSP函数时 使用它们。 在DMA中断结束之前, 芯片选择行 再次被拉回高位, 这样我们就可以 在下一次正确地与ML4通信了。
[音乐播放]
在本视频中,在使用 独立ADC部分的
培训系列分相电能表
设计软件中,
我们讨论了初始化ADS131ML4,
从设备中获取样本,
并通过计算CRC校验
来验证样本的完整性的过程。
在左边,我们看到用于
初始化ADS131ML4的进程。
当MSP432单片机复位后,
第一次设置ADS131ML4时,
以及每次执行校准时, 都会执行此过程。
在设置ADS131ML4设备之前,
禁用了ML4的调制器时钟,
以防止ML4在尝试设置它时
生成新的样本。
调制器时钟是通过
禁用MSP432单片机上的 SM时钟输出来禁用的,
它被输入到引脚时钟 ADS131ML4上。
禁用SM时钟输出只需要
在校准后执行,
而不需要在MSP432微控制器 设置事件后执行,
因为在MSP432微控制器重置后,
SM时钟输出将自动不输出。
禁用SM时钟输出后,
将MSP432单片机的 eUSCI B0 SPI模块
配置为与ADS131ML4设备通信。
eUSCI B0 SPI模块专门配置为
掩模设备,使用三线模式,
在该测试软件中 手动插入芯片选择信号,
而不是使用间谍模块的芯片
选择功能。
此外,SPI时钟据说是8.192兆赫,
这是从8.192兆赫SM时钟
派生出来的。
SPI设置好后,禁用所有中断,
并使用SPI将复位命令
从MSP432微控制器 发送到ADS131ML4。
然后重新启用中断,
MSP432微控制器向ADS131ML4 发送命令来配置其寄存器。
此时,请注意调制时钟尚未
由MSP432微控制器输出,
这意味着采样尚未开始。
通过使用SPI 向ADS131ML4发送命令,
配置了ADS131ML4寄存器,
特别是针对所选CRC的 16位CCITT CRC选项,
将字大小设置为24位。
当没有新的ADC样本时, DRDY被设置为高值,
当ADC样本准备好时, DRDY被设置为低值。
此外,PGA增益被设置为 所有通道的增益之一。
此外,禁用当前检测模式。
对于这些设计, 相位增益校准寄存器没有使用,
因为这是在软件中完成的。
然而,ADC有能力做增益校准,
相位校准作为
条件选项。
最后,该设备的OSR配置为512。
启用所有通道,选择
高分辨率调制功率模式。
在正确初始化 ADS131ML4寄存器后,
将MSP432微控制器配置为
在D级引脚上发生跌落边缘时 产生较差的中断,
这表明ADS131ML4具有
新的电流样本电压可以使用。
接下来,MSP432单片机 将SM时钟
输出到ADS131ML4,开始电压
和电流采样过程。
顶部的图片显示了
采样电压和电流时 发生的不同事件。
在顶部的图片中,绿色的项目
是由硬件设置
自动完成的项目。
为了复习图中所示的过程,
每一个新的样品 都准备好了有效的OSR,
即512为本设计的调制时钟周期。
一旦新的样品准备好,
DRDY引脚被ADS131ML4 插入低电平。
ADS131ML4上的DRDY引脚 导致GPIO端口中断,
从而触发MSP432上的端口ISR。
在ISR端口内,将ADS131ML4芯片
选择行插入到较低的位置, 以便与设备通信。
然后,DMA被设置为自动发送
对ADS131ML4最新样本,
N-1样本的请求,并接收
来自ADS131ML4的数据包响应。
对电流和电压样本的请求
和接收由DMA模块自动完成。
在接收来自ML4的最新电压
和电流样本的同时,
对之前的样本,
即从ADS131ML4获得的 N-2减去2个样本,
进行单样本处理。
ADS131ML4目前正在采集
下一个电压和电流样本,
也就是第N个样本。
这种逐样处理用于
更新计算计量参数的
中间点积
数量。
当DMA从ML4获得整个N-1包时,
DMA ISR将被自动调用。
在DMA ISR中, 如果CRC检查通过,
则解析N-1包,以便
在下一次调用每个样本TSP时,
将其用于电压和电流样本。
对于每个电压和电流样本,
都要遵循这个过程。
下图显示了
由MSP432微控制器的DMA 传输的数据包,
以及由DMA接收 并采样的ADS131ML4的
响应数据包。
传输和接收包
包含六个单词,每个单词 有三个字节长。
当为ADS131ML4设备 请求ADC数据时,
必须发送到 ADS131ML4的第一个单词
是命令单词。
由于测试软件不需要 更改ML4的设置,
也不需要在典型的ADC样本
读取期间读取任何寄存器,
并且没有任何命令 被发送到ML4,
这允许您 在不改变设备状态的情况下
从ML4获得ADC样本,
命令的实际大小为16位。
但是,由于使用了24位, 所以16位命令
必须在包的末尾填充一个
额外的值0x00。
因此,No命令将发送 一个值0x000000。
当MSP432微控制器 移出命令字时,
MSP432同时将响应
字移到前一个包的
命令字。
No命令的响应字
是状态寄存器的内容。
在设计中不使用 状态寄存器的内容,
因此将忽略从ADS131ML4 接收到的第一个单词。
在编写命令字之后,
需要对要读取的每个字节
执行虚拟写入。
虚拟写人是启用SPI时钟 所必需的,
SPI时钟是从ADS131ML4设备 读取字节所必需的。
对于每个W字节的写入,
都将一个值0x00 写入SPI传输寄存器。
在写入命令字节之后,
立即写入3个虚拟字节, 允许MSP432微控制器
从ML4的通道0 接收3字节ADC值。
接下来的9个伪字节分别获得
通道1、通道2和通道3的 ADC数据。
在读取通道3示例之后,
接下来的三个虚拟字节 将得到CRC字节。
CRC字是24位。
但是,请注意,实际的CRC
只有16位,它们被放在
24位单词中最重要的位中。
因此,在解析CRC字时,
不需要最后一个字节。
不过请注意,对于 正确的ADS131ML4操作,
这个零模式字节的哑字节 仍然必须发送。
ADS131ML4发送的包中的 最后一个字节
是CRC字节。
CRC可用于验证
从ADS131ML4发送的数据
是否已被MSP432正确接收。
ADS131ML4支持两种类型的
CRC计算。
对于本设计,使用 CRC16-CCITT CRC选项,
因为我们可以使用 MSP432 CRC模块
加速这些计算, 因为MSP42 CRC模块
专门使用CRC类型。
对于这种CRC类型,
CRC是基于使用 这里显示的多项式
对ADS131ML4 进行多项式除法得到的。
当DMA从ADS131ML4接收到
一个完整的数据包时, DMA ISR将被自动调用。
在ISR中,CRC
通过五个命令和ADC单词计算, 总共15个字节。
该CRC计算使用
MSP432微控制器的CRC模块。
由于CRC模块使用偶数个字节,
但是总共有15个字节可用,
所以前14个字节使用CRC模块。
最后的CRC由软件
根据CRC模块的结果 和第15个字节计算得到。
注意,软件CRC 对最后一个字节的计算
是必要的,因为在本设计中,
字长可能是三个字节。
如果单词大小被选择为2字节,
或者改为4字节,则不需要
软件CRC计算,因为将有
偶数个字节。
下面的代码片段使用
MSP432 CRC模块和软件
计算15字节以上的CRC。
在这个代码片段中, 您可以看到
MSP432上的CRC模块 首先被初始化。
然后将ML4数据包
一次两个字节地输入到 MSP432 CRC模块,
直到输入了前14个字节为止。
然后将ML4包的第15个字节
和前14个字节的CRC结果 输入软件算法,
该算法由一个 MSP432 CRC代码示例获得,
计算最终的CRC。
在包上计算CRC之后,
将它与ML4发送的包中
获得的CRC进行比较。
发送的CRC从ML4包的字节16
和字节17解析出来。
如果计算的CRC 与解析的CRC相等,
则通过CRC校验, 解析ADC数据,
得到N-1电压
和电流样本值。
解析后的电压和电流样本
被放入临时缓冲器中,
以便下次在下一次中断时
调用解析后的样本DSP函数时 使用它们。
在DMA中断结束之前, 芯片选择行
再次被拉回高位, 这样我们就可以
在下一次正确地与ML4通信了。
视频报错
手机看
扫码用手机观看
收藏本课程
视频简介
4.1 获取和验证ADC样品的程序
所属课程:如何使用独立计量ADC设计高精度CT分相电表
发布时间:2019.08.07
视频集数:10
本节视频时长:00:12:04
本模块讨论了初始化ADS131M04,从器件获取样品以及验证通过计算CRC校验获得的样品的完整性的过程。  这是“如何使用独立计量ADC设计基于CT的高精度分相电表”培训系列中“使用独立ADC的分相电表设计软件”部分的两个模块中的第一个。
//=$v1;?>
//=$v['id']?>//=$v['down_category']?>//=$v['link']?>//=$v['is_dl']?>//=$v['link']?>//=$v['name']?>//=$v['name']?>
//=$v['id']?>//=$v['down_category']?>//=$v['path']?>//=$v['is_dl']?>//=$v['path']?>//=$v['name']?>//=$v['name']?>
////=count($lesson['bbsinfo'])?>
//=$elink?>//=$elink?>//=$tags[0]?>//=$tags[0]?>//=$elink?>//= $elink?>//=$tags[1]?>//=$tags[1]?>
//=$lesson['bbs'];?>
//=count($lesson['bbsinfo'])?>