首 页 行业热点 新车 试驾评测 养车用车 车型库
当前位置:首页基于STM32和LTC1859的数据采集系统

基于STM32和LTC1859的数据采集系统

2023-05-14 来源:好土汽车网
导读 基于STM32和LTC1859的数据采集系统
责任编辑:毛烁

基于STM32和LTC1859的数据采集系统Data collection system based on STM32 and LTC1859

崔海朋

(青岛杰瑞工控技术有限公司,山东 青岛 266071)

摘 要:现在很多采集系统要求较高的精度,而且信号形式、范围也有所不同,处理电路比较复杂,硬件成本高。为了解决该问题,设计了基于STM32和LTC1859的16位高精度数据采集系统,详细介绍了软硬件设计。此系统不仅可以实现8路电流信号的单端输入,也可以实现8路电压信号的单端输入,成本低,精度高。关键词:数据采集;Cortex-M3;LTC1859

0 引言

现在很多数据采集系统要求较高的精度,同时要求可以适应不同的信号形式,例如可以连接电流信号、电压信号,信号的范围也不同,常规的方法是采用复杂的电路处理再进行数据采集,这样不仅增加了硬件成本,还降低了系统精度。本系统设计的基于Cortex-M3处理器和 LTC1859的 16位高精度数据采集系统,不仅可以实现8路的电流信号的输入,还可以实现8路电压信号的输入,对输入信号的范围可以通过软件来设置,同时AD采集电路与Cortex-M3处理器采用了电源隔离和信号隔离,提高了系统的可靠性。

LTC1859是ADI公司推出的一款高性能的具停机功能的8通道、 16位、100 ksps的 AD转换器,每个通道可通过软件实现 0~5 V,0~10 V,0~±5 V,0~± 10V的不同范围的输入电压,同时还可以实现单输入和差分信号输入的选择,每个通道可承受至±25 V的故障保护。LTC1859的多路复用器可以配置为接受 4个差分输入、8个单端输入、或差分与单端输入的组合。该器件提供了卓越的DC性能,具有在整个温度范围内的15位

无漏失码和±3 LSB MAX INL。LTC1859与控制器之间采用SPI总线进行通信。LTC1859用单5 V电源工作,同时仅消耗40 mW功率。LTC1859还具有温度系数为±1.0×10-/℃的 2.5 V内部基准,如果需要较高的准确度,还可以从外部驱动。对于那些对功耗敏感的应用,LTC1859提供了两种断电模式:打盹模式和休眠模式。

本系统的 Cortex-M3处理器为意法半导体公司推出的32位RISC处理器STM32F103VCT6,主频最高可达72 MHz。该处理器具有256 kB的程序存储器,48 kB的RAM,同时它有8个定时器、5路串口、3路SPI、2

2

路IC,具有独立看门狗和窗口看门狗,非常适合于与

5

LTC1859构成高精度的数据采集和控制系统。

1 硬件系统设计

本系统设计了由 2片LM324运放和1片 LTC1859构成 8通道的单端信号输入。每片LM324含有4个运放,2片LM324构成了8路信号调理电路,其中电阻实现电流信号到电压信号的转换,当连接电压信号时,该电阻不连接。LM324为电压跟随器电路,这里不再详述。

作者简介:

崔海朋(1982-),男(汉),山东人,硕士,主要从事嵌入式系统研究、工业自动化系统设计。

www.eepw.com.cn 2020.343Copyright©博看网 www.bookan.com.cn. All Rights Reserved.D分析。

esign & Application设计应用

LTC1859的电路如图1所示。本电路具有通用性,在实际应用中性能稳定,效果很好。下面对电路进行详细

LTC1859引脚中CH0~CH7是8路模拟输入通道,

LTC1859的输出功能。CONVST为启动转换引脚。其它引脚分别接电源、数字地、模拟地,在布线时注意数字地和模拟地的分开,几个电容推荐采用钽电容,这样可以提高系统的精度。

在本系统中构成了8路单端输入信号。 MUXOUT+、MUXOUT-为模拟复用器的正负输出,把它们连在ADC+、ADC-上进行正常操作。BUSY为输出转换器的状态,当正在转换中为低,转换结束变高,连在ARM处理器的I/O口上,SDO为SPI总线的串行数据输出,接在Cortex-M3处理器的SPI接口的MISO引脚上,SDI为SPI总线的串行数据输入,接在Cortex-M3处理器的SPI接口的MOSI引脚上,SCK为SPI总线的时钟,接在Cortex-M3处理器的SPICLK上。RD为引脚SDO数字输出的能使信号,当RD为低能使输出,当RD为高SDO为高阻抗。在本系统中,该引脚连接至地,一直使能

2 隔离电路设计

为了提高系统的可靠性,本系统设计了电源隔离和SPI总线隔离电路,使LTC1859采集电路与Cortex-M3处理器电气完全隔离,外部输入信号不会影响到处理器电路的运行,大大提高了系统的可靠性。下面从2个方面来重点介绍。

2.1 电源隔离

LTC1859的供电采用DC/DC变换器实现电源与CPU电源的隔离。电源模块采用广州金升阳公司的B1212M-2M。B1212M-2M采用小型DIP封装,温度特

性好,隔离电压1 000 V DC。图2中12 V输出电压为前端信号调理电路中LM324芯片供电,后端电源采用了L7805CV稳压,为LTC1859供电。

2.2 SPI总线的

图 1 LTC1859采集电路图

隔离是非常关键的一部分

