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

+荐课 提问/讨论 评论 收藏
  • 本课程为精品课,您可以登录eeworld继续观看:
  • 4.1 获取和验证ADC采样的程序
  • 登录
[声效] 在本视频中,在培训系列的“使用独立 ADC的单相电表的设计软件”部分中, 我们讨论了初始化 ADS131M04,从器件 获取样品以及验证完整性的过程, 通过计算CRC校验获得的样本。 在左侧,我们看到用于 初始化ADS131M04的过程。 在MSP432微控制器复位后 首次设置ADS131M04时, 以及每次执行校准时, 都会执行此过程。 在设置ADS131M04器件之前, ADS131M04的调制时钟被禁用, 以防止该器件在尝试建立时产生新的采样。 通过保存MSP432微控制器的SMCLK 输出来禁用调制时钟, 该微控制器被馈送到ADS131M04的CLKIN引脚。 禁用SMCLK输出只需 在校准后完成, 而不是在MSP430微控制器 复位事件之后,因为SMSPK时钟 输出在MSP432微控制器复位后立即自动输出。 禁止SMCLK输出后, MSP432微控制器的B0 SPI模块配置 为与ADS131M04器件通信。 B0 SPI模块专门配置为使用 三线模式的屏蔽器件,其中芯片选择 信号在测试软件中 手动置为高电平和低电平, 而不是使用SPI模块的芯片选择功能。 基于8.192兆赫SMCLK 时钟驱动,SPI速度为8.192 兆赫。 SPI建立后,所有中断都被禁用, 并且使用SPI从MSP432微控制器向ADS131M04 发送复位命令。 然后重新使能中断, MSP432微控制器向ADS131M04发送命令以配置其寄存器。 此时,请注意MSP432微控制器 尚未输出调制时钟, 这意味着尚未开始采样。 通过SPI向ADS131M04发送命令, 可以配置ADS131M04寄存器。 具体而言,为CRC选择16位 CCITT CRC选项。 字大小设置为24位。 当新ADC采样不可用时,DRDY设置为高电平; 当ADC采样准备就绪时,DRDY设置为低电平。 此外,CT和电压通道的 PGA增益设置为1,分流通道的 PGA增益设置为32。 此外,如果器件进入待机模式 并在SYNC / RESET引脚上提供脉冲, 则使能电流检测模式。 对于此设计,不使用相位和增益校准寄存器, 因为这是在软件中完成的。 但是,ADS具有进行增益校准 和相位校准的能力。 最后,该设备被配置为512的OSR。 所有频道均已启用。 并选择高分辨率调制功率模式。 正确初始化ADS131M04寄存器后, MSP432微控制器配置为 在DRDY引脚发生下降沿时产生 端口中断,这表明ADS131M04 具有可用的新电压电流样本。 接下来,MSP432微控制器 将SMCLK时钟输出到ADS131M04,从而开始电压 和电流采样。 顶部的图片显示了采样电压 和电流时发生不同事件的时间。 在顶部的图片中,绿色项目是由 硬件设置自动 完成的项目。 为了完成图中所示的过程, 每个OSR有效的新样本就准备就绪, 或者对于这个设计,调制时钟周期为512。 一旦新样品准备就绪,ADS131M04 将DRDY引脚置为低电平。 ADS131M04上的DRDY引脚引起GPIO端口中断, 从而触发MSP432上的端口ISR。 在端口ISR内,ADS131M04的片选线 被置为低电平,以便与器件通信。 然后将DMA设置为自动 发送对ADS131M04的最新采样, 第n个减1采样的请求,并从ADS131M04 接收数据包响应。 DMA模块自动完成对电流 和电压采样的请求和接收。 与从每个样品的M04接收 最新电压电流样本并行地 对先前样本执行处理, 所述先前样本是从ADS131M04 获得的第n减去2个样本。 ADS131M04目前还在对 下一个电压电流样本进行采样, 这是第n个样本。 每个样本处理用于 更新用于计算 度量参数的 中间点积量。 只要DMA从M04获得了整个第n个减1的数据包, 就会自动调用DMA ISR。 在DMA ISR中,如果CRC校验通过, 则解析第n个减1分组, 以便下次调用样本DSP时 可以将其用于电压和电流样本。 对每个电压和电流样本遵循整个 过程。 下图显示了分组数据由MSP432 微控制器的DMA和来自 ADS131M04的响应数据包传输, 该数据由DMA接收和汇编。 发送和接收包 包含六个字,每个字长3个字节。 请求ADS131M04器件的ADC数据时, 必须发送到ADS131M04的 第一个字是命令字。 由于测试软件不需要在典型ADC采样读数期间更改M04的设置或读取 任何寄存器, 并且将空命令 发送到M04, 这允许您从M04获取ADC采样 而不更改状态设备。 null命令的实际大小是16位。 但是,由于使用了24位, 因此必须在数据包末尾使用额外值 0x00填充16位命令。 因此,null命令将发送值0x000000。 当MSP432微控制器移出命令字时, MSP432同时将响应字 移入前一个数据包的 命令字。 空命令的响应字 是状态寄存器的内容。 设计中未使用状态 寄存器的内容。 因此,忽略从ADS131M04收到的第一个字。 在写入命令字之后, 需要为要读取的每个字节 形成伪写入。 虚拟字节写操作是启用 SPI时钟所必需的,这是从ADS131M04器件 读取字节所必需的。 对于每个虚拟字节写入,将值0x00 写入SPI发送寄存器。 写入命令字节后立即写入3, 然后写入允许MSP432微控制器 从M04的通道0接收3字节ADC值。 写下接下来的9个虚拟字节 分别获得通道1,通道2和通道3的ADC数据。 在读取通道三样本后, 写下三个虚拟字节得到CRC字。 CRC字是24位。 但请注意,实际CRC仅 为16位,它们位于 24位字的最高有效位中。 结果,在解析CRC字时, 不需要最后一个字节。 但请注意,为了正确的ADS131M04操作, 仍必须发送此0填充字节的虚拟字节。 ADS131M04发送的数据包中的 最后一个字是CRC字。 CRC可用于验证MSP432是否正确 接收了ADS131M04发送的 数据。 ADS131M04支持两种类型的 CRC计算。 对于此设计,使用CRC15-CCITT CRC 选项是因为我们可以使用 MSP432的CRC模块加速这些计算, 因为MSP432的CRC模块专门使用CRC类型。 对于该CRC类型, 使用此处所示的多项式, 基于ADS131M04分组的多项式除法的 余数来获得CRC。 只要DMA从ADS131M04接收到 整个数据包,就会自动调用DMA ISR。 在ISR内,CRC是根据五个命令 和ADC字计算的;总共15个字节。 该CRC计算使用MSP432 微控制器的CRC模块。 由于CRC模块使用偶数个字节, 但总共有15个字节可用, 因此CRC模块用于前14个字节。 最终CRC是根据CRC模块结果 和第15个字节计算的软件。 请注意,仅在最后一个字节上 进行软件CRC计算是必要的,因为在本设计中 字长被选择为3个字节。 如果字大小被选择为2字节或4字节, 则不需要软件CRC计算, 因为将存在偶数个字节。 底部的代码片段用于 通过使用MSP432 CRC模块和软件计算15字节 以上的CRC。 在代码段中,您可以看到MSP432上的CRC模块 首先被初始化。 然后,M04数据包一次送入MSP432的CRC 模块2个字节,直到输入前14个字节为止。 然后将来自M04分组的第15个字节 和来自前14个字节的CRC结果馈送到软件算法, 该算法从MSP432 CRC码示例获得 以计算最终CRC。 一旦通过分组计算了CRC, 就将其与从M04发送的分组中获得的 CRC进行比较。 从M04分组的字节16和17解析 发送的CRC。 如果计算的CRC和解析的CRC相等, 则CRC校验通过, 并且解析ADC数据以获得第n个减1 电压和电流样本的值。 解析后的电压和电流样本 放入临时缓冲区,以便下次 调用解析样本DSP函数和下一个 中断时使用它们。 在DMA中断结束之前,芯片选择线 再次拉高,这样我们可以在下次
课程介绍 共计10课时,1小时35分59秒

