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.

[参考译文] TMS320F28335:基于 EPWM 中断和向 SYS/BIOS 添加任务的 ADC 初始化

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1383956/tms320f28335-adc-initialization-based-on-epwm-interrupt-and-adding-task-to-sys-bios

器件型号:TMS320F28335
Thread 中讨论的其他器件: SYSBIOSTM4C123GH6PMC2000WAREcontrolSUITE

工具与软件:

嘿、Fellas、我是一名新手、正在使用具有控制卡的 TMS320F28335、您可以看到下面。 我正在对其运行 SYS/BIOS、并想使用 ADC 来测量交流电压。 我无法通过数据表弄清楚初始化序列。 我从一个示例开始、但它显示了错误。 我发布了 我写入用于切换 GPIO 的代码、现在我要尝试在其中添加一个 ADC 任务。 但在此之前、我想通过内置功能来校准 ADC、所以会出现错误。

代码如下:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
* ======== main.c ========
*/
#include <xdc/std.h>
#include <xdc/runtime/Error.h>
#include <xdc/runtime/System.h>
#include <ti/sysbios/BIOS.h>
#include <ti/sysbios/knl/Task.h>
#include <ti/sysbios/hal/Hwi.h>
#include <ti/sysbios/knl/Semaphore.h>
extern const ti_sysbios_knl_Semaphore_Handle sem0,sem1;
#include "include/DSP28x_Project.h"
#define GPAQSEL1 (*((volatile UInt16 *)0x6F82)) //GPA Qualifier Select. It works like how many samples required to register an Input
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

这是.cfg 文件:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var Defaults = xdc.useModule('xdc.runtime.Defaults');
var Diags = xdc.useModule('xdc.runtime.Diags');
var Error = xdc.useModule('xdc.runtime.Error');
var Log = xdc.useModule('xdc.runtime.Log');
var LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf');
var Main = xdc.useModule('xdc.runtime.Main');
var Memory = xdc.useModule('xdc.runtime.Memory')
var SysMin = xdc.useModule('xdc.runtime.SysMin');
var System = xdc.useModule('xdc.runtime.System');
var Text = xdc.useModule('xdc.runtime.Text');
var BIOS = xdc.useModule('ti.sysbios.BIOS');
var Clock = xdc.useModule('ti.sysbios.knl.Clock');
var Swi = xdc.useModule('ti.sysbios.knl.Swi');
var Task = xdc.useModule('ti.sysbios.knl.Task');
var Semaphore = xdc.useModule('ti.sysbios.knl.Semaphore');
var Hwi = xdc.useModule('ti.sysbios.family.c28.Hwi');
/*
* Uncomment this line to globally disable Asserts.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

错误:

我想要的是使用 ePWM 触发 ADC SoC、或者假设我要对220V 的交流50Hz 波进行采样、至少为2uS。 我只是想从头开始了解它。 我用中断(不是 TI-RTOS)在 TM4C123GH6PM 上完成了相同的任务、一切都运行正常。 但 C2000的数据表不太友好。

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

    该错误消息是关于无法找到 SysCtrlRegs、因此我想您将 C2000Ware 头文件集成到 SYS/BIOS 工程的方式存在问题。 C2000Ware 中有一个文档(device_support\f2833x\docs\F2833x_dev_user_guide.pdf)、其中包含"2.2 Project Creation (2.2项目创建)"部分。 步骤3-6介绍了需要添加到工程以使用头文件(例如包含 SysCtrlRegs 的工程)的工程属性和文件。

    惠特尼

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

    我按照该指南设置了起作用的项目。 但我现在遇到了重叠误差。 请参阅下面随附的错误。

    Fullscreen
    1
    2
    Description Resource Path Location Type
    #10264 PIE_VECT memory range overlaps existing memory range PIEVECT .ccsproject /typical line 47, external location: C:\ti\controlSUITE\device_support\f2833x\v142\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd C/C++ Problem
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    重叠的因素有很多、因此我删除了 ram_lnk.cmd 文件、这样就解决了问题。 但我认为这不是一个好的做法。 比如、我将上传闪存中的固件、使其独立工作。因此、这可能是个问题。 就像我之前说的、我对它不了解太多。

    是否有人可以为 ADC 提供初始化模式?

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

    而不是使用 DSP2833x_Headers_ 非 BIOS .cmd、使用 DSP2833x_Headers_ BIOS .cmd。 本常见问题解答中提供了一些有关 SYS/BIOS 和 C2000Ware 软件之间冲突的指导。 遗憾的是、我没有 ControlSUITE 头文件的等效指南、但想法是一样的-您需要确保您在的应用中放置的代码不会与 SYS/BIOS 相冲突(PIE 矢量表初始化、时钟初始化等)

    但是、SYS/BIOS 不会影响 ADC 寄存器的配置、因此您应该能够仅重复使用 controlSUITE 示例中的 ADC 寄存器初始化序列。

    惠特尼