《2022年AD转换器CS与单片机的接口程序设计[收 .pdf》由会员分享,可在线阅读,更多相关《2022年AD转换器CS与单片机的接口程序设计[收 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、A/D 转换器 CS5550与单片机的接口程序设计辛晓宁,吴子旭(沈阳工业大学信息科学与工程学院,辽宁沈阳110178)摘要:分析双通道低成本A/D 转换器 CS5550的接口特点, 以 ATmega16单片机为例设计 CS5550与单片机的接口电路。 经过对 ATmega16单片机 SPI口的分析, 详细讨论使用硬件SPI接口和软件模拟 SPI两种方式的程序设计,并给出相应的软件流程图。最后对CS5550的两种接口方式进行比较。关键词:模数转换器; CS5550 ;单片机;接口程序现代智能化仪器仪表中A/D 转换器和单片机是重要组成部分。 串行 A/D 转换器的串口信号线数目较少, 在数据采
2、样速率较低的系统中有利于降低硬件间连线的复杂度,节省单片机的接口资源。在CS5550的性能特点及其片上串行接口的基础上,给出 CS5550与单片机的接口程序设计方案。1 CS5550的主要性能及接口特点1 CS5550是 Cirrus Logic公司推出的一款双通道低成本-型 A/D 转换器,内部集成有 2 个- A/D 转换器、 2 个放大器、 1 个串行接口以及1 个温漂为 25 ppm/的 2.5 V参考电压源。 CS5550在两个通道上都具有24位寄存器,其中通道 1 具有 13 位有效位,通道 2 具有 10 位有效位2。CS5550片上集成有 1 个双向数字串行接口, 包括 CS
3、(片选信号)、SDI (数据输入) 、SDO (数据输出)和SCLK (串行时钟) 4 条控制线。该串口与标准SPI接口协议兼容, 可与带有 SPI接口的单片机传输数据。 另外,CS5550还有一个中断输出引脚 INT,可通过配置其屏蔽寄存器 (Mask Register)来设定中断, 并可通过软件修改配置寄存器中的“IMODE IINV”位来决定中断的产生方式(高/低电平或上升 /下降沿有效)。2 单片机的 SPI接口与 CS5550 连接SPI接口是由Motorola 公司最先推出的,目前很多型号的单片机都集成有SPI接口,如 ATMEL公司的 ATmega83 、PIC公司的 PIC16
4、F8774 、Analog Devices公司的 ADuC8125 等。用户可使用单片机所提供的SPI接口与 CS5550直接连接。这里以 ATmega16单片机为例讨论使用单片机的SPI接口实现读写CS5550的操作。2.1 ATmega16的 SPI接口及其与 CS5550的连接ATmega16单片机内部的 SPI接口可完成全双工、 3 线同步数据传输。它支持主/从机操作模式,作为主机时具有倍速模式(CK/ 2) ;具有写碰撞标志检测、传输结束中断标志、 7 种可编程的比特率,并可设置LSB或 MSB首先发送 6。在实际使用该 SPI接口时,需要将 MOSI (主机输出从机输入) 、MIS
5、O(主机输入从机输出) 、SCK (串行时钟)、SS (从机选择)引脚依次与CS5550的 SDI 、SDO 、SCLK 、CS引脚相连,如图 1 所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - ATmega16单片机中与 SPI接口相关的寄存器有3 个: SPCR(SPI控制寄存器)、SPSR (SPI状态寄存器)、SPDR (SPI 数据寄存器)。其中, SPCR寄存器设置SPI接口的中断、数据顺序、主 /从模式及串行
6、时钟的相关特性;而SPSR 寄存器中包括有 SPI中断标志位( SPIF ) 、写碰撞标志位和倍速模式选择位,SPSR 中的 SPIF位将在 SPI接口串行数据发送完成时置“1” ,若此时用户已使能SPI接口中断且全局中断被打开,则会产生SPI接口中断。应该指出的是,在SPI接口数据接收完成时该 SPIF位不会被置“ 1” ,即没有接收结束标志位 7。串行时钟的产生由硬件自动完成:每当有新数据写入SPDR寄存器中, SPI接口会自动产生SCK信号将 SPDR 中的数据发送出去,同时将读取的数据存入SPDR 的缓冲寄存器中。2.2 软件设计对 CS5550的所有操作都是通过读写ATmega16单
7、片机的内部寄存器来完成的。在使用单片机的SPI接口之前,要对其进行初始化。这里采用查询方式来发送数据,故将 SPCR 中的最高位 SPIE置“0” ,禁止中断。使能 SPI接口(SPE=1 ) 。因 CS5550的数据传输为MSB首先发送,故使DORD=0 。将 ATmega16选择为主机模式( MSTR=1 ) 。选择 SPI工作模式 0(CPOL=0 ,CPHA=0 ) 。配置串行时钟设置为单片机晶振频率的1/16(SPR1=0 ,SPR0=1 ) 。综合以上对 SPCR 各位的分析,应配置 SPCR=0 x51 。另外还要对SPI接口相应的引脚方向进行配置:定义MOSI为输出、 MISO
8、为输入( SPI主机模式下由硬件自动配置为输入) ,SCLK 为输出、SS为输出。 SPI接口初始化后就可以与CS5550通信。由于直接采用单片机的SPI接口读写 CS5550 ,字节中每一位的发送 /接收均由硬件完成,这样可简化控制和数据采集程序:向CS5550发送命令字节时只需将其直接写入 SPDR 寄存器即可;而读取返回数据时只需读取SPDR 寄存器即可。为使 SPI通信能够可靠、稳定地运行,这里有两个问题需要注意:一个问题是在向 SPDR寄存器写数据之前,应首先查询SPSR 寄存器中的 SPIF 位,以确保发送名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -
9、 - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - 中的数据不会被新写入的数据所破坏。用C 语言编写程序时可以使用类似的“while (!SPSR_ SPIF) ;” 的形式等待数据发送结束; 另一个问题是,由于 ATmega16 单片机的 SPI接口无接收结束标志位,在读取SPDR寄存器之前应插入延时程序以确保读回数据的完整性和准确性8。该程序流程如图2 所示。3 使用软件模拟SPI接口在实际应用中,可能会出现所选用的单片机没有集成SPI接口或是 SPI接口被其他功能所占用而又仍然需要使用SPI协议与外围
10、器件通信的情况,这时就必须采用软件模拟的方式来实现SPI通信。一般来说, 可以使用单片机的任何4 个I/O 接口与 CS5550连接。但为便于与前一种方法 (使用硬件 SPI接口)进行比较,这里仍采用图 1 所示的电路连接方式。在编写SPI接口程序前 ,要对使用到的 I/O端口进行配置: PB5为输出( MOSI ) ,PB6为输入( MISO ) ,PB7为输出( SCK ) ,PB4 为输出( SS ) 。其中 PB7 端口初值为“ 0” ,PB4 端口初值为“ 1” 。为了模拟SPI 数据寄存器,这里定义3 个 unsigned char 型变量SPI_transmit_buffer、S
11、PI_receive_buffer和 transmit_ counter 分别用来存放需要发送的数据、接收到的数据和已发送数据的位数。 每一位数据的发送接收必须严格按照CS5550数据手册上的时序要求来编写,否则会造成数据传输错误。CS5550 的读写时序如图3所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - 从图 3 及其数据手册中的相关说明可知,CS5550读取 SDI线上的命令发生在SCK的上升沿, 而其会在 SCK
12、下降沿发生后 20ns (典型值) 之内将下一位数据发送到 SDO线上。根据以上分析,可以得到图4 所示的 SPI接口函数编写流程。若仍以实现 CS5550单次转换、单片机读取其数据寄存器为例,则CS5550的采集函数编写流程图与第3 部分中的图 2 相同,只需要利用这个软件模拟的SPI接口函数替换前面流程中对SPDR 寄存器的读写即可。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - 4 硬件设计与软件模拟SPI接口的比较从上述
13、讨论看出,硬件SPI接口的工作独立于CPU内核,这使得 SPI数据的收发与 CPU内核运算并行执行,提高单片机的工作效率。由于数据的收发完全由硬件完成, 软件的编写不涉及具体收发细节,程序简单、 速度快。而采用软件模拟实现 SPI接口的方法则具有端口定义灵活、使用方便的特点。可以在不增加硬件成本的情况下, 给不含 SPI接口的单片机增加SPI通信功能。但软件模拟 SPI需要占用 CPU处理时间,故一般只在通信数据量不太大的情况下使用。5 结束语模数转换器和单片机在智能化仪表的应用广泛,本文讨论的CS5550与单片机的两种接口方式具有普遍意义,对其他类似的设计提供参考。目前,以上两种方法均已被应
14、用到某基于CS5550的工业测温仪表中,取得较好效果。参考文献:1Cirrus Logic ,Inc. CS5550 Datasheet EB/OL. 2008. http:/ 2于焱. -型A/D 转换芯片CS5550在称重系统中的应用 J.计测技术,2008(3) :57-59. 3Atmel Corporation.Atmega8(L)datasheet EB/OL.2008.http: / 4 Microchip Corporation. PIC16F877 datasheet EB/OL.2008. http:/ 30292c. pdf. 5 Analog Devices , Inc
15、.ADuC812 datasheet EB/OL.2008.http:/ pdf. 6 Atmel Corporation. Atmega16 Datasheet EB/OL. 2008. http: / 7杨俊春, 孙珅, 赵国良. AVR单片机中的SPI接口J.应 用科技,2005,32(2) ,43-46. 8王红亮, 杨晓. AVR单片机与串行A/D 的SPI接口设计J.电测与仪表,2008,45(9):45-48. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -