查看: 3413|回复: 1

iMx 1050 功能 pwm 捕获功能

[复制链接]

该用户从未签到

1

主题

1

帖子

0

新手上路

Rank: 1

积分
9
最后登录
2018-4-20
发表于 2018-4-17 17:25:03 | 显示全部楼层 |阅读模式
我考虑1050 的子模块0,pwm_a作为输出驱动电机,pwm_b作为捕获输入,捕获10个波形之后,产生中断,在中断里关闭pwm_a,
请问这个方式可以么?
我尝试了,代码如下

  iFd = open("/dev/pwm0", O_RDWR, 0666);
           if (iFd < 0) {
                   printk("ifd error\n");
           }
       
           pwmUserConfig.PWM_SubModule                                   = kPWM_Module_0;            /*  子模块0                                          */
           pwmUserConfig.PWM_ucSinalNum                            = 1;                                    /*  信号个数最多两个                    */
           pwmUserConfig.PWM_Sinal[0].deadtimeValue    = 650;                                   /*  死区时间                                    */
           pwmUserConfig.PWM_Sinal[0].dutyCyclePercent = 30;                                   /*  PWMA 占空比                                  */
           pwmUserConfig.PWM_Sinal[0].level                    = kPWM_HighTrue;            /*  高电平为活跃电平                    */
           pwmUserConfig.PWM_Sinal[0].pwmChannel           = kPWM_PwmA;
       
           pwmUserConfig.PWM_Sinal[1].deadtimeValue    = 650;                                   /*  子模块0                                          */
           pwmUserConfig.PWM_Sinal[1].dutyCyclePercent = 70;                                   /*  PWMB 占空比                                  */
           pwmUserConfig.PWM_Sinal[1].level                    = kPWM_HighTrue;            /*  高电平为活跃电平                    */
           pwmUserConfig.PWM_Sinal[1].pwmChannel           = kPWM_PwmB;
       
           pwmUserConfig.PWM_Mode                                           = kPWM_CenterAligned;   /*  俩波形中心对齐                          */
       
           pwmUserConfig.PWM_uiFrequency                           = 1000;                                   /*  频率为1000Hz                                  */
           /*
                *  独立模式
                *  当设置为互补模式时,只需配置PWMA或PWMB其中的一个
                */
           pwmUserConfig.PWM_PairOperation                           = kPWM_Independent;
       
       
           iRet = ioctl(iFd, PWM_MODE_SET, (LONG)&pwmUserConfig);
           if (iRet != ERROR_NONE) {
                   printk("ioctl error");
           }


        //输入cap_B
        cap.captureInputSel = TRUE;
        cap.edgeCompareValue = 100;
        cap.edge0 = kPWM_FallingEdge;
        cap.edge1 = kPWM_Disable;
        cap.enableOneShotCapture = FALSE;
        //cap.fifoWatermark = 10;
       
        CapParaCfg.subModule = kPWM_Module_0;
        CapParaCfg.pwmChannel = kPWM_PwmB;
        CapParaCfg.inputCaptureParams = &cap;

        iRet = ioctl(iFd, PWM_INCAPT_SET, (LONG)&CapParaCfg);

。。。

我将pwm_a 和 pwm_b 跳线连接,启动之后立马就产生中断,并没有看到10个波形,求大神指导?在线等,着急?
回复

使用道具 举报

该用户从未签到

0

主题

2

帖子

0

新手上路

Rank: 1

积分
19
最后登录
2020-3-9
发表于 2018-5-11 20:18:29 | 显示全部楼层
你这个是linux吗?你用了open,但是又用的printk打印,有点让人迷惑
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-18 17:44 , Processed in 0.080528 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表