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.

[参考译文] CCS/TMS320F28027:AdcNetBus 和 ADCDRV_1ch_Rlt2

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/674715/ccs-tms320f28027-adcnetbus-and-adcdrv_1ch_rlt2

器件型号:TMS320F28027
Thread 中讨论的其他器件:BOOSTXL-C2KLEDcontrolSUITE

工具/软件:Code Composer Studio

你好

 如何 检索 AdcNetBus 或 ADCDRV_1ch_Rlt2并将其传递到控制器、例如2p2z?

也许我有与 https://e2e.ti.com/support/microcontrollers/c2000/f/171/p/126212/451361相同的问题 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    维克多
    您能否为相关代码提供源项目名称和路径?

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

    我试图了解 BOOSTXL-C2KLED 2p2z 连接中的代码、例如 BOOST 1 (蓝色):

    // Boost 1连接
    ADCDRV_1ch_Rlt1 =&AdcNetBus[1];
    CNTL_2P2Z_REF1 =&IrefNetBus1;//指向 Iref1
    CNTL_2P2Z_Fdbk1 =&AdcNetBus[1];//指向 Iout1
    CNTL_2P2Z_Coef1 =&CNTL_2P2Z_CoefStruct1.B2;//指向第一个循环的第一个系数
    CNTL_2P2Z_Out1 =&UoutNetBus1;//指向2P2Z Uout1
    PWMDRV_2ch_UpCnt_Duty1A =&UoutNetBus1;

    反馈来自电流感应电阻器电压乘以运算放大器的增益到 ADC IBLUE (ADCINA2)。
    假设稍后、仍然使用 BOOSTXL-C2KLED、我将使用分压器 VBLUE (ADCINB1)的反馈进行升压转换、当然我的 K 将相应地发生变化。
    但是、如何将 AdcNetBus 重定向到从 IBLUE (ADCINA2)获取"新"反馈到 VBUE (ADCINB1)?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    维克多

    谢谢、以下内容:

    ADC 结果存储在长数组 AdcNetBus[16]中。  这是 ADC 结果寄存器0 -15的线性存储。

    现在、在定义 ADC 触发器时采样的通道从 LED_Boost_PC_Main.c 中的第516行开始、如下所示:

    #define Iout1R AdcResult.ADCRESULT1 //Q12
    #define Iout2R AdcResult.ADCRESULT2 //Q12
    #define Iout3R AdcResult.ADCRESULT3 //Q12
    #define Vout1R AdcResult.ADCRESULT9. //Q12
    #define Vout2R AdcResult.ADCRESULT10 //Q12
    #define Vout3R AdcResult.ADCRESULT11 //Q12
    #define VinR AdcResult.ADCRESULT12. //Q12.
    
    //
    // ADC 通道选择
    //
    ChSel[0]= 2; //初始样本错误的虚拟读取
    ChSel[1]= 2; // A2 - Iout1 -蓝色
    ChSel[2]= 1; // A1 - Iout2 -绿色
    ChSel[3]= 6; // A6 - Iout3 -红色
    ChSel[9]= 9; // B1 - Vout1
    ChSel[10]= 10; // B2 - Vout2
    ChSel[11]= 12; // B3 - Vout3
    ChSel[12]=14; // B6 - Vin/Vout8
    
    //
    // ADC 触发选择
    //
    TrigSel[0]= 5; // ePWM1、ADCSOCA
    TrigSel[1]=5; // ePWM1、ADCSOCA
    TrigSel[2]= 5; // ePWM1、ADCSOCA
    TrigSel[3]= 5; // ePWM1、ADCSOCA
    TrigSel[9]= 5; // ePWM1、ADCSOCA
    TrigSel[10]= 5; // ePWM1、ADCSOCA
    TrigSel[11]= 5; // ePWM1、ADCSOCA
    TrigSel[12]=5; // ePWM1、ADCSOCA
    
    ADC_SOC_CNF (ChSel、TrigSel、ACQPS、16、0); 

    正如您指出的、Iout1R 来自 ADCINA2、Iout2R 来自 ADCINA1、依此类推。  当来自 ePWM1的 SOCA 触发发生时、对所有 ADC 通道进行采样。  因此、如果要更改采样 Iout1R 的 ADC 通道、只需更改 ChSel[1]中的通道编号。   

    ADC 完成转换后、ADC 结果将加载到 DPL_ISR 中的 AdcNetBus[16]中、该 DPL_ISR 位于 LED_Boost_PC_ISR.asm 中。  这使用 ADCDRV_1ch.asm 中的汇编宏来将12位结果传输到左对齐的32位字(请记住、AdcNetBus[16]被定义为 long)、这样 ADC 结果采用 Q24格式。

    我认为数组 AdcNetBus[16]保存 ADC 的每个结果、即使它们未使用(即0、4-8和13-15)。

    请告诉我这是否回答了问题。

    最棒的

    Matthew

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

    感谢您的回答。 我也是这么认为的、通过 ChSel[x]进行更改和重定向。

    我在转换 TMDSRGBLEDKIT 固件的固件时也做了同样的操作、但仍然使用 BOOSTXL-C2KLED 硬件、正如我在下面的链接中询问的那样。
    正如我认为软件是可修改的、并且能够在特定硬件上进行调整。

    e2e.ti.com/.../2483841

    我尝试使用 TMDSRGBLEDKIT 的固件

    C:\ti\controlSUITE\development_kits\Multi-DCDC-Color-LED-Kit_v1.0\LED-ColorMix_v1_0

    我的 BOOSTXL-C2KLED。

    开环工作正常、可以点亮绿色或红色 LED、但当我闭合环路时、似乎无法点亮绿色 LED。 BTW、蓝色 LED 似乎已被破坏。

    BOOSTXL-C2KLED 使用以下 ADC 通道(/LED_Boost_PC/LED_Boost_PC_Main.c):

    // ADC 通道选择
    ChSel[0]= 2;//针对第一个样本错误读取虚拟错误
    ChSel[1]= 2;// A2 - Iout1 -蓝色
    ChSel[2]= 1;// A1 - Iout2 -绿色
    ChSel[3]= 6;// A6 - Iout3 -红色
    ChSel[9]= 9;// B1 - Vout1
    ChSel[10]= 10;// B2 - Vout2
    ChSel[11]= 12;// B3 - Vout3
    ChSel[12]= 14;// B6 - Vin/Vout8

    当 TMDSRGBLEDKIT 使用这些器件时(/TMDSRGBLEDKIT-LED-ColorMix/LED-ColorMix-Main.c):

    // ADC 通道选择
    ChSel[0]= 2;//针对第一个样本错误读取虚拟错误
    ChSel[1]= 2;// A2 - Iout1
    ChSel[2]= 0;// A0 - Iout2
    ChSel[3]= 4;// A4 - Iout3
    ChSel[4]= 1;// A1 - Iout4
    ChSel[5]= 6;// A6 - Iout5
    ChSel[6]= 3;// A3 - Iout6
    ChSel[7]= 14;// B6 - Iout7
    ChSel[8]= 7;// A7 - Iout8
    ChSel[9]= 9;// B1 - Vout1
    ChSel[10]= 10;// B2 - Vout2
    ChSel[11]= 11;// B3 - Vout3
    ChSel[12]= 12;// B4 - Vin/Vout8

    几个问题:
    1.为什么两个固件上的 B3不同? 11 vs 12
    2.是否可以交换 ADC 通道? 由于 BOOSTXL-C2KLED 上的绿色使用 A1、而在 TMDSRGBLEDKIT 中、A1用于 Iout4。 它似乎可以在红色 LED 上工作、但不能在绿色上工作。

    以下是我所做的修改:

    // ADC 通道选择
    ChSel[0]= 2;//针对第一个样本错误读取虚拟错误
    ChSel[1]= 2;// A2 - Iout1
    ChSel[2]= 1;// A0 - Iout2,org "0"。
    ChSel[3]= 6;// A4 - Iout3、org "4"。
    ChSel[4]= 1;// A1 - Iout4、可以加倍吗?
    ChSel[5]= 6;// A6 - Iout5、可以加倍吗?
    ChSel[6]= 3;// A3 - Iout6
    ChSel[7]= 14;// B6 - Iout7
    ChSel[8]= 7;// A7 - Iout8
    ChSel[9]= 9;// B1 - Vout1
    ChSel[10]= 10;// B2 - Vout2
    ChSel[11]= 11;// B3 - Vout3
    ChSel[12]= 12;// B4 - Vin/Vout8

    我正在调试期间修改 Gui_Iset2和 Gui_Iset3以更改光强度。 只能控制红色 LED (Gui_Iset3)、但不能控制绿色 LED (Gui_Iset2)。

    然后、我最终设置如下:

    // ADC 通道选择
    ChSel[0]= 2;//针对第一个样本错误读取虚拟错误
    ChSel[1]= 2;// A2 - Iout1
    ChSel[2]= 1;// A0 - Iout2、org "0"。
    ChSel[3]= 6;// A4 - Iout3、org "4"。
    ChSel[4]= 0;// A1 - Iout4、org "1"。
    ChSel[5]= 4;// A6 - Iout5、org "6"。
    ChSel[6]= 3;// A3 - Iout6
    ChSel[7]= 14;// B6 - Iout7
    ChSel[8]= 7;// A7 - Iout8
    ChSel[9]= 9;// B1 - Vout1
    ChSel[10]= 10;// B2 - Vout2
    ChSel[11]= 12;// B3 - Vout3、org "11"。
    ChSel[12]= 14;// B6 - Vin/Vout8、org "12"。

    效果仍然相同。 此外、一旦我已经设置好了红色 LED、我也无法将其设置为关闭。 这意味着如果我设置 Gui_Iset3 = 0、它不能再关闭。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    维克多

    我注意到在这个主题 https://e2e.ti.com/support/microcontrollers/c2000/f/171/p/666638/2483841#2483841上有一个类似的对话框。  我们似乎得出同样的结论(我也与 Brett 谈过)。   

    正如他提到的、BOOSTXL-C2KLED 上的物理连接与 RGBLED 套件不同。  我可以说 BOOSTXL-C2KLED 的 ChSel[11]= 12是正确的、这里的评论是错误的。  VRED (Vout3)位于该 PCB 上的 ADCINB4 (请参阅下面的原理图捕捉)上、因此该通道的值"12"对于 ADCINB4是正确的。  在 RGB 套件上、它是 ADCINB3、因此该 PCB 为11。

    对于上述确实存在的 I 和 V、这看起来是正确的。  请注意、在 BOOSTXL-C2KLED 上、硬件中不存在 Iout4、5、6、并且未连接到 F28027器件的任何模拟引脚。  我的观点是、由于这些通道是浮动的、因此无需对它们进行采样。  为了节省 ADC 采样时间、我不会为浮点通道启用触发器(保留为"0"与"5")。

    我假设对于 GUI 交互、可能也会有差异、这会导致您需要检查代码的问题。

    最棒的

    Matthew

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

    Matthew、您好!

    我仍然有同样的问题、我已修改如下:

    #defineIout1RAdcResult.ADCRESULT1//Q12
    #defineIout2RAdcResult.ADCRESULT2//Q12
    #defineIout3R AdcResult.ADCRESULT3/Q12
    
    #defineIout4RADCRESULT156.ADCRESULT12/Q12
    #define Iout8R
    
    
    
    ADCRESCR/ADCR015R #ADCR0R #ADCRESCR/ADCR0R #ADCR0R #ADCR/ADCRESCR0R #ADCR0R #ADCR015R ADCR/ADCRESCR/ADCR0R #ADCR0R #ADCR/ADCRESCR0R #ADCR0R #ADCR/ADCRESCR0R #ADCR/ADCRESCR0R #ADCR0R #ADCR/ADCR0R #ADCR/ADCR0R #ADCRESCR/ADCRESCR0R #ADCR015R #ADCR/ADCR/ADCRESCR0R #ADCR/ADCR/ADCR0R #ADCRESCR/
    
    
    
    
    #defineVinRAdcResult.ADCRESULT12//Q12
    
    // ADC 通道选择
    选择 ChSel[0]= 2;//针对第一个样本错误 ChSel[1]的虚拟读取
    ;// A2 - Iout1
    ChSel[2]= 1;// A1 - Iout2
    ChSel[3]= 6;
    
    // Iout1 - Iout1;/Iout2 Chel[3]=
    6;/Iout1 // A6 - Iout5
    ChSel[6]= 3;// A3 - Iout6
    ChSel[7]= 14;// B6 - Iout7
    ChSel[8]= 7;// A7 - Iout8
    */
    ChSel[9]= 9;// B1 - Vout1
    ChSel[10]= 10;// A7 - Iout8 */ Choutel[9]= 9;// B1 - Vout1 Chel[10]= 10;// Vout2
    = 12/ Chout2
    // b6 - Vin/Vout8
    
    // ADC 触发选择
    TrigSel[0]= 5;// ePWM1、ADCSOCA
    TrigSel[1]= 5;// ePWM1、ADCSOCA
    TrigSel[2]= 5;// ePWM1、ADCSOCA
    TrigSel[3];//ADCSOM1
    
    
    
    = 0*、ADCSOCSRG[1];ADCSRM1 = 5;// ADCSOCSRGM1 = 0*、ADCSRGM1 = 5;// ADCSOCSRGM1 = 0*= 0[0];ADCSRG/CADCSRGM1 = 0*// ePWM1、ADCSOCA
    TrigSel[7]= 0;// ePWM1、ADCSOCA
    TrigSel[8]= 0;// ePWM1、ADCSOCA
    */
    TrigSel[9]= 5;// ePWM1、ADCSOCA
    TrigSel[10]= 5;// ADCSOM1
    
    = 5;/eCSOCSRG[12]= 5;// ADCSRGM1

    我需要检查的其他任何地方?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我现在修复了蓝色 LED。 U6没有输出。
    由于两个硬件的蓝色 LED 连接相同、我认为蓝色 LED 将亮起。
    仍然是同样的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    维克多
    让我们尝试一些简单的方法来验证连接是否正常。 加载代码后、只需将其运行到至少经过设置阶段并停止。 现在、我想使用寄存器窗口来查看 GPIOA 寄存器:

    1)我想为 GPIO0/1/2全0选择多路复用器。 这将使 PWM 失控并将其返回到 GPIO
    2)然后将 GPIOADIR 寄存器中相应的位修改为"1"。 这会将引脚置于输出模式。
    3)现在、使用 GPIOADAT 寄存器、向 GPIO0/1/2位写"1"。 如果值为"1"、则应分别看到蓝色/绿色/红色亮起。 如果为"0"、则应关闭。

    在调试控制代码之前、我要再次确保物理连接良好。

    请告诉我这是怎么发生的。

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

    Matthew、您好!

    很抱歉、回复较晚、已忙了一段时间。
    如果我将 GPIO0-2设为常数1、FET 将长时间导通、V+将通过电感器短接至 GND、并可能损坏 FET。

    总之、在我进行实验之前、我将始终调试并运行原始代码以验证我的设置(物理连接)。

    维克多。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    维克多
    您能否连接或内联代码的 PWM 部分、包括 GPIO 设置和主 PWM 设置? 此时、我对 ADC 采样感到满意、因此让我们检查等式的另一侧、看看我们是如何激励 FET 的。

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

    我使用 USB 示波器进行了检查(我的带宽有限、最高仅达6Mbps)。

    LED 升压 BOOSTXL-C2KLED 仅在50kHz 时闪烁、而多 LED TMDSRGBLEDKIT 在400kHz 左右时闪烁。

    以下是开环状态下的寄存器:

    LED 升压 BOOSTXL-C2KLED
    GRP( ePWM1 )
    TBCTL无符号/可读、可写0x001A
    TBSTS无符号/可读、可写0x0001
    TBPHS无符号/可读、可写0x00000000
    TBCTR无符号/可读、可写0x0068
    TBPRD无符号/可读、可写0x0258
    TBPRDHR无符号/可读、可写0x0000
    CMPCTL无符号/可读、可写0x0300
    CMPA无符号/可读、可写0x00000000
    CMPB无符号/可读、可写0x021D
    AQCTLA无符号/可读、可写0x0090
    AQCTLB无符号/可读、可写0x0600
    AQSFRC无符号/可读、可写0x0000
    AQCSFRC无符号/可读、可写0x0000
    DBCTL无符号/可读、可写0x0000
    DBRED无符号/可读、可写0x0000
    DBFED无符号/可读、可写0x0000
    TZSEL无符号/可读、可写0x0000
    TZDCSEL无符号/可读、可写0x0000
    TZCTL无符号/可读、可写0x0000
    TZEINT无符号/可读、可写0x0000
    TZFLG无符号/可读、可写0x0000
    TZCLR无符号/可读、可写0x0000
    TZFRC无符号/可读、可写0x0000
    ETSEL无符号/可读、可写0x0A0A
    ETPS无符号/可读、可写0x0303
    ETFLG无符号/可读、可写0x0004
    ETCLR无符号/可读、可写0x0000
    ETFRC无符号/可读、可写0x0000
    PCCTL无符号/可读、可写0x0000
    HRCNFG无符号/可读、可写0x0000
    HRPWR无符号/可读、可写0x0000
    HRMSTEP无符号/可读、可写0x0000
    HRPCTL无符号/可读、可写0x0000
    TBPRDM无符号/可读、可写0x02580000
    CMPAM无符号/可读、可写0x00000000
    DCTRIPSEL无符号/可读、可写0x0000
    DCACTL无符号/可读、可写0x0000
    DCBCTL无符号/可读、可写0x0000
    DCFCTL无符号/可读、可写0x0000
    DCCAPCTL无符号/可读、可写0x0000
    DCFOFFSET无符号/可读、可写0x0000
    DCFOFFSETCNT无符号/可读、可写0x0000
    DCFWINDOW无符号/可读、可写0x0000
    DCFWINDOWCNT无符号/可读、可写0x0000
    DCCAP无符号/可读、可写0x0000

    多 LED TMDSRGBLEDKIT
    GRP( ePWM1 )
    TBCTL无符号/可读、可写0x0018
    TBSTS无符号/可读、可写0x0001
    TBPHS无符号/可读、可写0x00000000
    TBCTR无符号/可读、可写0x000D
    TBPRD无符号/可读、可写0x0095
    TBPRDHR无符号/可读、可写0x0000
    CMPCTL无符号/可读、可写0x0005
    CMPA无符号/可读、可写0x00000000
    CMPB无符号/可读、可写0x000E
    AQCTLA无符号/可读、可写0x0012
    AQCTLB无符号/可读、可写0x0102
    AQSFRC无符号/可读、可写0x0000
    AQCSFRC无符号/可读、可写0x0000
    DBCTL无符号/可读、可写0x0000
    DBRED无符号/可读、可写0x0000
    DBFED无符号/可读、可写0x0000
    TZSEL无符号/可读、可写0x0000
    TZDCSEL无符号/可读、可写0x0000
    TZCTL无符号/可读、可写0x0000
    TZEINT无符号/可读、可写0x0000
    TZFLG无符号/可读、可写0x0000
    TZCLR无符号/可读、可写0x0000
    TZFRC无符号/可读、可写0x0000
    ETSEL无符号/可读、可写0x00A
    ETPS无符号/可读、可写0x0707
    ETFLG无符号/可读、可写0x0005
    ETCLR无符号/可读、可写0x0000
    ETFRC无符号/可读、可写0x0000
    PCCTL无符号/可读、可写0x0000
    HRCNFG无符号/可读、可写0x0000
    HRPWR无符号/可读、可写0x0000
    HRMSTEP无符号/可读、可写0x0000
    HRPCTL无符号/可读、可写0x0000
    TBPRDM无符号/可读、可写0x00950000
    CMPAM无符号/可读、可写0x00000000
    DCTRIPSEL无符号/可读、可写0x0000
    DCACTL无符号/可读、可写0x0000
    DCBCTL无符号/可读、可写0x0000
    DCFCTL无符号/可读、可写0x0000
    DCCAPCTL无符号/可读、可写0x0000
    DCFOFFSET无符号/可读、可写0x0000
    DCFOFFSETCNT无符号/可读、可写0x0000
    DCFWINDOW无符号/可读、可写0x0000
    DCFWINDOWCNT无符号/可读、可写0x0000
    DCCAP无符号/可读、可写0x0000
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    适用于 TMDSRGBLEDKIT

    #defineprd150// 150周期计数= 400KHz @ 60MHz
    ADC_SOC_CNF (ChSel、TrigSel、ACQPS、16、0);
    PWM_2ch_UpCnt_CNF (1、prd、1、0);
    PWM_2ch_UpCnt_CNF (2、prd、0、2);
    PWM_2ch_UpCnt_CNF (3、prd、0、2);
    PWM_2ch_UpCnt_CNF (4、prd、0、2);

    用于 BOOSTXL-C2KLED

    #define PRD 1200// 1200周期计数= 50 KHz @ 60 MHz
    ADC_SOC_CNF (ChSel、TrigSel、ACQPS、16、0);
    PWM_DualUpDwnCnt_CNF (1、prd、1、0);
    PWM_DualUpDwnCnt_CNF (2、prd、0、400);
    PWM_1ch_UpDwnCnt_CNF (3、prd、0、400);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    维克多
    很抱歉回复失败。 我仍然认为这个主题上可能有多个主题、不同的 TI 工厂人员对此做出了响应。 您能告诉我上述内容的哪些方面、以便我可以确保不会重复答案吗?

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

    已有回复... e2e.ti.com/.../2524668
    您可以关闭...