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.

[参考译文] TMS320LF2407A:中断驱动的 ADC 导致 DMA 寻址问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/588832/tms320lf2407a-interrupt-driven-adc-results-to-dma-adressing-issue

器件型号:TMS320LF2407A

我们将编写一个使用 ADC 进行中断的代码。 不能将结果0的 ADC 输出移至 ant DMA location (我们将移至 DP100h 中的预定义变量)。

 这是我们遇到问题的代码。

GISR2:           ------------------------------------------------------- ISR 从此处开始。       向下查看有问题的部件  
            LDP #0h
            SETC INTM;禁用所有中断

             SETC SXM  
             SETC OVM
             CLRC SXM
             CLRC OVM
             CLRC CnF;清除 Cnf 位
             ldp #0e8h;将 dp 加载到事件管理器页面
             SPLK #0FFFh、EVAIFRA;清除事件管理器中断
             SETC XF;设置 XF 标志


             ldp #0E1h;将数据页设置为 adc
             SPLK #04000h、ADCTRL2;复位 ADC

             SPLK #02000h、ADCTRL2;开始转换

CHK_EOS1:  

            LACC ADCTRL2; 等待 SEQ1忙位清零
            和#0001000000000000b; BIT12被加载到 ST1的 TC 位中
            BCND CHK_EOS1、NEQ ; 如果 Tc=1,则保持循环。


            LACC RESULT0; 通道1的负载转换结果
                             ; 从 Ch1缓冲寄存器到 ACC
            CLRC SXM
            NOP;启用累加器的逻辑移位。
            RPT #5;重复以下指令6次
            SFR
            NOP  
            和#3FFh
            NOP;向右移位(由于 ADC 为10位、因此需要6次)
             

             LDP #100h

           SACL ADC_OUT  <<<<<< -------------------------------------- 预定义变量。 它不会根据 Result0进行更新、即使在 ADC 输入时也是如此   

                             <<<<<<<< -------- (续) 正在更新 ISR 中的 Result0。   

            CLRC INTM;启用 中断  

                           CLRC XF
可重置

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

    是否可以确认 RESULT0寄存器正在按预期更新、但它只是累加器存储器无法正常工作?

    您是否尝试使用直接寻址存储累加器? 如果是这样、我认为您需要在 ADC_OUT 变量前面添加"#"来执行此操作。

    此外、外设用户指南建议在轮询 SEQn BSY 位之前插入4个 NOP;或者可以在没有 NOP 的情况下轮询 INT 标志 SEQn 位。

    Tommy