崔海朋 (青岛杰瑞工控技能有限公司,山东 青岛 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-5/℃的 2.5 V内部基准,假如需求较高的精确 度,还能够从外部驱动。关于那些对功耗灵敏的使用, LTC1859供给了两种断电形式:打盹形式和休眠形式。
本体系的 Cortex-M3处理器为意法半导体公司推 出的32位RISC处理器STM32F103VCT6,主频最高可 达72 MHz。该处理器具有256 kB的程序存储器,48 kB 的RAM,一起它有8个定时器、5路串口、3路SPI、2 路I2C,具有独立看门狗和窗口看门狗,十分适合于与 LTC1859构成高精度的数据收集和操控体系。
1 硬件体系规划
本体系规划了由 2片LM324运放和1片 LTC1859构 成 8通道的单端信号输入。每片LM324含有4个运放,2 片LM324构成了8路信号调度电路,其间电阻完成电流 信号到电压信号的转化,当衔接电压信号时,该电阻 不衔接。LM324为电压跟从器电路,这儿不再胪陈。LTC1859的电路如图1所示。本电路具有通用性,在实 际使用中功用安稳,作用很好。下面临电路进行具体 剖析。
LTC1859引脚中CH0~CH7是8路模仿输入通道, 在本体系中构成了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 为高阻抗。在本体系中,该引脚衔接至地,一向使能
LTC1859的输出功用。CONVST为发动转化引脚。其它 引脚别离接电源、数字地、模仿地,在布线时留意数字 地和模仿地的分隔,几个电容引荐选用钽电容,这样可 以进步体系的精度。
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总线的 阻隔是十分关 键的一部分
本体系采 用了专用的 SPI阻隔芯片 ADUM1411。 它是ADI公司推 出的四通道数 字阻隔芯片, 单芯片能够替 代 4 个光耦,选用芯片级脉冲变压器磁耦合技能,施密特触发器输 入/输出,阻隔电压2 500 V。与传统的光耦阻隔比较, 具有寿命长,节约PCB(印制板)面积等许多长处。 每个ADUM1411芯片含有3路数字输出和1路数字输入 通道。因为LTC1859有5条操控线与Cortex-M3处理器 进行通讯,因而本体系选用了2片ADUM1411完成与 Cortex-M3处理器的彻底阻隔。电路如图3所示。
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.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.3 模数转化收集
下面具体介绍软件编写,SPI总线的时钟很快,既 能够选用中止方法,也能够选用查询方法。本体系选用查询方法,其软件流程如图 4所示。
程序源代码及其具体注释如下,该函数的进口参数 为通道号,即为0~7,函数依据通道号读取该通道的数 据,一起将该数据值回来,其间部分函数为STM32的库 函数,这儿不再具体叙述。
u16 ReadADC1859(u16 channel)
{
u16 control_code;
control_code=Get_Control_Code(channel);//根 据通道核算操控字
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_ FLAG_TXE) == RESET); //等候发送缓冲器为空
SPI_I2S_SendData(SPI1,control_code); //发送 操控字
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_ FLAG_RXNE) == RESET);//等候接纳缓冲器变非空
temp_value = SPI_I2S_ReceiveData(SPI1); / / 读取数据
GPIO_ResetBits(GPIOA, GPIO_Pin_4);//convst 置低
GPIO_SetBits(GPIOA, GPIO_Pin_4); //convst 置高发动一个转化
delay40ns(); //推迟
delay40ns();
GPIO_ResetBits(GPIOA, GPIO_Pin_4);//将 convst拉低
while(GPIO_ReadInputDataBit(GPIOC, GPIO_ Pin_4)==0x00); //等候busy变高
delay40ns(); //推迟
delay40ns();
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_ FLAG_TXE) == RESET); //等候发送缓冲器为空
SPI_I2S_SendData(SPI1,control_code); //发送 操控字
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_ FLAG_RXNE) == RESET);//等候接纳缓冲器变非空
temp_value = SPI_I2S_ReceiveData(SPI1); / / 读取数据
return temp_value; //数据回来
}
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.
本文来源于科技期刊《电子产品世界》2020年第03期第43页,欢迎您写论文时引证,并注明出处。