基于s3c2410和嵌入式Linux的D/A转换的实现
1 引言
在嵌入式应用系统中,特别是智能仪器、仪表、机电设备及装置控制中,需要使用A/D转换将模拟的电量信号转换为数字信号进行处理,而后再将处理的结果通过D/A转换为模拟量实现对被控过程和对象的控制[1]。
基于ARM920T内核的s3c2410是一款低功耗,高性价比的处理器[2]。这款处理器内部集成了多种控制接口,自带8路10位的A/D转换器[3],用于支持对于触摸屏输入的控制,而且足以满足外部模拟量采集的需要,但是s3c2410内部没有集成D/A转换器,因此在上述应用中,就需要采用独立的D/A转换芯片与s3c2410配合,满足应用的需要。而MAX504一款通用的10位串行D/A转换器,可以满足一般应用对于分辨率和精度的要求,并且采用串行通信,芯片面积小,占用的处理器管脚数少,因此本文中以s32410外接MAX504,并基于Linux操作系统,实现D/A转换的功能。
2 系统硬件电路
2.1 10位的D/A转换器MAX504[4]
MAX504是MAXIUM公司推出的低功耗,电压输出,10位串行数字/模拟转换芯片,支持+5V单供电和±5V双供电方式,并且该芯片对于包括偏移、增益和线性误差在内的各项误差均以调整,所以应用非常简单,不需要再度校正。
MAX504采用的是三线串行接口,与SPI,QSPI和Microwire标准均兼容。MAX504可通过写入两个8位长的数据进行编程,其写入的先后顺序为,4个填充位,10个数据位和最低两位的0。此处,最高4位的填充位只有当MAX504采用菊花链方式连接时必须写入,而最低的两位0则一定需要写入。当且仅当CS片选有效时,数据在SCLK的上升沿逐位打入片内的16位移位寄存器,并在CS上升沿,将有效的10位数据(第2~第11位)传送到D/A转换寄存器中,修改原寄存器内容。
MAX504芯片为14管脚的DIP或者SO封装形式,除电源和地管脚外,管脚可以分为两组,一组与处理器相连接,另一组管脚的不同连接可以改变MAX504的工作模式。
MAX504具有三种工作模式,分别是单极性输出,双极性输出和四象限乘法器。通过将MAX504的REIN,VOUT ,BIPOFF和RFB几个管脚的不同连接方式,可以根据需要将MAX504定义为需要的工作模式。
2.2 MAX504与S3c2410的连接
MAX504与处理器之间可以使用SPI,QSPI和Microwire中的任何一种串行通信方式,而s3c2410带有两个SPI接口,所以MAX504与s32410之间通过SPI进行连接非常方便。电路如图所示
图2.1 电路连接原理图
MAX504与处理器连接的主要管脚有四个,分别是:
(1) DIN—数据输入端,该管脚用于接收串行通
相关文档:
Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......
最近在用C++编写一个RTSP的客户端,由于要用到线程,根据C编程的经验,写了如下代码:
class LiRtspSession
{
public:
void* MainThreadFunc(void* pvData);
void* AudioProcThreadFunc(void* pvData);
& ......
Linux下CVS服务器的安装与配置
1、CVS服务器的安装
CVS服务器版可以从网上的很多地方下载到,也可以到CVS的官方网站进行下载。根据你所使用的系统,下载相应的版本,然后进行安装。因为当前大部分人是在Linux下使用CVS服务器进行版本管理,并且Redhat Linux是目前最流行的一个Linux发行版之一,所以本文将主要基于Re ......