当前位置: 首页 > article >正文

嵌入式DSP教学实验箱操作教程:2-20 数模转换实验(模拟SPI总线输出电压值)

一、实验目的

掌握GPIO模拟SPI总线的使用,了解AD5724的芯片特性和使用,并实现基于AD5724输出电压值。

二、实验原理

StarterWare

StarterWare是一个免费的软件开发包,它包含了示例应用程序。StarterWare提供了一套完整的GPIO寄存器配置接口,简化了开发步骤,程序开发时只需要调用相应接口即可。

安装StarterWare后,可在安装目录下找到C6748所有通用库函数和对应的源码和库函数使用方法。

image.png

硬件原理图,找到DAC,可查看DAC的相关控制引脚

image.png

SPI是串行外设接口(Serial Peripheral Interface),是一种高速、全双工、同步的通信总线,在芯片的引脚上占用三根线(一对一通信)、四根线或五根线。一般是四线。

MOSI:主设备数据输出,从设备数据输入;

MISO:主设备数据输入,从设备数据输出;

SCLK:时钟信号,由主设备产生;

CS:从设备片选信号,由主设备控制;

EN:使能信号。

SPI 通常用于器件与外部设备之间的通信. 典型应用包括通过外部 I/O 或外设扩展移位寄存器,显示驱动器以及模拟-数字转换器等。

SPI的功能框图,左侧连接外部设备,右侧连接CPU。

image.png

SPI接口实际上是两个简单的移位寄存器,在主器件产生的使能信号和移位脉冲下,按位传输。上升沿发送,下降沿接收。或下降沿发送,上升沿接收。

image.png

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的四通道输出。

image.png

程序流程设计

程序流程设计中首先要进行外设使能配置,接着初始化UART2串口,然后进行GPIO管脚复用,配置GPIO管脚为输出,最后配置DAC各通道的输出电压值,并在UART2串口终端显示各个通道的输出电压。

image.png

源码

方向配置源码

管脚方向配置。

使用StarterWare 库函数将 GPIO 口配置为输出模式。相关函数通过“gpio.h”文件引用。

StarterWare API 接口。

GPIODirModeSet(SOC_GPIO_0_REGS, 1, GPIO_DIR_OUTPUT);

将GPIO配置为输出的函数源码和函数使用说明可以查看gpio.c。其中,第一个参数时GPIO的基地址,第二个参数是GPIO的编号,第三个参数设置GPIO的方向。

image.png

数据配置源码

数据寄存器配置。

使用StarterWare 库函数设置GPIO输出值。

相关函数通过“gpio.h”文件引用。

StarterWare API 接口。

GPIOPinWrite(SOC_GPIO_0_REGS, 3, GPIO_PIN_LOW);

配置GPIO输出值的函数源码和函数使用说明可以查看gpio.c。其中,第一个参数是GPIO的基地址,第二个参数是GPIO的编号,第三个参数设置GPIO的电平。

image.png

三、操作现象

本实验使用的硬件接口为DAC接口和UART2 RS232接口,所需硬件为实验板、仿真器、电源、RS232 交叉串口母母线、USB转RS232串口线和万用表。

image.png

硬件连接

(1)使用RS232交叉串口母母线和USB转RS232串口线连接实验板的UART2和电脑的USB口。

(2)连接仿真器和电脑的USB接口,

(3)将拨码开关拨到DEBUG模式01111,

(4)连接实验箱电源,拨动电源开关上电。

image.png

软件操作

串口调试

(1)先在设备管理器查看串口的端口号;

(2)再设置串口调试工具,波特率设置为115200。

image.png

CCS相关操作

导入工程,选择Demo文件夹下的对应工程

编译工程

将CCS连接实验箱并加载程序

点击运行程序

串口调试终端会打印从 TL5724 模块相应的输出寄存器回读数据。

经过转换运算,可得出:通道A电压=3V;通道B电压=5V;通道C电压=7V;通道D电压=10V。

TDAC四个通道输出恒定电压,相应的LED被点亮,输出电压越高LED的亮度越亮。

将万用表的测试头正极接触DAC的各个通道依次测量电压值,地接触实验板上的GND测试点。可以看到使用万用表读出的数据与计算值在误差允许范围内是一致的。

实验结束后,先点击黄色按钮暂停程序运行,再点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。

image.png

最后我们来看下DAC电压的计算方法。

由于TL5724为4通道12位DAC,所以采用以上数据的前3位。

在这里以通道A为例,通道A取前三位,即为0x4cc,转换为十进制数值为1228。

再经过转换公式计算可得出通道A的输出电压为3V,和程序设置的输出电压一致。

image.png


http://www.kler.cn/a/274099.html

相关文章:

  • Unity 2D实战小游戏开发跳跳鸟 - 计分逻辑开发
  • 强化学习笔记(5)——PPO
  • LabVIEW如何有效地进行数据采集?
  • S4 HANA明确税金汇差科目(OBYY)
  • 集合通讯概览
  • 如何处理 Typecho Joe 主题被抄袭或盗版的问题
  • 数据库系统概论-练手题集合【期末复习|考研复习】
  • 蓝桥杯之冲刺
  • 为什么线程通信的方法 wait(), notify()和 notifyAll()被定义在 Object 类里?为什么他们必须在同步方法或者同步块中被调用?
  • 码云使用 创建项目
  • 数据结构(三)复杂度的深层次剖析
  • 基于tcp协议的网络通信(基础echo版.多进程版,多线程版,线程池版),telnet命令
  • 【No.8】蓝桥杯工具函数模板|迭代器|vector|queue|map|set|银行问题|费里的语言|快递分拣(C++)
  • 携程Kar98k/hotelUuidKey算法分析
  • Stable Diffusion + Segment Anything试用
  • RocketMQ发送和接收方式详解
  • 从基础入门到学穿C++
  • <JavaEE> 了解网络层协议 -- IP协议
  • 【蓝桥杯每日一题】填充颜色超详细解释!!!
  • AWS监控,AWS 性能监控工具
  • 【日常记录】【插件】使用ColorThief,跟随图片变化改变网页背景
  • JDK1.8超详细安装教程
  • Json Web Token(JWT) 快速入门
  • Android 13 源码编译及报错修复
  • 【C++庖丁解牛】继承的概念及定义 | 继承中的作用域 | 继承与友元继承与静态成员 | 复杂的菱形继承及菱形虚拟继承
  • Ubuntu双系统/home分区扩容