This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430L092:在使用 DAC 的同时执行 ADC 转换

Guru**** 1693050 points
Other Parts Discussed in Thread: MSP430L092
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/592709/msp430l092-performing-adc-conversions-at-same-time-as-dac-is-being-used

器件型号:MSP430L092

我们有一个选择使用 MSP430C/L092的应用。  该应用使用 DAC 生成电压、以确定用于传输的频率。  对于特定器件、这是恒定的、但在不同器件之间会有所不同。  此外 、ADC 还将用于监控两个传感器以及内部处理器的温度、然后将传输其值。  固件所做的第一件事情是将输出设置为所需的状态、该状态工作正常、但当采样完成后、ADC 设置后、DAC 输出会发生变化。  这似乎是因为输出始终与 APINT 中的值相关。  是否有方法将该值锁定到位以便它不会改变、或者我们是否需要某种方法来实现外部 DAC?  目前、ADC 正在使用斜坡发生器。  DAC 和 ADC 代码基于处理器的示例代码。  请提供任何援助。

谢谢、

Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Robert、

    我们已收到您的问题。 我们很快会回来。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请提供您的代码吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    下面是我为 EOC 标志轮询的 problem...note 相关代码、而不是使用中断。 这是为了最大限度地提高最终产品所需的性能。

    #include "msp430.h" ;#define controlled include 文件
    #include "msp430.h" ;#define controlled include 文件

    命名 main ;模块名称

    公共主函数 ;使主标签可见
    ;在本模块之外

    #define FREQ_VALUE 140

    ; IO 端口定义


    ; P1

    E_AMP_OUT2EQU0x01
    RX_DATAEQU0x02
    CHANNELDAC_EQU0x04
    VREFEQU0x08
    E_AMP_OUT1EQU0x10
    Test1EQU0x20
    TX_DATAEQU0x40


    ;中断矢量

    org) 0FFE0h
    DC16 INVINT ;无效中断--只返回
    DC16 INVINT ;无效中断--只返回
    DC16 INVINT ;无效中断--只返回
    DC16 INVINT ;无效中断--只返回
    DC16 INVINT ;无效中断--只返回
    DC16 INVINT ;I/O 端口 P2 (P2IFG.0至 P2CONFIG.3)
    DC16 INVINT ;Timer0_A3 (TA0CCR1 CCIFG1)-采样中断
    DC16 INVINT ;Timer0_A3 (TA0CCR0 CCIFG0)-发送中断
    DC16 INVINT ;I/O 端口 P1 (P1IFG.0至 P1IFG.6)
    DC16 INVINT ; A-POOL (CxIFG)
    DC16 WDTIIRQ ;WDTIFG
    DC16 INVINT ;Timer1_A3 (TA1CCR1 CCIFG1)
    DC16 INVINT ;Timer1_A3 (TA1CCR0 CCIFG0)-发送中断
    DC16 USERNMI ;用户 NMI (NMIFLG)
    DC16 SYSTEMNMI ;系统 NMI (SVMIFG、VMAIFG)
    DC16初始化 ;复位向量地址

    RSEG CSTACK ;预先声明段
    RSEG 代码 ;将程序放在“代码”段中

    初始化:MOV SFE (CSTACK)、SP ;设置堆栈

    主:NOP ;主程序
    MOV.W #WDTPW+WDTHOLD、&WDTCTL;停止看门狗计时器

    ;初始化 I/O 引脚
    ;将未使用的 I/O 引脚设置为输出0

    BIS.B#TX_DATA、&P1DIR;将 TEST 引脚设置为输出

    ;在启动时打开发送器以进行测试<<<
    BIC.B#TX_DATA、&P1OUT;打开传输

    MOV.W#VREFEN+APREFON+DBON+CONVON、&APCNF;启用 DAC 缓冲器、转换和基准
    ;并设置 ADC 输入
    MOV.W#oden+Osel、&APCTL;将 DAC 输出设置为引脚、选择输出缓冲器
    MOV.W#FREQ_VALUE、APINT
    BIC.W#DBON、APCNF


    ;设置时钟

    MOV.W#CCSKEY、&CCSCTL0;解锁 CCS
    Clock1MOV.W#0、&CCSCTL7;清除 HF 和 LF OSC 启动故障条件
    MOV.W#0、SFRIFG1;清除 OFIFG
    Bit.W#OFIFG、&SFRIFG1;振荡器标志?
    JNZ时钟1
    MOV.W#0000h、&CCSCTL4;将 ACLK、SMCLK 和 MCLK 设置回 HFCLK
    MOV.W#DIV_0+DIVS_0+DIVM_0、&CCSCTL5;ACLK/1 (1000KHz)、SMCLK /1 (1000KHz (默认值)和 MCLK /1 (1000KHz)
    MOV.B#0FFh、&CCSCTL0_H;锁定 CCS

    #if 1;ADC 转换
    MOV.W#CMPON+VREFEN+APREFON+DBON+CLKSEL1+CONVON、&APCNF;启用 DAC 缓冲器、
    BIC.W#REFTSEL、&APTRIM;关闭基准修整寄存器
    ;开始配置 A-POOL 寄存器

    MOV.W #0、&APCTL ;清除 APCTL 寄存器
    MOV.W #REFTSEL、&APTRIM
    MOV.W #TMPSEN、&APVDIV ;启用温度传感器
    MOV.W #CMPON+DBON+CLKSEL_MCLK+CONVON+APREFON,&APCNF;配置 A-POOL 元素,选择 MCLK 作为 A-POOL 时钟源
    MOV.W #Osel+oden+APPSEL_5+APNSEL_4、&APCTL;设置通道并开始转换
    TESTRX0
    MOV.W#0、APINT
    BIS.W#RUNSTOP+CBSTP+SBSTP,&APCTL;开始转换
    TESTRX1
    Bit.W#EOCIFG、&APIFG;等待转换完成标志
    JZTESTRX1
    MOV.W#0、&APIFG
    BIC.W#RUNSTOP、&APCTL
    MOV.W&APINT,R10;获取传感器数据
    NOP
    JMPTESTRX0
    #endif


    ;进入休眠等待中断

    BIS.W#GIE+SCG1+CPUOFF、SR;转至 LPM2 (使用 LPM2代替
    ;LPM3,因为在3中,HFOSC 被关闭)

    JMP $;跳转至当前位置'$'
    ;(无限循环)




    ;系统中断功能

    ;*********

    ;*********
    ;*
    ;*未使用/无效的中断处理
    ;*
    ;*********
    INVINTNOP
    RETI


    ;*********
    ;*
    ;*看门狗定时器中断处理
    ;*
    ;*********
    WDTIRQNOP
    RETI


    ;*********
    ;*
    ;*用户 NMI 中断处理
    ;*
    ;*********
    USERNMINOP
    RETI


    ;*********
    ;*
    ;*系统 NMI 中断处理
    ;*
    ;*********
    SYSTEMNMI
    NOP
    RETI


    结束


    谢谢、
    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Robert、

    很抱歉、MSP430L092 A-POOL 不支持 ADC、DAC 同时可用、您可以参阅数据表上的 A-POOL 方框图。

    此致
    Kc