本系统采用了专用的SPI隔离芯片ADUM1411。它是ADI公司推出的四通道数字隔离芯片,单芯片可以替代4个光耦,

图2 电源隔离电路

44

ELECTRONIC ENGINEERING & PRODUCT WORLD 2020.3

Copyright©博看网 www.bookan.com.cn. All Rights Reserved.责任编辑:毛烁

采用芯片级脉冲变压器磁耦合技术,施密特触发器输入/输出,隔离电压2 500 V。与传统的光耦隔离相比,具有寿命长,节省PCB(印制板)面积等诸多优点。每个ADUM1411芯片含有3路数字输出和1路数字输入通道。由于LTC1859有5条控制线与Cortex-M3处理器进行通讯,因此本系统选用了2片ADUM1411实现与Cortex-M3处理器的完全隔离。电路如图3所示。

上电模式,不进入打盹和休眠模式。

3.2 Cortex-M3处理器SPI接口配置

Cortex-M3处理器的SPI接收设置为全双工主模式。为了一次可以读取到LTC1859转换后的16位的结果,SPI接收设置为16位模式。禁止软件NSS功能,SPI的速率默认设置为256分频后的速率,实际应用可以根据需要进行更改。初始化代码如下:

void SPI1_Configuration(void){

SPI_InitTypeDef SPI_InitStructure;

SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //全双工

SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //主模式

SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;//16bit模式

SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; //空闲时为低电平

SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; //上升沿无延迟模式

SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; //禁止软件NSS功能

SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; //SPI速率设置

SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //高位先发

SPI_Init(SPI1, &SPI_InitStructure);SPI_Cmd(SPI1, ENABLE);}

图3 SPI总线隔离电路

3 软件设计

系统采用SPI总线通信,软件的关键是Cortex-M3处理器和LTC1859之间的时序匹配,下面详细介绍。

3.1 LTC1859软件配置

LTC1859是在SCK的下降沿传输,上升沿被捕获,这就要求Cortex-M3处理器在进行SPI初始化时采用上升沿无延时模式。8位的控制字通过SDI输入,用于配置LTC1859以进行下一个转换,同时前一个转换输出在SDO上输出,在数据交换的末端,在CONVST上施加1个上升沿启动被请求的转换。转换完成后,转换结果将在下1个数据传送周期提供。LTC1859的8位命令控制字在首8个SCK的上升沿按时间顺序记录到SDI输入中,SDI随后的输入的位被忽略。8位的控制字含有对通道地址、信号输入范围和断电模式的控制,具体内容参见手册,这里不再赘述。本系统中配置为8通道单端输入方式,信号输入范围默认配置为0~5 V,断电模式设置为

3.3 模数转换采集

下面详细介绍软件编写,SPI总线的时钟很快,既可以采用中断方式,也可以采用查询方式。本系统采用查询方式,其软件流程如图 4所示。

www.eepw.com.cn 2020.345Copyright©博看网 www.bookan.com.cn. All Rights Reserved.Design & Application设计应用

置低

控制字

图4 采集流程图

GPIO_SetBits(GPIOA, GPIO_Pin_4); //convst delay40ns(); delay40ns();

GPIO_ResetBits(GPIOA, GPIO_Pin_4);//将while(GPIO_ReadInputDataBit(GPIOC, GPIO_delay40ns(); delay40ns();

while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_SPI_I2S_SendData(SPI1,control_code); //发送while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_temp_value = SPI_I2S_ReceiveData(SPI1); //return temp_value;

//数据返回

//延迟

//延迟

置高启动一个转换

convst拉低

Pin_4)==0x00); //等待busy变高

FLAG_TXE) == RESET); //等待发送缓冲器为空

FLAG_RXNE) == RESET);//等待接收缓冲器变非空读取数据

}

程序源代码及其详细注释如下,该函数的入口参数为通道号,即为0~7,函数根据通道号读取该通道的数据,同时将该数据值返回,其中部分函数为STM32的库函数,这里不再详细讲述。

u16 ReadADC1859(u16 channel) { 控制字

while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_temp_value = SPI_I2S_ReceiveData(SPI1); //GPIO_ResetBits(GPIOA, GPIO_Pin_4);//convst

FLAG_RXNE) == RESET);//等待接收缓冲器变非空读取数据

u16 control_code;

control_code=Get_Control_Code(channel);//根while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_

4 结论

本系统成功实现了基于STM32处理器和LTC1859的16位高精度数据采集系统,给出了全新实用的硬件和软件设计,适用于不同信号类型和电压范围变化较大的数据采集系统。该系统精度高,成本低,可靠性高,具有一定的应用推广价值。

参考文献:

[1] LTC1857/LTC1858/LTC1859 DataSheet[EB]. Linear Corp, 2004.

[2] 李军民,祝红军,王瑞.基于DSP和LTC1859数据采集系统设计[J].微计算机信息,2010,26(02):115-117.

[3] 陈东升,高俊侠,胡科堂.基于STM32的远程温控系统设计[J].电子产品世界,2011(5):30-32.

[4] 王永虹,徐炜,郝立平.STM32系列ARM Cortex-M3微控制器原理及实践[M].北京:北京航空航天大学出版社,2008.

据通道计算控制字

FLAG_TXE) == RESET); //等待发送缓冲器为空

SPI_I2S_SendData(SPI1,control_code); //发送

46

ELECTRONIC ENGINEERING & PRODUCT WORLD 2020.3

Copyright©博看网 www.bookan.com.cn. All Rights Reserved.

因篇幅问题不能全部显示,请点此查看更多更全内容