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.
您好!
我已在 halcogen 配置中启用了用于 ADC 通知的 RTI 和 ePWM。 我可以在 RTI 通知函数中看到 RTI 中断被触发、但我看不到 ADC 通知是由 ePWM 事件触发的。 我 有3个 ADC 引脚输入、如下所示、但 AL 值与 ADC_DATA[0].value 相同。
ADC_DATA[0].value =(uint16)(adcREG1->GxBUF[adcGROUP1].BUF0);///从电位计//获取第一个转换引脚8的值
ADC_DATA[1].value =(uint16)(adcREG1->GxBUF[adcGROUP1].BUF0);///从由 ePWM//触发的电流感应中获取第一个转换引脚10的值
ADC_DATA[2].value =(uint16)(adcREG1->GxBUF[adcGROUP1].BUF0);////从由 ePWM//触发的电流感应中获取第一个转换引脚11的值
您可以帮助检查我的 halcogen 和代码吗?:
void Init_all() { _enable_IRQ_interrupt_();/* enable irq interrupt in */ sciInit(); //Initialize the SCI (UART) module adcInit(); //Initialize the ADC module //hetInit(); //Initialize Het(PWM)// gioInit(); //Initialize GIO// etpwmInit();//Initialize PWM// TI_Fee_Init();// Initialize FEE. This will create Virtual sectors, initialize global variables etc.// rtiInit();// Initialize RTI driver // etpwmStartTBCLK();//This function starts the time-base clocks of all eTPWMx modules adcEnableNotification(adcREG1, adcGROUP1);//ADC enable notification adcStartConversion(adcREG1, adcGROUP1); rtiEnableNotification(rtiREG1,rtiNOTIFICATION_COMPARE0);// Enable RTI Compare 0 interrupt notification // gioEnableNotification(gioPORTA,1);//Enable notifications of GIO// canInit();//configuring CAN1 MB1,Msg ID-1 to transmit and CAN2 MB1 to receive // canEnableErrorNotification(canREG1); // enabling error interrupts CAN_Bus1// canEnableErrorNotification(canREG2); // enabling error interrupts CAN_Bus2// rtiStartCounter(rtiREG1,rtiCOUNTER_BLOCK0); // Start RTI Counter Block 0 // } //////**********************End of Initialization***********************///// void main(void) { Init_all();//Initialize all drivers// while(1) // Loop to acquire and do the task// { } } #pragma WEAK(adcNotification) void adcNotification(adcBASE_t *adc, uint32 group) { /* enter user code between the USER CODE BEGIN and USER CODE END. */ /* USER CODE BEGIN (14) */ GetAdcInput(); /* USER CODE END */ } void GetAdcInput(void) { adcData_t adc_data[3]={}; //ADC Data Structure adc_data[0].value = (uint16)(adcREG1->GxBUF[adcGROUP1].BUF0); ////Get value for first conversion pin 8// adc_data[1].value = (uint16)(adcREG1->GxBUF[adcGROUP1].BUF0); ////Get value for first conversion pin 10// adc_data[2].value = (uint16)(adcREG1->GxBUF[adcGROUP1].BUF0); ////Get value for first conversion pin 11// }
下面是我的参考示例:
请帮助解决此问题。
谢谢你。
此致、
Lukman
尊敬的 Lukman:
您未共享 ETPWM 配置、能否确保正确配置 ETPWM?
尤其是在一个下面
您是否启用了 ADC SOCA?
--
谢谢、此致、
Jagadish。
您好 Jagadish、
感谢你的答复。
实际上、我在 ADC_DATA[0]上获得了值。该值用于转换电位计的模拟电压、并确认其正确的值。
然后 、连接到电流感测的 ADC_DATA[1].value (ADC 引脚10)& ADC_DATA[2].value (ADC 引脚11)与 ADC_DATA[0].value 具有相同的值。
请检查下图中的 PWM 设置。 我启用了 ADC SOCA。 在引脚多路复用上、默认情况下我还看到了选择 eTPWM SOC 启动的情况。 敬请注意、是否需要进行任何设置或寄存器、以便 ADC_DATA[1].Value (ADC 引脚10)& ADC_DATA[2].Value (ADC 引脚11)可以 从电流感测中获得正确的值? 或者、由于我使用硬件触发器、我应该 用电线将 eTPWM 引脚连接到 ADC 引脚、还是不需要?
谢谢你。
此致、
Lukman
尊敬的 Lukman:
您能否使用以下项目进行测试。
e2e.ti.com/.../ADC_5F00_with_5F00_ETPWM_5F00_LC43.zip
在该项目中、我将使用该 PWM I AM 触发 ADC 生成周期为6mS 且占空比为50%的 PWM 信号、该 ADC 以中断模式运行。 每当发生 ADC 中断时、我都会将转换后的数据复制到缓冲区中、因此请参阅上面的项目并在您的末尾对其进行测试
--
谢谢、此致。
Jagadish。
您好 Jagadish、
我想更新我解决了我的问题。 在我将闪存设置 从只需要扇区更改为整个闪存后、一切都运行良好。
感谢你的帮助。
谢谢你。
此致、
Lukman