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/TMS320F28035:运行 c2000ware 示例代码时出错。

Guru**** 2539500 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/793195/ccs-tms320f28035-errors-running-c2000ware-sample-codes

器件型号:TMS320F28035
主题中讨论的其他器件:C2000WARE

工具/软件:Code Composer Studio

您好!

我正在尝试创建一个由 ADC 输出控制的占空比 PWM。 在对此进行了努力之后、我决定检查 c2000ware 示例。 具体来说、是 Adcoc 和 AdcTempSensor。 在运行其中任一示例时、我会得到以下一组错误。 在我能够使这些示例正常工作之前、我对如何使我自己的代码正常工作有一些困难。 我还将包括示例文件。 感谢您的任何帮助。

//######################################################################################################################
//
//文件:example_2803xAdex.c
//
//标题:ADC 转换开始示例
//
! \addtogroup F2803x_example_list
//! 

ADC 转换开始(ADC_SoC)

//! //! 此 ADC 示例使用 ePWM1来生成周期性 ADC SOC - ADCINT1。 //! 两个通道被转换、ADCINA4和 ADCINA2。 //! //! b 监视\b 变量\n //! - Voltage1[10]-最后10个 ADCRESULT0值 //! - Voltage2[10]-最后10个 ADCRESULT1值 //! - ConversionCount -当前结果编号0-9 //! -循环计数 -空闲循环计数 器// // ////////############################################################################################################ //$TI 发布:F2803x 支持库 v2.01.00.00 $ //$发布 日期:截至10月18日15:46:42 CDT 2018 $ //版权所有: //版权所有(C) 2009-2018 Texas Instruments Incorporated - http://www.ti.com/ // 只要 满足以下条件,就允许以源代码和二进制形式重新分发和使用//修改或不修改//: // //重新分发源代码必须保留上述版权 //声明、此条件列表和以下免责声明。 // //二进制形式的再发行必须复制上述版权 //声明、此条件列表和// 分发随附的//文档和/或其他材料中的以下免责声明。 //// 未经 事先书面许可,不能使用德州仪器公司的名称或//其贡献者的名称来认可或推广源自此软件的产品//。 //// 本软件由版权所有者和贡献者提供 //“按原样”,不 承认任何明示或暗示的保证,包括但不限于//适销性和对//特定用途适用性的暗示保证。 在任何情况下、版权 //所有者或贡献者都不对任何直接、间接、偶然、 //特殊、模范、 或相应的损害(包括但不 限于采购替代产品或服务;丧失使用、 //数据或利润; 或业务中断)、无论 出于何种原因使用 本软件(即使被告知可能会造成此类损坏)、还是出于任何原因而产生的任何//责任理论(无论是合同、严格责任还是侵权行为)//(包括疏忽或其他)。 //$ //######################################################################################################################## // //包含的文件 // #include "DSP28x_Project.h" //器件头文件和示例包括文件 // //函数原型 // __interrupt void ADC_ISR (void); void ADC_Config (void); // 全局变量 // uint16 LoopCount; uint16 ConversionCount; uint16 Voltage1[10]; uint16 Voltage2[10]; // main (void) // //步骤1. 初始化系统控制: // PLL、安全装置、启用外设时钟 //此示例函数位于 DSP2803x_SYSCTRL.c 文件中。 // InitSysCtrl(); // //步骤2. 初始化 GPIO: //此示例函数位于 DSP2803x_GPIO.c 文件和中 //说明了如何将 GPIO 设置为其默认状态。 // // InitGpio();//针对此示例跳过 // //步骤3. 清除所有中断并初始化 PIE 矢量表: //禁用 CPU 中断 // Dint; // //将 PIE 控制寄存器初始化为默认状态。 //默认状态为禁用所有 PIE 中断和标志 //被清除。 //此函数位于 DSP2803x_PIECTRL.c 文件中。 // InitPieCtrl(); // //禁用 CPU 中断并清除所有 CPU 中断标志 // IER = 0x0000; IFR = 0x0000; // //使用指向 shell 中断的指针初始化 PIE 矢量表 //服务例程(ISR)。 //这将填充整个表,即使是中断也是如此 //在本例中未使用。 这对于调试很有用。 //可以在 DSP2803x_DefaultIsr.c 中找到 shell ISR 例程 //此函数可在 DSP2803x_PieVect.c 中找到 // InitPieVectTable(); // //此示例中使用的中断被重新映射到 //此文件中的 ISR 函数。 // EALLOW; //写入 EALLOW 受保护寄存器时需要此选项 PieVectTable.ADCINT1 =&ADC_ISR; EDIS;//这是禁止写入 EALLOW 受保护寄存器所必需的 // //步骤4. 初始化所有器件外设: // InitAdc ();//对于此示例,初始化 ADC AdcOffsetSelfCal(); // //步骤5. 特定于用户的代码、启用中断: // // //在 PIE 中启用 ADCINT1 // PieCtrlRegs.PIEIER1.bit.INTx1 = 1;//在 PIE 中启用 INT 1.1 IER |= M_INT1; //启用 CPU 中断1 EINT; //启用全局中断 INTM ERTM; //启用全局实时中断 DBGM LoopCount = 0; ConversionCount = 0; // //配置 ADC //注意:通道 ADCINA4将被双采样以解决问题 //针对 rev0器件勘误表的 ADC 第1个样片问题 // EALLOW; AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1;//ADCINT1在 AdcResults 锁存后跳闸 AdcRegs.INTSEL1N2.bit.INT1E = 1;//启用 ADCINT1 AdcRegs.INTSEL1N2.bit.INT1CONT = 0;//禁用 ADCINT1连续模式 AdcRegs.INTSEL1N2.bit.INT1SEL = 2;//设置 EOC2以触发 // ADCINT1启动 // //将 SOC0通道选择设置为 ADCINA4 //(针对 rev0勘误权变措施的虚拟样本) // AdcRegs.ADCSOC0CTL.bit.CHSEL = 4; AdcRegs.ADCSOC1CTL.bit.CHSEL = 4;//将 SOC1通道选择设置为 ADCINA4 AdcRegs.ADCSOC2CTL.bit.CHSEL = 2;//将 SOC2通道选择设置为 ADCINA2 // //设置 EPWM1A 上的 SOC0启动触发器,因为 SOC0转换循环 //首先是 SOC1,然后是 SOC2 // AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 5; // //设置 EPWM1A 上的 SOC1启动触发器,因为 SOC0转换循环 //首先是 SOC1,然后是 SOC2 // AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 5; // //设置 EPWM1A 上的 SOC2启动触发器,因为轮询 SOC0转换 //首先是 SOC1,然后是 SOC2 // AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 5; // //将 SOC0 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) // AdcRegs.ADCSOC0CTL.bit.ACQPS = 6; // //将 SOC1 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) // AdcRegs.ADCSOC1CTL.bit.ACQPS = 6; // //将 SOC2 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) // AdcRegs.ADCSOC2CTL.bit.ACQPS = 6; EDIS; // //假设 ePWM1时钟已在 InitSysCtrl()中启用; // EPwm1Regs.ETSEL.bit.SOCAEN = 1;//启用组上的 SOC EPwm1Regs.ETSEL.bit.SOCASEL = 4;//从 CPMA 中选择 SOC、以进行递增计数 EPwm1Regs.ETPS.bit.SOCAPRD = 1;//在发生第一个事件时生成脉冲 EPwm1Regs.CMPA.half.CMPA = 0x0080; //设置比较 A 值 EPwm1Regs.TBPRD = 0xFFFF;//为 ePWM1设置周期 EPwm1Regs.TBCTL.bit.CTRMODE = 0; //向上计数并启动 // //等待 ADC 中断 // for (;;) { LoopCount++; } } // // ADC_ISR - // _中断 void ADC_ISR (void) { // //将 ADCRESULT0作为变通办法的一部分丢弃 //版本0的第1个样本勘误表 // Voltage1[ConversionCount]= AdcResult.ADCRESULT1; Voltage2[ConversionCount]= AdcResult.ADCRESULT2; // //如果记录了20次转换,则重新开始 // if (ConversionCount = 9) { ConversionCount = 0; } 其他 { ConversionCount++; } // //清除 ADCINT1标志为下一个 SOC 重新初始化 // AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;//确认 PIE 中断 返回; } // //文件结束 //

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

    我将项目从 C2000Ware_1_00_06_00导入到 CCSv9.0.1中、并且在构建时没有任何错误。 请仔细检查您的版本和安装。 此外、我们在 F28035技术讲座中有一个类似的项目、您可能对此感兴趣。 请注意、该项目是使用早期版本的工具构建的、但源文件对您很有用。 研讨会可在以下网址找到:

    processors.wiki.ti.com/.../C2000_Archived_Workshops

    请参阅实验6练习。 您可能还想尝试实验7练习。

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复! 正确、我使用的是较旧版本的 CCS。 但是、现在出现错误 path make "、未在 Example_2803xAd"Program"中找到。 我之前成功地使用了多日技术讲座的实验6和实验7。 在代码中使用 ADC 结果时、这些都没有为我提供任何帮助、我需要执行这些操作来控制 PWM 占空比。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Adam、

    这是路径错误。 您是否使用 C2000Ware 的默认安装? 默认位置为:

    C:\ti\c2000\C2000Ware\

    您是否使用版本 C2000Ware_1_00_06_00?

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

    我已经听过您的声音了一段时间,因此我假设您能够解决您的问题。 如果情况并非如此,请拒绝此解决方案或回复此主题。 如果此主题被锁定、请制作一个描述问题当前状态的新主题。

    - Ken