文档介绍:基于 ARM 的传感器数据采集与网络传输系统设计
传感器数据采集、传输因微处理器的不同而方式各异,微处理器之间可采用串口、总线、无线等
方式实现数据传输.但微处理器与上位机的数据传输方式单一,大部分采用串口与上位机通信为 2,电桥的阻值为 120 Q.为提高传感器的灵敏度,电桥由 LM358
构成的恒流源提供 5 mA 电流,压力信号经过电路处理后可放大 2 178 倍.可以通过调节滑动变
阻器 RP 实现调零操作.压力检测所用的 A/D 芯片为 MAX147,它是具有 SPI 接口的 12 位串行 8
通道模数转换模块,可以与 ARM 的 SPI 接口相接.通过软件选择所需通道.为保证 A/D 转换模
块的工作精度,由 LM385 为 MAX147 提供 2.5 V 的参考电压.可以与 ARM 的 SPI 接口相接.通
过软件选择所需通道.为保证 A/D 转换模块的工作精度,由 LM385 为 MAX147 提供 2.5 V 的参
考电压.
2 采集系统软件设计
采集系统的软件部分包括 A/D 驱动部分和 TCP 程序部分.ARM 平台中位于用户空间的 TCP
程序可调用 A/D 驱动实现传感器数据采集.
2.1 驱动程序设计
Linux 设备驱动程序可分为字符流设备驱动程序,块设备驱动程序和网络设备驱动程
序.MAX147 的采集结果为 12 位的字符流设备,为实现在 Linux 环境下访问 MAX147,需要编写字
符流驱动函数.以下是 A/D 驱动的读写函数部分代码.
A/D 芯片 MAX147 的写参数函数为:
static ssize— t write(struct file *filp,const char_
user*buffer,size—
t
count,loff_t*offset)
{⋯
If(readb(rSPSTA)& C241o— SPSTA_READY)
{copy_from_user(~buff,buffer,1);
writeb(buff,rSPTDAT);
return count;)
⋯ )读函数为:
static ssize—
t read(struct file * flip,char— user * buffer, size—
t
count。lof_ t*offset)
{ ;
if(readb(rSPSTA)&$3C2410 一 SPSTA_ READY)
{writeb(OxO0,rSPTDAT); .
if(readb(rSPSTA)&$3C2410 一
SPSTA
_
READY)
{from_buff=readb(rSPRDAT);
copy_to_user(b