工具与软件:
团队成员、您好!
我正在开发 AM62x 单核处理器。
我们使用的是 VxWorks RTOS。
我想使用"裸机"方法在 ECAP0-APWM 引脚 C14上生成 PWM。
下面是我的问题:
1.我找不到"ECAP0-APWM"模块的"Source Control Register" 您能帮助我们查找 ECAP0-APWM 模块的时钟源吗?

下面是我们为在 ECAP0-APWM 引脚 C14上生成 PWM 而编写的示例代码。
注意: 我们参考了 CCS。
我们不需要中断、因此我将其禁用。
void ecap_apwm_mode_main (void * args)
{
int32_t status = SystemP_Success;
uint64_t periodVal、compareVal = 0;
printf ("ECAP APWM 模式测试已启动...\r\n");
/*获取 ECAP 地址*/
gEcapBaseAddr =(uint32_t) AddrTranslateP_getLocalAddr (CONFIG_ECAP0_BASE_ADDR);
numIsrCnt = APP_ECAP_RUN_TIME * APP_ECAP_APWM_OUT_FREQ;
printf ("ecap address:%x\r\n"、gEcapBaseAddr);
/*检查 PWM 输出 Hz 的条件为0或占空比> 100 */
if (((APP_ECAP_APWM_OUT_FREQ = 0)||(APP_ECAP_APWM_OUT_DUTY_CYCLE > 100))
{
STATUS = SYSTEMP_FAILURE;
}
if (SYSTEMP_SUCCESS ==状态)
{
/*禁用 ECAP 中断和停止计数器*/
ECAP_intrDisable (gEcapBaseAddr、ECAP_INT_ALL);
ECAP_IntrStatusClear (gEcapBaseAddr、ECAP_INT_ALL);
ECAP_captureLoadingDisable (gEcapBaseAddr);
ECAP_counterControl (gEcapBaseAddr、ECAP_COUNTER_STOP);
/*启用周期相等中断*/
//ECAP_IntEnable (gEcapBaseAddr、ECAP_PRDEQ_INT);
/*配置 ECAP 工作模式、输出脉冲初始状态、同步输入、输出*/
ECAP_operatingModeSelect (gEcapBaseAddr、ECAP_APWM_MODE);
ECAP_APWM_POLARityConfig (gEcapBaseAddr、APP_ECAP_APWM_OUT_POLARITY);
ECAP_syncInOutSelect (gEcapBaseAddr、ECAP_SYNC_IN_DISABLE、ECAP_SYNC_OUT_DISABLE);
periodVal = ECAP_INPUT_CLK_FREQ/APP_ECAP_APWM_OUT_FREQ;
/*如果 periodVal > 32b 那么我们不能给出准确的计时*/
// DebugP_assert (periodVal < 0xFFFFFFFFU);
/*根据占空比计算捕获值*/
compareVal =(periodVal * APP_ECAP_APWM_OUT_DUTY_CYCLE)/ 100;
eCAP_APWM_captureConfig (gEcapBaseAddr、(uint32_t) compareVal、(uint32_t) periodVal);
eCAP_APWM_shadowCaptureConfig (gEcapBaseAddr、(uint32_t) compareVal、(uint32_t) periodVal);
/*启动计数器*/
ECAP_counterControl (gEcapBaseAddr、ECAP_COUNTER_FREE_RUNNING);
printf ("ECAP APWM 测试通过!\r\n");
printf ("所有测试均已通过!\r\n ");
}
设计
{
printf ("某些测试失败!!\r\n");
}
// Board_driversClose ();
// Drivers_close();
}
//===========
int main (void)
{
ecap_apwm_mode_main (NULL);
while (1)
{
睡眠(1);
}
返回0;
}
//=============
Dtsi 更改:
======
主 dtsi:
====
ecap0: PWM@23100000 {
Compatible ="ti、am3352-ECAP";
#pwm-cells =<3>;
REG =<0x00 0x23100000 0x00 0x100>;
电源域=<&K3_PDS 51 TI_SCI_PD_Exclusive>;
时钟=<&K3_CLKS 51 0>;
时钟名称="FCK";
};
通用 dtsi:
======
ecap0 (&E){
状态="正常";
pinctrl-names ="默认值";
pinctrl-0 =<&myecap1_pins_default>;
};
myecap1_pins_default:myecap1-default-pins{
PINCTL-SINGLE、PINS =<
AM62X_IOPAD (0x1f0、PIN_OUTPUT、8)/*(C14) EXT_REFCLK1.ECAP0_IN_APWM_OUT */
>;
};
//=================
注:我只怀疑我没有启用 APWM 的时钟。 您能说明如何为 ECAP0-APWM 时钟启用时钟吗?
请指导我们上面的天气源代码片段是正确的吗? 如果没有、请建议我们进行更正。
此致、
Kaushal Patel