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

【FPGA+DSP系列】——(2)DSP最小核心板进行ADC采样实验(采集电位器输出电压)

【FPGA+DSP系列】——(2)DSP最小核心板进行ADC采样实验(采集电位器输出电压)

  • 前言
  • 一、ADC采样准备
    • ADC参数描述
    • ADC寄存器描述
  • 二、代码解释
    • ADC.h声明
    • ADC.c
  • 总结

前言

本来想DSP的第二篇写一下关于EPWM的实验,但是可能是手上的板子有问题,问题是上电后DSP芯片严重发烫,且排查不出来原因,又因为资源受限,示波器还不在旁边,所以没法验证EPWM脉冲的波形,所以直接换成ADC实验,ADC实验也是东拼西凑,找了一个模块,这个模块上有一个电位器,就拿这个电位器的输出当作adc采样的输入,凑活使用吧,一个是熟悉一下DSP的ADC的配置流程,另一个熟悉一下DEBUG的相关操作。
在这里插入图片描述
板子上电后芯片就发烫,仿真器也是返厂维修过,buff叠满了,准备自己买一套DSP的板子再,还需要买个逻辑分析仪,后面调试iic/uart/spi以及can等通信的时候能方便一点。

一、ADC采样准备

ADC参数描述

DSP实验用到的芯片是28335芯片,其中数据手册中关于ADC的相关描述如图所示,可以得到以下的信息。
首先这个adc是12位宽,模拟输入0-3V,数字量对应0-4095,步进0.73mv。
ADC时钟在25Mhz的情况,采样率12.5Mhz,转换2个周期。
16个通道
公式:V=(input_AV-ADCLO)*3/4096
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

ADC寄存器描述

如下表,ADC所有寄存器的功能还有地址都在下表。具体用程序进行说明吧~
在这里插入图片描述在这里插入图片描述
触发方式
在这里插入图片描述

二、代码解释

ADC.h声明

ADC采样CLK 设置为25Mhz,系统CLK150Mhz
3分频 ADC_MODCLK HSPCLK = SYSCLKOUT/(2ADC_MODCLK)
150/2
3=25

#ifndef ADC_H_
#define ADC_H_#include "DSP2833x_Device.h"     // DSP2833x 头文件
#include "DSP2833x_Examples.h"   // DSP2833x 例子相关头文件#define ADC_MODCLK 3
#define ADC_CKPS   0x1   // ADC module clock = HSPCLK/2*ADC_CKPS   = 25.0MHz/(1*2) = 12.5MHz
#define ADC_SHCLK  0xf   // S/H width in ADC module periods                        = 16 ADC clocksvoid ADC_Init(void);
Uint16 Read_ADCValue(void);#endif /* ADC_H_ */

ADC.c


#include "adc.h"void ADC_Init(void)
{// Specific clock setting for this example:EALLOW;SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;    // ADC 使能 ADC 外设时钟及设置 ADC 工作时钟EDIS;// Specific clock setting for this example:EALLOW;//系统时钟 150M 不能直接供 ADC 工作时钟使用,需分频后才行SysCtrlRegs.HISPCP.all = ADC_MODCLK;	// HSPCLK = SYSCLKOUT/(2*ADC_MODCLK) EDIS;InitAdc();  // For this example, init the ADC// Specific ADC setup for this example:AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;  //顺序采样方式AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS; // ADC 工作 25M 下不分频AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;        // 1  Cascaded mode 1 通道模式AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;   // A0 为采样通道AdcRegs.ADCTRL1.bit.CONT_RUN = 1;       // Setup continuous run 连续采样模式AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x0; //最大采样通道数 只用到A0 // Start SEQ1AdcRegs.ADCTRL2.all = 0x2000;  //触发方式 软件触发}Uint16 Read_ADCValue(void)
{while (AdcRegs.ADCST.bit.INT_SEQ1== 0);//查询转换是否结束AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;//清除中断标志位return AdcRegs.ADCRESULT0>>4;//将转换结果返回出去//ADC 转换后的数据存储在结果寄存器内,只需读取相应的结果寄存器即可,并且有效数据是高 12 位,所以读取后的值要将低 4 位移除
}

总结

本文介绍了在DSP最小核心板上进行ADC采样实验的过程。由于EPWM实验遇到硬件问题(芯片发烫),作者改为使用电位器输出电压作为ADC采样输入。实验基于28335芯片,其ADC为12位分辨率(0-3V对应0-4095),采样率12.5MHz。文章详细说明了ADC寄存器配置和触发方式,并提供了完整的代码实现,包括ADC初始化(设置时钟分频、采样模式等)和采样值读取函数。该实验既帮助熟悉DSP的ADC配置流程,也为后续调试通信接口(I2C/UART/SPI/CAN等)做准备。

http://www.dtcms.com/a/418261.html

相关文章:

  • 青岛网站推广怎么做好西安建设工程信息网平台变更
  • XA7A75T-1FGG484Q 赛灵思 Xilinx AMD Artix-7 XA 系列 FPGA
  • 基于Hadoop+Spark的人体体能数据分析与可视化系统开源实现
  • 麒贺丝网做的网站优化pscc下载
  • OpenLayers地图交互 -- 章节十七:键盘缩放交互详解
  • ubuntu中卸载软件的几种方法
  • 网站建设与规划实验报告网站建设平台排名
  • rust徒手编写模拟tokio异步运行时
  • 【mdBook】4.5 test 命令
  • 在网站后台备案号怎么改商城网站建设视频教程
  • 漏洞修复 CentOS x86_64 OpenSSH 升级操作文档
  • HarmonyOS 地图手势操作全解析
  • 生态碳汇涡度相关监测与通量数据分析
  • Android-kotlin MVVM框架搭建+Retrofit二次封装
  • QML学习笔记(十八)QML的信号处理器的Connections写法
  • Spring Cloud Gateway 实战:全局过滤器日志统计与 Prometheus + Grafana 接口耗时监控
  • CTFHub RCE通关笔记7:命令注入 过滤cat(9种渗透方法)
  • Kotlin Value Class 全面解析:类型安全与零开销封装
  • 【Android】kotlin.flow简介
  • 如何在电脑上编辑三星联系人
  • Java开发环境搭建之 9.使用Docker Compose 安装部署RabbitMQ
  • 智能家居:从设备互联到智慧感知的技术演进
  • 做网站是个什么行业网站设计示例
  • D018 vue+django 旅游图谱推荐问答系统|neo4j数据库|智能问答
  • 11. Jmeter性能与优化
  • 水脉织城・文脉映画:泰州城市旅游宣传片的专业化叙事路径
  • QT文件解析与乱码问题
  • 医疗编程AI技能树与培训技能树报告(国内外一流大学医疗AI相关专业分析2025版,下)
  • seo网站快速排名企业域名怎么填写
  • 谈谈数学和式的理解和应用