打印
[Kinetis]

kinetis PWM求救

[复制链接]
4670|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
defalut|  楼主 | 2014-6-17 09:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我想实现这个实例里的功能FRDM-KL26Z_SC_Rev_1.0\klxx-sc-baremetal\build\iar\LQRUG_tpm_ex1,
但是我的项目从一开始接手就是PE生成了一堆垃圾,没办法删掉,现在把这部分移植过来,PWM死活不工作,也就几个寄存器而已(4个初始化函数)。
int main (void)
{
  SIM_Init();
  PORT_Init();
  TPM0_Init();
  TPM1_Init();
  
u16PWMDuty = TPM_MOD_1TO10*(7);

  while(1)
  {
/*
    printf("\nChange PWM duty: 0-9 (0-90%%)\n");
    ch = in_char();
    u16PWMDuty = TPM_MOD_1TO10*(ch - 0x30);
    out_char(ch);
    printf("\nPress any key to detect pulse width");
    ch = in_char();
    printf("\nMeasured Pulse width: %d TPM1 cycles\n\n", i16PulseWidth);
*/
  }
}

附件是我移植的代码,没几句代码,搞了2天都没调好,从来没用过这么难用的芯片。
KL26_app_demo.rar (1.17 MB)

相关帖子

沙发
FSL_TICS_Robin| | 2014-6-17 10:06 | 只看该作者
楼主你好
请问你想在这个程序是要在FRDM-KL26Z板子上调试吗?
(之前听你说是在FRDM-KL25Z开发板上测试的)

使用特权

评论回复
板凳
defalut|  楼主 | 2014-6-17 10:58 | 只看该作者
本帖最后由 defalut 于 2014-6-17 11:13 编辑
FSL_TICS_Robin 发表于 2014-6-17 10:06
楼主你好
请问你想在这个程序是要在FRDM-KL26Z板子上调试吗?
(之前听你说是在FRDM-KL25Z开发板上测试的) ...


新找了块新的FRDM-KL26Z,这两板,管教引出来的顺序是一样的。KL25或者KL26的PWM实例也是一模一样的。

使用特权

评论回复
地板
defalut|  楼主 | 2014-6-17 11:33 | 只看该作者
本帖最后由 defalut 于 2014-6-17 11:51 编辑

我现在把这个程序弄得跟实例FRDM-KL26Z_SC_Rev_1.0\klxx-sc-baremetal\build\iar\LQRUG_tpm_ex1
一模一样,所有运行的程序每一步都完全一样,但是PWM就是不进中断!
KL26_app_demo.rar (1.15 MB)
用仿真器跟踪,每一步 都完全一样。
int main(void)
{              
   
    sysinit();   
   
    SIM_Init();
  PORT_Init();
  TPM0_Init();
  TPM1_Init();
  
  u16PWMDuty = TPM_MOD_1TO10*(7);
   while(1)
   {
     
   }
   return 0;
   
}

使用特权

评论回复
5
defalut|  楼主 | 2014-6-17 11:37 | 只看该作者
@FSL_TICS_Robin
帮忙看看吧,这里用这个芯片的人极少, 有用的也是学生党,正儿八经做项目的真的没有发现。

使用特权

评论回复
6
FSL_TICS_Robin| | 2014-6-17 11:58 | 只看该作者
processorExpert实战_1建立工程.pdf (505.7 KB)

使用特权

评论回复
7
FSL_TICS_Robin| | 2014-6-17 15:09 | 只看该作者
defalut 发表于 2014-6-17 11:37
@FSL_TICS_Robin
帮忙看看吧,这里用这个芯片的人极少, 有用的也是学生党,正儿八经做项目的真的没有发现 ...

中午有事所以回复你晚了
论坛里用KL26的的确不多,不过KL25和KL26区别不大所以就没有专门讲解这个系列。

使用特权

评论回复
8
FSL_TICS_Robin| | 2014-6-17 15:12 | 只看该作者
defalut 发表于 2014-6-17 14:20
在freescale网上下了个PE,有一步跟pdf里不一样,不能选择独立文件。