如何使用独立计量 ADC 设计单相分流电表

ADC 电表 分流 独立计量 单相

提供有关分流器和电流互感器特性的详细信息。 讨论了三种不同的架构,用于检测用于计算计量参数的电压和电流样本。 讨论了TIDA-010036参考设计中ADS131M04独立ADC和MSP432计量/主机微控制器的功能。 概述了TIDA-010036参考设计。 讨论了TIDA-010036参考设计中使用的电路,用于将电源电压和电流转换为馈入ADS131M04的电压波形。 讨论了使用TPS7A78交流电压定期实现降压电源的优势。 讨论初始化ADS131M04,从器件获取样本以及计算CRC以检查数据包完整性的过程。 讨论了可用于根据ADS131M04的检测电压和电流样本计算计量参数的算法。 概述了ADS131M04的电流检测模式,用于检测从仪表中移除中性线连接。 显示ADS131M04电流检测模式的电流消耗结果。


展开

推荐帖子

求一个430F169与PCF8563的I2C硬件通讯例程
想求一个430硬件I2C与PCF8563的通讯例程,我目前用的是169芯片,始终没有调试出来,试了中断写与查询写,但都有些问题,还望有用过的朋友发一个看看,谢谢了。 在时钟配置的时候,数据经过bcd转换,比如说我秒设置30分,数组里面写的是0x1e,然后运行hex转bcd程序,观看这个数据变成了0x30,不知道是否正确。 另外在数据读取中,读出来的数据都不对,设定读7个数据,到是有7个数据读出...
zh2244ou 微控制器 MCU
求助 MSP430中for语句一个循环的时间是多久
是主时钟的时间吗? 贴一下代码 #pragma vector=PORT1_VECTOR __interrupt void Port_1 (void) {   for(p=40960;p>0;p--)//红灯常亮     P2OUT=0x6F;   P1IFG=0X00; } 意思就是按一下按键开始倒数10秒,然后一个LE...
zbnzbnzbnz 微控制器 MCU
关于CC2650芯片修改频率偏移的问题
请问CC2650是否可以通过修改寄存器的值来实现载波频率的偏移呢?cc2400是可以修改MDMCTRL寄存器实现修改频率偏移量,不知道cc2650是否也可以。求助各位大佬,谢谢! ...
SUNYOU 无线连接
用msp430g2553+HD16210驱动液晶显示+DS18B20温度传感器 =做超低功数字式耗温度计...
用msp430g2553+HD16210驱动液晶显示+DS18B20温度传感器  =做超低功数字式耗温度计,就是去年的电子科技大赛题目,四天了,做出来了   嘎嘎...
bugg 微控制器 MCU

wudianjun2001

学习了,呵呵。不错,涨知识了!

2020年03月14日 15:51:03

lai28450748

学习了

2019年10月18日 11:35:42

zly1986ZLY

学习了,呵呵。不错,涨知识了!

2019年09月13日 17:36:24

jpf

学习到了,希望多出一点这样的视频~

2019年09月10日 16:39:51

zwei9

学习学习

2019年09月05日 00:53:39

大明58

如何使用独立计量 ADC 设计单相分流电表

2019年08月30日 10:50:17

steven0143

學習了,相當精彩的說明與介紹~

2019年08月29日 14:15:21

zx1988ZX

精彩的讲座,学习了!

2019年08月17日 20:38:26

SensorYoung

学习如何使用独立计量 ADC 设计单相分流电表

2019年08月06日 15:59:02

hellokt43

学习如何使用独立计量 ADC 设计单相分流电表

2019年08月02日 09:26:49

分享到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-2023 EEWORLD.com.cn, Inc. All rights reserved