如何对MAX22530/MAX22531/MAX22532 4通道隔离式ADC进行编程

max22530系列器件为4通道隔离式adc。4-模拟输入持续数字化,并支持使用内部数字比较器的通道输入阈值检测。
介绍
max22530系列器件(max22530/max22531/max22532)为电隔离、四通道、多路复用12位模数转换器(adc)。现场侧adc通过隔离式dc-dc转换器在内部供电,因此除了adc输入的模拟输入连接外,不需要额外的硬件开销。
该器件连续数字化现场侧的输入,并以每通道20ksps (典型值)的速度通过隔离栅传输数据。adc数据的每个通道均可通过串行外设接口(spi)获得。此外,该器件还提供现场侧诊断和滤波后的adc数据平均读数。
max22530、max22531和max22532功能相似。max22530具有spi,但没有数字比较器输出引脚。max22531具有用于adc1和adc2通道的数字比较器输出引脚,max22532具有用于所有四个adc通道的数字比较器输出引脚选项。
本应用笔记给出了简单且经过验证的解决方案的示例源代码,用于对max22530进行编程和接口(图1)。示例代码以 ansi-c 格式提供,易于移植到任何常见的微控制器。有关max22530/max22531/max22532引脚、工作模式和控制寄存器的详细信息,请参考max22530/max22531/max22532数据资料。
图1.max22530/max22531/max22532功能框图
图1所示为max22530系列的主要功能块,包括:
多路复用器不断从 ain1 切换到 ain4。
隔离式 dc-dc 转换器,为现场侧 adc 和 1.8v 基准供电。
逐次逼近寄存器 (sar) adc,具有内部生成的 1.8v 基准电压源。
跨现场和逻辑端的内部隔离。
带有spi端口的逻辑端接口,用于访问所有器件寄存器和硬件标志以进行诊断。
max22530 spi
max22530 spi命令的长度为24位(8位指令+16位数据),crc禁用,如果使能crc,则crc8将增加8位。命令字节的 6 msb 是寄存器地址位,后跟一个写入或读取位,以及一个突发位,用于执行突发读取操作。
禁用crc的spi命令结构如表1所示,启用crc的spi命令结构如表2所示。max22530的spi模式为cpol = 0 (clk空闲= 0),cpha = 0 (上升沿/第一沿对数据进行采样)。数据/命令需要首先以 msb 为单位计时。
表 1.max22530 spi命令结构,禁用crc
8 位 16 位
地址 控制 数据
6 位 a[5:0],
msb 至 lsb w/r
读取 = 0,写入 = 1 突发位
0 = 正常操作 1 = 突发读取操作
  数据 [15:0]
msb 到 lsb
表 2.max22530 spi命令结构,使能crc
8 位 16 位 8 位
地址 控制 数据 结直肠癌
6 位 a[5:0],
msb 至 lsb w/r
读取 = 0,写入 = 1 突发位
0 = 正常操作 1 = 突发读取操作
  数据 [15:0]
