[分享] 【MSPM0L1306 LaunchPad】OPA及光电二极管测试

TL-LED   2023-11-8 17:33 楼主

这篇来学习测试下板卡上的光电二极管和芯片内部的OPA,实现光信号转变成电压信号。

 

一、硬件部分

 

1.1、开发板硬件部分电路图

102.png

 

1.2、OPA内部框图

103.png

 

1.3、结合OPA和外设端口,测试图如下

104.jpg

 

二、配置OPA和ADC

 

2.1、OPA配置

选择OPA0

105.png

 

映射的引脚

106.png

 

2.2、配置ADC

ADC的输入选择OPA输出

107.png

 

三、代码

 

3.1、adc.c

#include "ti_msp_dl_config.h"
#include "adc/adc.h"
#include <stdio.h>

volatile bool gCheckADC;
volatile uint16_t gAdcResult;

void ADC12_0_INST_IRQHandler(void)
{
    switch (DL_ADC12_getPendingInterrupt(ADC12_0_INST))
    {
        case DL_ADC12_IIDX_MEM0_RESULT_LOADED:
            gCheckADC = true;
            break;
        default:
            break;
    }
}

void init_adc(void)
{
    NVIC_EnableIRQ(ADC12_0_INST_INT_IRQN);
    gCheckADC = false;
}


void adc_test(void)
{
    float adv=0.0;
    DL_ADC12_startConversion(ADC12_0_INST);
    if(gCheckADC==true)
    {
        gCheckADC = false;
        gAdcResult = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);
        printf("opa=%d \r\n ",gAdcResult);
        DL_ADC12_enableConversions(ADC12_0_INST);
    }
}

 

3.2、main.c

#include "ti_msp_dl_config.h"
#include "systick/systick.h"
#include "led/led.h"
#include "uart/uart.h"
#include <string.h>
#include <stdio.h>

#include "adc/adc.h"
#include "spi/spi.h"
#include "x2515/x2515.h"
int main(void)
{
    uint8_t can_txbuf[8]={0};
    uint8_t js=0;
    SYSCFG_DL_init();

    init_adc();

    led2_r_off();
    led2_g_off();
    led2_b_off();

    while (1)
    {
        adc_test();
        SysTick_Delay_ms(100);
    }
}

 

四、运行结果

 

随着PIN管接收光线的变化,OPA输出的电压发生变化。

108.png

 

本帖最后由 TL-LED 于 2023-11-8 17:33 编辑

回复评论 (2)

PIN管接收光线的变化,OPA输出的电压发生变化是个什么规律?

点赞  2023-11-9 07:27
引用: Jacktang 发表于 2023-11-9 07:27 PIN管接收光线的变化,OPA输出的电压发生变化是个什么规律?

接收范围内光线越强,输出电压越高

点赞  2023-11-9 11:02
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复