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.
工具/软件:TI-RTOS
您好:
我使用 LAUNCHXL2-TMS57012 (TMS570LS1224)。 需要将 ADC 的起点连接到 PWM。 在 HALKOGEN 的"驱动程序启用"选项卡中、我启用 ADC 和 PWM 驱动程序、配置并允许 PWM 作为 SOCA 的源。 在“特殊管脚复用”中,设置“触发选项 B”,然后设置 ADC。 代码并刷写控制器之后、我将看到该代码。
程序代码附在下面。 ADC 不工作。 数字化完成的标志始终等于0。 PWM 模块中 SOCA 的标志被生成。
如何解决?
#include "sys_common.h" #include "gio.h" #include "reg_adc.h" #include "reg_pinmux.h" #include "etpwm.h" #include "sys_vim.h" #include "pinmux.h" #include "reg_pinmux.h"#include "t.0_inc = 0、t.0[0、t_data] = 0、void 0、t.0[0、t.0]、t.0_inu.0_inc = 0、t.0_void、t.0_adc = 0、t.0_inc = 0、t.0_inu.h;t、t.0_data adcInit(); adcStartConversion (adcREG1、adcGROUP1); muxInit(); etpwmInit(); etpwmStartTBCLK(); _enable_interrupt_(); while (1) { ; } } #pragma CODE_STATE (etpwm1Interrupt、32) #pragma INTERRUPT (etpwm1Interrupt、IRQ) INTERRUPT void etpwm1Interrupt (void) { asm ("_nop"); 状态= adcIsConversionComplete (adcREG1、adcGROUP1); adcGetData (adcREG1、adcGROUP1、&ADC_DATA[0]); ADC_Result [ADC_DATA[0].id]= ADC_DATA[0].value; ADC_Result [ADC_DATA[1].id]= ADC_DATA[1].value; gioToggleBit (gioPORTB、1); etpwmREG1->ETCLR = 1U; } #pragma CODE_STATE (etpwm2Interrupt、32) #pragma INTERRUPT (etpwm2Interrupt、IRQ) INTERRUPT void etpwm2Interrupt (void) { etpwmREG2->ETCLR = 1U; }
您好、Egor、
1. Pinmux-->特殊的引脚复用:使用备用 ADC 'Trigger Option-B'并启用 TBCLK 同步
您选择了什么事件来生成 ePWM 中断?
您能否启用 ADC 中断并在 ADC ISR 中读取 ADC 数据?
例如:
adcEnableNotification (adcREG1、adcGROUP0);
adcStartConversion (adcREG1、adcGROUP0);
/*用户代码开始(4)*/
void adcNotification (adcbase_t * adc、uint32组)
{
adcData_t 数据;
uint32计数;
uint16 cmpA;
count = adcGetData (adcREG1、adcGROUP0、&data);
}
大家好、QJ Wang!
在执行指令后、没有发生任何事情。
事件是 ETPWM1模块的 CTR_PRD。 我尝试使用 CMPA、但没有效果。
由于 ADC 中断会破坏 CPU、因此无法使用 ADC 中断进行启动。 所开发软件的特异性假定 ADC 的运行最大独立于处理器。
谢谢!
我以某种方式启动它... 如果我选择 ETPWMA2、它就会起作用。 显然、PINMMR 寄存器中的问题。
数据表说明:
对于 ETPWMA2触发:
G1SRC = 110;
PINMMR30[0]=0;
PINMMR30[1]=1;
以及我们在 halcogen 之后所拥有的:
G1SRC = 110;
PINMMR30[0]=0;
PINMMR30[1]=0;(!)
这很奇怪。 但它起作用了。
对于 ETPWMA1触发:
G1SRC = 011;
PINMMR30[0]=0;
PINMMR30[1]=1;
PINMMR30[16]=0;
PINMMR30[17]=1;
在 halcogen 之后:
G1SRC = 011;
PINMMR30[0]=0;
PINMMR30[1]=0;(!)
PINMMR30[16]=0;
PINMMR30[17]=1;
结束它不起作用。
halcogen 中是否有确定多路复用器的字段、如第二个图所示?
我发现了一个错误。 我没有考虑 SOCxA_SEL 寄存器。 PINMMR35寄存器 必须手动置位。 一切正常。 但不清楚为什么它在没有 PINMMR[30]=1的情况下起作用。