请问你下载的是哪个版本的PE软件呢?
请从飞思卡尔官网PE_DRIVER_SUITE: Processor Expert 软件, 微控制器驱动程序套件 的下载页面选择下载:Microcontrollers Driver Suite v10.4版本

6#那个文档是某位网友制作的,讲解了如果将PE10.4生成的工程导入IAR软件中。

使用特权

评论回复
9
FSL_TICS_Robin| | 2014-6-17 15:15 | 只看该作者
defalut 发表于 2014-6-17 11:33
我现在把这个程序弄得跟实例FRDM-KL26Z_SC_Rev_1.0\klxx-sc-baremetal\build\iar\LQRUG_tpm_ex1
一模一样, ...

请问你现在使用的软件版本是多少的?
我这边是PE10.4+IAR7.2的,不知是否适合你用?
不行的话我那还有一个IAR6.6的

使用特权

评论回复
10
defalut|  楼主 | 2014-6-17 15:17 | 只看该作者
FSL_TICS_Robin 发表于 2014-6-17 15:15
请问你现在使用的软件版本是多少的?
我这边是PE10.4+IAR7.2的,不知是否适合你用?
不行的话我那还有一 ...

我的是PE10.3  和IAR7.1, 低版本的我可以打开。

使用特权

评论回复
11
FSL_TICS_Robin| | 2014-6-17 15:20 | 只看该作者
defalut 发表于 2014-6-17 15:17
我的是PE10.3  和IAR7.1, 低版本的我可以打开。

PE10.4版本修复了一些老版本的bug,所以建议你还是使用最新的PE10.4
IAR7.2和IAR7.1对于飞思卡尔芯片方面的改动不大,所以你应该不用升级就可以使用我生成的工程。
我现在去配置一下,稍后发附件上来。

使用特权

评论回复
12
defalut|  楼主 | 2014-6-17 15:38 | 只看该作者
FSL_TICS_Robin 发表于 2014-6-17 15:20
PE10.4版本修复了一些老版本的bug,所以建议你还是使用最新的PE10.4
IAR7.2和IAR7.1对于飞思卡尔芯片方面 ...

好的,非常感谢。

使用特权

评论回复
13
FSL_TICS_Robin| | 2014-6-17 15:41 | 只看该作者
FRDM-KL26Z PWM.zip (574.43 KB) 使用PE10.4+IAR7.2配置生成。
时钟源选择FRDM-KL26Z开发板8MHz的晶振,PLL=96MHz,Core Clock=48MHz,Bus Clock=24MHz,TPM0 Clock=48MHz
TPM0频率5KHz,占空比在Event.c里变化,通过TPM0_CH1在PTC2引脚输出波形。

使用特权

评论回复
14
defalut|  楼主 | 2014-6-17 16:41 | 只看该作者
FSL_TICS_Robin 发表于 2014-6-17 15:41
使用PE10.4+IAR7.2配置生成。
时钟源选择FRDM-KL26Z开发板8MHz的晶振,PLL=96MHz,Core Clock=48MHz,Bus C ...

好的,谢谢,我用PE打开研究一下。

使用特权

评论回复
15
FSL_TICS_Robin| | 2014-6-17 16:45 | 只看该作者
defalut 发表于 2014-6-17 16:41
好的,谢谢,我用PE打开研究一下。

我把PE10.4的工程和IAR7.2的工程都建立在一个文件夹内。
如果你要修改程序可以使用PE10.4增加一些模块的功能。
如果你想直接用IAR7.2调试PTC2引脚上的PWM波形,可以直接用IAR7.2打开并用板载OpenSDA调试。

使用特权

评论回复
评论
defalut 2014-6-17 17:13 回复TA
调试了 是正常的。 
16
defalut|  楼主 | 2014-6-17 17:11 | 只看该作者
本帖最后由 defalut 于 2014-6-17 17:14 编辑
FSL_TICS_Robin 发表于 2014-6-17 15:41
使用PE10.4+IAR7.2配置生成。
时钟源选择FRDM-KL26Z开发板8MHz的晶振,PLL=96MHz,Core Clock=48MHz,Bus C ...

趁下班再帮忙在这个例子的基础上生成一段TPM脉冲捕获吧。
我自己也在弄,生成十几次都有问题。
类似这个实例一样。捕获脚就定义在PTE21上吧。

