4.1 获取和验证ADC样品的程序

+荐课 提问/讨论 评论 收藏
  • 本课程为精品课,您可以登录eeworld继续观看:
  • 4.1 获取和验证ADC样品的程序
  • 登录
[音乐播放] 在本视频中,在使用独立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的 将字大小设置为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中断结束之前,芯片选择行 再次被拉回高位,这样我们就可以
课程介绍 共计10课时,1小时18分49秒

如何使用独立计量 ADC 设计高精度 CT 分相电表

ADC 高精度 电表 计量 CT 分相

提供有关分流器和电流互感器特性的详细信息。 讨论了三种不同的架构,用于检测用于计算计量参数的电压和电流样本。 讨论了TIDA-010037参考设计中ADS131M04独立ADC和MSP432计量/主机微控制器的功能。 概述了TIDA-010037参考设计。 简要讨论了TIDA-010037中用于提供具有过压和欠压保护的限流轨的电路。 讨论了TIDA-010037参考设计中使用的电路,用于将电源电压和电流转换为ADS131M04检测到的电压范围。

推荐帖子

MSP430Ware的问题
   为什么MSP430Ware的Driver Liberary下的“MSP430F5xx_6xx”系列里,在导入“FLASHCTL”的example project时,是空的!!    其它的example project都能正常导入! ...
darkduck 微控制器 MCU
如何在ti公司f28m35双核芯片flash中用can通信烧写应用程序
如何在ti公司f28m35双核芯片flash中用can通信烧写应用程序,有这方面经验的朋友, 请介绍如何实现把应用程序通过can通信发到操作器的eeprom保存,然后也可用can通 信把操作器保存的应用程序数据通过can通信发到f28m35的flash保存,并可上电后boot执 行该刚保存到flash的应用程序。 ...
kkkbbb888 DSP 与 ARM 处理器
驱动以及下载
刚到手的套件msp430f5529lp和tm4c123g,驱动就有问题!怎么解决,解决了怎么下程序,用什么软件可以对这两个都下的好程序...
ywlzh 微控制器 MCU
MSP430F2274 CC2500 两块无线传输模块 回传问题
使用的是IAR 动作如下: 从计算机端发送,电池模块LED灯亮 接着电池模块回传,计算机端LED灯亮 结果没回传到计算机端, 请大神看看 ! 计算机传送端 代码如下: //--------------------------------------------------------------------------- ...
yu83717 无线连接

推荐文章

X射线应用中的ADC前端优化方案 2025年03月28日
“大包小包过安检!”,深情一眼,工业 X 射线轻松“看透”每一个人。 “一眼万年”,全面又犀利,客观且残酷。爱人的眼神可能会骗你,但 MDC91128 捕捉的 X 射线图像不会! 那么,在科学意义上,这种“一眼万年”究竟是怎么实现的? X 射线扫描系统 工业 X 射线是一种无损检测方法,广泛应用于医疗、食品检验、射线照相和安全行业,它可以提供精确的材料尺寸与类型的二维读数...
高速ADC原理及测试方法,读这一篇就够了 2025年03月28日
ADC(Analog-to-Digital Converter 模拟数字转换器)。通常来说, 自然界产生的信号,其实都是模拟信号,像我们说话的声音,看到的图像,感受到的温度等等。 但是这些模拟信号在电子产品中最终都得以数字信号的方式进行处理,存储或者传输,那如何把模拟信号转换成数字信号呢?所以,我们就需要模数转换器ADC了。 DAC(Digital-to-Analog...
GD32F407标准库IAR环境 DMA+ADC+中断 2025年03月07日
近期由于公司要求更改使用GD32做项目,究其原因也就不多说了。自己之前一直使用KEIL+cubeMX做STM32做开发,STM32的标准库基本都没有怎么用过,突然要改到使用GD的标准库来开发,所以在开发过程中遇到了不少的问题。作为记录供参考吧。 首先为自己做个辩解:项目进展是其一,再加上自己也想快速 的完成项目,所以都是看网上的例程或者他的经验来写自己的驱动程序部分。...
4.stm32 ADC与DAC 2025年03月05日
C语言基础知识 1.sprintf() C 库函数 int sprintf(char *str, const char *format, ...) 发送格式化输出到 str 所指向的字符串。 str -- 这是指向一个字符数组的指针,该数组存储了 C 字符串。 format -- 这是字符串,包含了要被写入到字符串 str 的文本。它可以包含嵌入的 format 标签,for...
分享到X
微博
QQ
QQ空间
微信

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新文章 手机版

站点相关: EEWORLD首页 EE大学堂 论坛 下载中心 Datasheet 活动专区 博客

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved