一、实验目的
掌握GPIO模拟SPI总线的使用,了解AD5724的芯片特性和使用,并实现基于AD5724输出电压值。
二、实验原理
StarterWare
StarterWare是一个免费的软件开发包,它包含了示例应用程序。StarterWare提供了一套完整的GPIO寄存器配置接口,简化了开发步骤,程序开发时只需要调用相应接口即可。
安装StarterWare后,可在安装目录下找到C6748所有通用库函数和对应的源码和库函数使用方法。
硬件原理图,找到DAC,可查看DAC的相关控制引脚
SPI是串行外设接口(Serial Peripheral Interface),是一种高速、全双工、同步的通信总线,在芯片的引脚上占用三根线(一对一通信)、四根线或五根线。一般是四线。
MOSI:主设备数据输出,从设备数据输入;
MISO:主设备数据输入,从设备数据输出;
SCLK:时钟信号,由主设备产生;
CS:从设备片选信号,由主设备控制;
EN:使能信号。
SPI 通常用于器件与外部设备之间的通信. 典型应用包括通过外部 I/O 或外设扩展移位寄存器,显示驱动器以及模拟-数字转换器等。
SPI的功能框图,左侧连接外部设备,右侧连接CPU。
SPI接口实际上是两个简单的移位寄存器,在主器件产生的使能信号和移位脉冲下,按位传输。上升沿发送,下降沿接收。或下降沿发送,上升沿接收。
D/A转换
D/A转换,即数模转换,是指将输入的二进制数字量转换成模拟量,以直流电压或直流电流的形式输出。D/A转换器实质上是一个译码器(解码器)。D/A转换器一般是由数码缓冲寄存器、模拟电子开关、参考电压和求和电路等组成。
AD5724芯片
TL6748-PlusTEB实验箱上的DA输出是基于 ADI AD5724 芯片进行设计的,具体特性如下:
12 位;
4 通道;
SPI 串行读取方式;
软件可调输出范围:0+5V、0+10V、0~+10.8V、±5V、±10V、±10.8V。
AD5724功能框图
左侧连接CPU,右侧是DA的四通道输出。
程序流程设计
程序流程设计中首先要进行外设使能配置,接着初始化UART2串口,然后进行GPIO管脚复用,配置GPIO管脚为输出,最后配置DAC各通道的输出电压值,并在UART2串口终端显示各个通道的输出电压。
源码
方向配置源码
管脚方向配置。
使用StarterWare 库函数将 GPIO 口配置为输出模式。相关函数通过“gpio.h”文件引用。
StarterWare API 接口。
GPIODirModeSet(SOC_GPIO_0_REGS, 1, GPIO_DIR_OUTPUT);
将GPIO配置为输出的函数源码和函数使用说明可以查看gpio.c。其中,第一个参数时GPIO的基地址,第二个参数是GPIO的编号,第三个参数设置GPIO的方向。
数据配置源码
数据寄存器配置。
使用StarterWare 库函数设置GPIO输出值。
相关函数通过“gpio.h”文件引用。
StarterWare API 接口。
GPIOPinWrite(SOC_GPIO_0_REGS, 3, GPIO_PIN_LOW);
配置GPIO输出值的函数源码和函数使用说明可以查看gpio.c。其中,第一个参数是GPIO的基地址,第二个参数是GPIO的编号,第三个参数设置GPIO的电平。
三、操作现象
本实验使用的硬件接口为DAC接口和UART2 RS232接口,所需硬件为实验板、仿真器、电源、RS232 交叉串口母母线、USB转RS232串口线和万用表。
硬件连接
(1)使用RS232交叉串口母母线和USB转RS232串口线连接实验板的UART2和电脑的USB口。
(2)连接仿真器和电脑的USB接口,
(3)将拨码开关拨到DEBUG模式01111,
(4)连接实验箱电源,拨动电源开关上电。
软件操作
串口调试
(1)先在设备管理器查看串口的端口号;
(2)再设置串口调试工具,波特率设置为115200。
CCS相关操作
导入工程,选择Demo文件夹下的对应工程
编译工程
将CCS连接实验箱并加载程序
点击运行程序
串口调试终端会打印从 TL5724 模块相应的输出寄存器回读数据。
经过转换运算,可得出:通道A电压=3V;通道B电压=5V;通道C电压=7V;通道D电压=10V。
TDAC四个通道输出恒定电压,相应的LED被点亮,输出电压越高LED的亮度越亮。
将万用表的测试头正极接触DAC的各个通道依次测量电压值,地接触实验板上的GND测试点。可以看到使用万用表读出的数据与计算值在误差允许范围内是一致的。
实验结束后,先点击黄色按钮暂停程序运行,再点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。
最后我们来看下DAC电压的计算方法。
由于TL5724为4通道12位DAC,所以采用以上数据的前3位。
在这里以通道A为例,通道A取前三位,即为0x4cc,转换为十进制数值为1228。
再经过转换公式计算可得出通道A的输出电压为3V,和程序设置的输出电压一致。