S32K 输入捕获嗨,团队、
我们使用的是 S32K146 微控制器,我们需要任何一个输入引脚作为输入捕获引脚,你能建议我应该使用哪个模块配置吗?
如果我使用 FTM 作为信号测量,我能否实现输入捕获功能?或者我应该使用 ic_pal 功能?
请支持
谢谢
Shruthi C
Re: S32K Input Capture你好,彼得、
我无法使用 INT_SYS_InstallHandler(FTM0_Ch0_Ch1_IRQn,PWM_InputCapture_IRQHandler,NULL);函数,因为它使用默认处理程序,而不使用FTM0_Ch0_Ch1_IRQn处理程序。
我的配置是
/* flexTimer_ic_1 InitConfig 的全局配置 */
ftm_user_config_t flexTimer_ic_1_InitConfig =
{
{
true,/* 软件触发信号状态 */
false,/* 硬件触发信号 1 状态 */
false,/* 硬件触发信号 2 状态 */
false,/* 硬件触发信号 3 状态 */
虚假,/* 最大加载点状态 */
虚假,/* 最小装载点状态 */
ftm_system_clock、/* INVCTRL 寄存器的更新模式 */
ftm_system_clock、/* SWOCTRL 寄存器的更新模式 */
ftm_system_clock、/* OUTMASK 寄存器的更新模式 */
ftm_system_clock、/* CNTIN 寄存器的更新模式 */
false,/* 自动清除触发信号 */
ftm_update_now、/* 同步点 */
},
ftm_mode_input_capture、/* FTM 的运行模式 */
ftm_clock_divid_by_1、/* FTM 时钟预分频器 */
ftm_clock_source_systemclk、 /* FTM 时钟源 */
ftm_bdm_mode_11、/* FTM 调试模式 */
虚假, /* 中断状态 */
false /* 初始化触发信号 */
};
/* FlexTimer_IC_1 的输入捕获配置 */
ftm_input_param_t flexTimer_ic_1_InputCaptureConfig =
{
1U,/* 通道配置数量 */
65535U,/* 最大计数值 */
flexTimer_ic_1_InputCaptureChannelConfig/* 通道配置*/
};
/* FlexTimer_IC_1 输入捕获的信道配置结构 */
ftm_input_ch_param_t flexTimer_ic_1_InputCaptureChannelConfig[1] =
{
{
0U,/* 通道 ID */
FTM_SIGNAL_MEASUREMENT,/* 输入捕获操作模式 */
ftm_rising_edge、/* 边缘对齐模式 */
ftm_falling_edge_period_measurement、/* 信号测量操作类型 */
0U,/* 过滤器值 */
虚假,/* 过滤器状态(启用/禁用) */
true,/* 连续测量状态 */
NULL,/* 通道事件的回调参数向量 */
NULL/* 通道事件的回调向量 */
}
};
Re: S32K Input Capture您好,
是的,这些功能应该足够了。SDK 驱动程序启用了 FTM 通道中断,我认为正确的处理程序应从启动时分配。如果不是正确的处理程序,则为 FTM0_Ch0_Ch1_IRQHandler。
调用 ftm_drv_getInputCaptureMeasuremeasum 以获取捕获的值。
BR, Petr
Re: S32K Input Capture你好,彼得、
感谢您的明确说明。
我可以使用这些函数将 FTM 引脚初始化为输入捕获
`ftm_drv_init () ``ftm_drv_init_initCapture () `ftm_drv_initInputCapture ()`
并安装一个 IRQ 处理器来捕获脉冲发生情况
`INT_SYS_InstallHandler(FTM0_Ch0_Ch1_IRQn, PWM_InputCapture_IRQHandler, NULL)`
请支持
谢谢
Shruthi C
Re: S32K Input Capture您好,
最常见和最有效的方法是在输入捕获模式下配置 FTM 并使用具有 FTM 功能的引脚。每个 FTM 通道均可配置为输入捕获模式,在该模式下,它捕获输入信号边缘(上升、下降或两者兼有)上的计时器值。这通常用于测量:信号周期、脉冲宽度、频率。
IC PAL 驱动器允许检测输入信号并测量通道输入信号的脉冲宽度或周期。其设计目的是使其可移植到支持 FTM、eMIOS、FLEXPWM 和 ETIMER 的所有平台和 IP 上。
因此,如果您想获得全面的控制和性能,请直接使用 FTM。如果您希望代码更简单、更便于携带,请使用 IC PAL。
BR, Petr
Re: S32K Input Capture您好,
您可以直接参考 SDK 示例 (ftm_signal_measurement)。
或共享显示该问题的简化项目。
BR, Petr
Re: S32K Input Capture您好,
在 SDK 示例中,我直接提到(ftm_signal_measurement)。
在这个例子中,他们没有使用中断方法,他们使用了轮询方法,然后他们调用了 ftm_drv_g etInputCap t ureMeasuremeasum
我正在寻找带中断功能的 FTM 信号测量,一旦输入捕获识别出信号,我需要中断才能触发并调用 ISR 中的 ftm_dr v_getInputCaptureMeasuremeasurem ensum 函数
请提供相关代码
谢谢
Shruthi C
Re: S32K Input Capture您好,
如果您需要再次安装处理程序,您应该有
extern void FTM0_Ch0_Ch1_IRQHandler(void);
INT_SYS_InstallHandler(FTM0_Ch0_Ch1_IRQn, FTM0_Ch0_Ch1_IRQHandler, NULL);
BR, Petr
Re: S32K Input Capture你好,
是的,我确实定义了该函数,但函数调用后会进入无限循环,并继续运行

整个系统将无法运行,
谢谢
Shruthi C
Re: S32K Input Capture你好、
感谢您的支持和代码片段,我将进行检查
T&R、
Shruthi C
Re: S32K Input Capture你好,我
能否获得任何支持中断的 FTM 引脚的输入作为输入捕获
谢谢!
Shruthi C
Re: S32K Input Capture您好,
驱动程序使用中断来捕获事件,只是没有直接显示在示例中。
我修改了 FTM IC 设置,使其使用单发模式,并添加了从驱动程序中断调用的回调。
ftm_signal_measurement_s32k146 演示修改后的 main.c 参见附件。
BR, Petr