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

C2000 ADC和DAC实验

C2000 ADC和DAC的实验

本实验的目标是熟悉片上模数转换器 (ADC) 模块微控制器 (MCU) 将设置为以规定的采样率对单个 ADC 输入通道进行采样,并将转换结果存储在循环存储器缓冲区中。 在本实验的第二部分中,将探索数模转换器 (DAC)。本实验旨在去更深入地了解 ADC 和 DAC 模块的功能,以及模拟子系统与其他模块的常见交互方式。

概述

在本实验中,将设置一个 ePWM 模块来触发 ADC 的转换开始 (SOC) 信号。然后,ADC 将以所需的采样率开始对其输入进行采样。ADC 将使用转换结束 (EOC) 中断来提示 CPU 将 ADC 转换结果复制到内存中的结果缓冲区中。该缓冲区指针将以循环方式管理,以便新的转换结果不断覆盖缓冲区中最旧的转换结果。为了生成所需的输入信号,代码还将在 ADC 中断服务程序 (ISR) 中切换 GPIO 的高低电平。该 GPIO 引脚将连接到 ADC 作为待采样的输入。在本实验的另一个可选部分中,可以使用数模转换器 (DAC) 生成正弦波,然后由 ADC 进行采样。
在这里插入图片描述

硬件配置

C2000™LAUNCHXL-F28379DLaunchPad™是一款完整的低成本开发板,LAUNCHXL-F28379D包含开发基于 F2837xD 微控制器的应用程序所需的所有硬件和软件。
在这里插入图片描述

启动CCS项目

首先,将一个空项目从 C2000Ware 导入到 CCS 工作区:

  1. 打开 CCS,然后依次选择“File”→“Import Projects”。
  2. 点击“Browse”按钮,找到[C20000ware]/driverlib\f2837xd\examples\cpu1\empty_projects
    目录。
  3. 在“discovered projects”下,现在可以看到empty_projects。
    在这里插入图片描述
  4. 点击“Finish”将 empty_projects] 项目导入并复制到您的 CCS 工作区。
  5. 项目导入后,将项目重命名为想要的名称, 项目资源管理器窗口应如下所示:
    在这里插入图片描述

配置GPIO

下面将从配置三个必需的 GPIO 开始本次 ADC 实验:

  • GPIO 22 将始终保持高电平
  • GPIO 67 将在高电平和低电平之间切换
  • 配置 LED 指示灯的GPIO。
    首先,将 GPIO22 配置为持续拉高的输出,并用作 ADC 的输入之一。
    双击项目中的 .syscfg 文件将其打开,然后配置正确的开发板:
    在这里插入图片描述
    在这里插入图片描述
    接下来,可以添加第二个 GPIO (GPIO67)。GPIO67 将在应用程序中切换,以便用作 ADC 的另一个输入。按照设置 GPIO67的相同步骤操作,但将其命名为“myGPIOToggle”。
    在这里插入图片描述

最后,添加一个 LED GPIO。此 LED 将在 ISR 中切换,以表明代码正在正确执行。在 SysConfig 中,选择“Hardware”选项卡。选择添加LED4。名称将在 ADC ISR 中引用,因此请确保名称为“myBoardLED0_GPIO”。
在这里插入图片描述

配置ePWM

EPWM 模块将用于自动触发 ADC SOC。所需的 EPWM 频率为 50kHz。首先在 Sysconfig 中添加一个 PWM 实例,方法是点击 Sysconfig 左侧窗格中“EPWM”旁边的 (+) 符号。
)
如果已经添加了一个 EPWM 实例,将按如下方式配置 EPWM‘时间基’子模块。
在这里插入图片描述

其次,我们将通过“事件触发器”子模块启用 ADC SOC 触发,如下所示:
在这里插入图片描述
选择了触发时时基计数器等于周期。当主时钟为200M,但EPWM最大频率为100M, 如果EPWM 频率为 50kHz,则应设置时钟基准周期位1999(100M/50K-1)。这样ADC的采样率也就是50KHz。

配置ADC

要设置 ADC,需要在 SysConfig 中添加一个 ADC 实例。请按以下方式设置 ADC:
ADCCLK最大为50M。
在这里插入图片描述