msb 到 lsb c [7:0]
msb 到 lsb
spi读写周期的完整细节以及寄存器表和指令可在max22530数据资料中找到。
max22530代码应用示例
max22530设计用于支持终端设备中的工业应用,如过程自动化和配电自动化,这些应用需要使用多通道隔离式adc进行连续监测。典型应用电路如图2所示。
图2.高压线路监控。
连接每个单独的输入(ain1 到 ain4)以监视现场侧的高压线,该线路使用电阻分压器衰减,以将模拟电压相对于现场接地保持在 1.8v 以内。除了从adc读取模拟电压外,max22530还为每个输入提供内部数字比较器,用于执行二进制输入操作。max22530的现场侧adc功能诊断和spi通信系统自诊断简化了系统设计和维护。
源代码
本应用笔记提供c源代码示例,提供基本的驱动功能,用于访问max22530中的多个寄存器,以实现配置、数据读取、控制和诊断功能。max22530、max22531和max22532在功能上等效,三款器件的c代码接口示例相同。所有软件均使用max22530评估板进行实现和测试。仅使用本文档中的功能作为参考,并根据应用程序中的微控制器和硬件实现设计自己的固件/软件。
初始化
该例程在初始化时运行,以识别max22530并执行应用中的初始配置。以下函数通过读取产品 id 寄存器来识别设备。成功识别后,内部数字比较器配置为给定设置和上限/下限阈值电平。
/***************************************************************************//** @brief example code for first time initialization of the device. @return status – max2253x status = 0; device not recognized/ unavailable max2253x status = 1; if device recognized after init() function when successfully recognized, configure registers *******************************************************************************/void initialize(){ uint8_t answer = max22530_init(); /* initializes and checks if the device is present*/ printf(max2253x status = ); printf(answer); /* answer: 1 when the device is initialized and the id is read and recognized */ if (answer == 1) { printf(device recognized. device configuration ongoing); // configuring the digital comparators /* digital input mode with unfiltered adc results, setting upper threshold to 50% of range * and lower threshold to 10% of range*/ max22530_write_register(couthi1,0x0800); max22530_write_register(coutlo1,0x019a); /* digital status mode with filtered adc results, setting upper threshold to 70% of range * and lower threshold set to 40%*/ max22530_write_register(couthi2,0xcb32); max22530_write_register(coutlo2,0x0667); /* writing default upper threshold values for couthi3 and couthi4 * in digital status mode and using default lower threshold values*/ max22530_write_register(couthi3,0x8b32); max22530_write_register(couthi3,0x8b32); }} 以下“test”函数演示了设备初始化后的设备读取寄存器。在此示例中,将打印寄存器读取数据。实际应用可能必须采取进一步措施,但这超出了本应用笔记的范围。
void test() { printf(couthi1: ); printf(max22530_read_register(couthi1)); printf(couthi2: ); printf(max22530_read_register(couthi2)); printf(couthi3: ); printf(max22530_read_register(couthi3)); printf(couthi4: ); printf(max22530_read_register(couthi4)); printf(coutlo1: ); printf(max22530_read_register(coutlo1)); printf(coutlo2: ); printf(max22530_read_register(coutlo2)); printf(coutlo3: ); printf(max22530_read_register(coutlo3)); printf(coutlo4: ); printf(max22530_read_register(coutlo4)); printf(adc1: ); printf(max22530_read_register(adc1)); printf(adc1 voltage: ); printf(convert_to_voltage(adc1)); printf(coutlo2 voltage: ); printf(convert_to_voltage(coutlo2)); max22530_burst_read_register(adc1); printf(burst_reg1); printf(burst_reg2); printf(burst_reg3); printf(burst_reg4); printf(burst_int_status); } 结论
本应用笔记介绍了如何对max22530进行编程,以读取/突发读取adc通道、配置寄存器和监视诊断。该代码使用max22530评估板进行测试。通过利用本应用笔记中的c代码示例,工程师可以快速轻松地实现常用微控制器与max22530之间的接口。


运动用什么蓝牙耳机好?2021年运动蓝牙耳机排行榜
FDA最新发布关于医疗磁共振安全的指南草案
利用GOOP编程技术的前熔断丝测试
安茂微电子推出600mA/1.5MHz 脉波宽度调变同步降压
博通将在加州裁减近1300名VMware员工
如何对MAX22530/MAX22531/MAX22532 4通道隔离式ADC进行编程
关于实现增强式eCall汽车设计,需要了解什么
全球5G商用提速,华为助力亚太运营商快速部署5G
变频器开关电源原理图
手机电池的几种充电方式
通用汽车成功展示了车辆转换为电动皮卡的可能性
苹果13上市苹果12降多少钱呢?
中国信息通信研究院迭代更新《新基建产品手册(2020版)》
购物选择困难症?Intel要让传感器帮你作决定
澳大利亚8.22亿元投建500MW太阳能+250MW电池储能项目
区块链币币交易平台开发数字资产场外交易系统搭建
mos管电流方向是单向
宁德时代与东风汽车达成合作协议 将合资电池公司建成投产
电动汽车无线功率传输(WPT-EV)的频率使用问题
英特尔与新华三共建网络朋友圈