使用特权

评论回复
17
FSL_TICS_Robin| | 2014-6-17 17:38 | 只看该作者
defalut 发表于 2014-6-17 17:11
趁下班再帮忙在这个例子的基础上生成一段TPM脉冲捕获吧。
我自己也在弄,生成十几次都有问题。
类似这个实 ...

PE里LDD的使用方法请参考Kinetis系列产品常见问题总结 的“3.2 如何使用PE生成的LDD设备驱动函数的帮助文档说明”(如下图)


使用特权

评论回复
18
defalut|  楼主 | 2014-6-18 10:58 | 只看该作者
FSL_TICS_Robin 发表于 2014-6-17 17:38
PE里LDD的使用方法请参考Kinetis系列产品常见问题总结 的“3.2 如何使用PE生成的LDD设备驱动函数的帮助文 ...

哎,老天看我可怜啊,终于发现问题了,不用折腾PE了。
CPU.C里面的这个地方。我没调用,PE自己运行了。
  /* Switch to PBE Mode */
  /* MCG_C6: LOLIE0=0,PLLS=1,CME0=0,VDIV0=0 */
  //删MCG_C6 = (MCG_C6_PLLS_MASK /*| MCG_C6_VDIV0(0x00)*/);    //=======0x00                              
  //删while((MCG_S & 0x0CU) != 0x08U) {    /* Wait until external reference clock is selected as MCG output */
  //删}
  //删while((MCG_S & MCG_S_LOCK0_MASK) == 0x00U) { /* Wait until locked */
  //删}
  /* Switch to PEE Mode */
  /* MCG_C1: CLKS=0,FRDIV=3,IREFS=0,IRCLKEN=1,IREFSTEN=0 */
  //删MCG_C1 = (MCG_C1_CLKS(0x00) | MCG_C1_FRDIV(0x03) | MCG_C1_IRCLKEN_MASK);                                   
  //删while((MCG_S & 0x0CU) != 0x0CU) {    /* Wait until output of the PLL is selected */
  //删}

现在又发现新问题。
还是这个例子FRDM-KL26Z_SC\FRDM-KL26Z_SC_Rev_1.0\klxx-sc-baremetal\build\iar\LQRUG_tpm_ex1
8M的MCGFLLCLK,为什么产生PWM最快只能到50Khz啊!
  SIM_SOPT2 |= SIM_SOPT2_TPMSRC(1);
  SIM_SOPT2 &= ~SIM_SOPT2_PLLFLLSEL_MASK;



使用特权

评论回复
19
FSL_TICS_Robin| | 2014-6-18 11:17 | 只看该作者
defalut 发表于 2014-6-18 10:58
哎,老天看我可怜啊,终于发现问题了,不用折腾PE了。
CPU.C里面的这个地方。我没调用,PE自己运行了。

关于你提到的:“CPU.C里面的这个地方。我没调用,PE自己运行了。”
PE配置时一般可以选择是否让PE自动调用初始化函数,如果你选择让PE自动生成那么在Generated_Code文件夹的cpu.c里__low_level_init函数末会调用那些模块初始化函数。
不知道你指的是否是这个。
我们不建议使用PE自动初始化,因为之前有发现PE在自动调用各模块初始化函数时不讲究先后顺序。可能你先初始化的模块中断函数发生时会调用另一个尚未初始化模块的寄存器操作等,这就有可能引起错误。

使用特权

评论回复
20
defalut|  楼主 | 2014-6-18 12:35 | 只看该作者
FSL_TICS_Robin 发表于 2014-6-18 11:17
关于你提到的:“CPU.C里面的这个地方。我没调用,PE自己运行了。”
PE配置时一般可以选择是否让PE自动调 ...

就是这个__low_level_init

以前的人弄得,现在工程已经很大了,没时间从0开始弄初始化了。
版主看看FRDM-KL26自带的例程FRDM-KL26Z_SC\FRDM-KL26Z_SC_Rev_1.0\klxx-sc-baremetal\build\iar\LQRUG_tpm_ex1

这个PWM速度为什么在48M的MCGFLLCLK下也快不了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

48

帖子

0

粉丝