现在将配置 ADC SOC(转换开始)。SOC0 的触发器是 epwm1
在这里插入图片描述
接下来,需要设置 ADC 中断。在这种情况下,ADCINT1 将在转换结束时 (EOC) 产生中断。这样做是为了确保从 ISR 中读取 ADC 结果时,ADC 转换结果已经准备好。
在这里插入图片描述
最后,我们需要设置 ADC 中断。具体操作是启用 ADC 中断并配置 ADC 中断处理程序名称。
在这里插入图片描述
以上配置,便可以在LAUNCHXL-F28379D的外接端口上找到对应的接口:
在这里插入图片描述

程序设置

设置 ADC ISR

现在已经在 SysConfig 中配置了 ADC 和 PWM 模块,接下来可以切换到本实验的应用程序代码部分。在项目中,点击main .c 文件。在 mian.c 文件中,需要编写每次发生 ADC 中断时执行的代码,也称为 ISR(中断服务程序)。本项目需要定义 ADCBufPtr(用于将 ADC 结果放入缓冲区的变量)。以下代码用于声明 ISR 中的变量以及将用于更改 LED 状态的变量。将以下代码复制到源main .c 文件中。注意:ISR 函数的名称是我们之前在 ADC 的 SysConfig 配置中定义的。

interrupt void INT_myADC0_1_ISR(void)
{
   
    static uint16_t *AdcBufPtr = AdcBuf;
    static volatile uint16_t LED_count = 0;

下一段代码是 ISR 的另一部分,用于将 ADC 结果存储在缓冲区中。我们还需要处理缓冲区已满的情况。一种方法是覆盖先前的值。将以下代码添加到您的 ISR 中。

    // Read the ADC Result
    *AdcBufPtr++ = ADC_readResult(myADC0_RESULT_BASE, myADC0_SOC0);
    // Brute Force the circular buffer
    if (AdcBufPtr == (AdcBuf + ADC_BUF_LEN))
    {
   
        AdcBufPtr = AdcBuf;
    }

下一步是切换 GPIO,以便将其用作 ADC 输入。将以下代码添加到您的 ISR 中。

    // Toggle the pin
    if(DEBUG_TOGGLE == 1)
    {
   
        GPIO_togglePin(myGPIOToggle);             
    }

现在我们可以选择切换设备上的 LED 了。这说明程序运行正常,并且确实进入了中断服务程序 (ISR)。

请注意,每当 LED_count > 25000 时,我们都会切换 LED。这相当于每次切换约 0.5 秒。

将以下代码添加到您的 ISR 中:

    if(LED_count++ > 25000)                      // Toggle slowly to see the LED blink
    {
   
        GPIO_togglePin(myBoardLED0_GPIO);                   // Toggle the pin
        LED_count = 0;                           // Reset the counter
    }

最后,在 ISR 中,我们必须确认 PIE 组并清除中断状态标志,以便将来能够继续处理中断。将以下代码添加到您的 ISR 中。<

相关文章:

  • Java 开发工具:从 Eclipse 到 IntelliJ IDEA 的进化之路
  • leetcode36.有效的数独
  • 大数据面试问答-Spark
  • LeetCode 1922题解(快速幂模板题)
  • 9.thinkphp的请求
  • (C语言)算法复习总结2——分治算法
  • C++之 多继承
  • 【C++11】智能指针
  • 第十六届蓝桥杯Java b组(试题C:电池分组)
  • LabVIEW 程序持续优化
  • [react]Next.js之自适应布局和高清屏幕适配解决方案
  • 2025SQCTF赛题复现
  • 泰勒公式的深入研究
  • 【信息系统项目管理师】高分论文:论信息系统项目的整合管理(旅游景区导游管理平台)
  • Laravel 使用通义灵码 - AI 辅助开发提升效率
  • 【vue】双向绑定
  • git安装(windows)
  • 一文读懂WPF系列之控件模版数据模板
  • LeetCode LCR157 套餐内商品的排列顺序
  • Java基础关键_037_Java 常见新特性
  • 2025财政观察|长三角“三公”经费普降,钱要用在刀刃上
  • 重庆发布经济犯罪案件接报警电子地图,企业可查询导航属地经侦服务点
  • 金正恩观摩朝鲜人民军各兵种战术综合训练
  • 中国巴西民间推动建立经第三方验证的“森林友好型”牛肉供应链
  • 牧原股份子公司与养殖户种猪买卖纠纷案一审胜诉
  • 北京“准80后”干部兰天跨省份调任新疆生态环境厅副厅长