查看: 2340|回复: 1

[求助] KL02 TPM 使用中的一个问题

[复制链接]

该用户从未签到

8

主题

39

帖子

0

注册会员

Rank: 2

积分
121
最后登录
1970-1-1
发表于 2014-2-28 16:09:08 | 显示全部楼层 |阅读模式
27.3.4 Channel (n) Status and Control (TPMx_CnSC)
CnSC contains the channel-interrupt-status flag and control bits used to configure the
interrupt enable, channel configuration, and pin function. When switching from one
channel mode to a different channel mode, the channel must first be disabled and this
must be acknowledged in the TPM counter clock domain.
这是手册中关于channel控制寄存器的描述。后面一句话,恐怕有人跟我一样开始并没理解clock domain指的什么。我是遇到了问题才明白为什么要写这句话。
通过SIM_SOPT2中的TPMSRC可以选择TPM的时钟。我的应用中TPM的时钟比较慢,而core的时钟比较快。部分代码如下,基本功能是测一个高电平的宽度。工作流程为:首先设置channel0捕捉上升沿,等通道事件标志为1时表示已捕捉到上升沿,记下C0V的值,即上升沿时刻。然后设置channel0捕捉下降沿,等待通道事件标志为1时记下C0V的值,即下降沿的时刻。
切换channel的模式时要先disable,这个好理解。开始TPM0_C0SC = 0x80;和TPM0_C0SC = 0x88; 这两句连着写的。发现并没如愿切换成下降沿捕捉。后来两句之间加了个等待子函数delay(10),就ok了。
我觉得是因为TPM的clock domain频率比较低,而内核运行的频率高,切换TPM通道模式时,上一个操作还没同步到TPM模块的clock domain下一个操作就来了,所以会失败。两个操作之间要等待一下较慢的那个clock domain。以上个人臆测,还望高手指教。
    TPM0_C0SC = 0x84;   // clear CHF, capture rising edge only
    while ((TPM0_STATUS & 0x01) == 0);
    TPM0_STATUS = 0x01;   // clear CHF
    TPM0_C0SC = 0x80;   // must be disabled before changing mode
    count_value = TPM0_C0V;
    delay(10); // wait some time to be acknowledged in the TPM counter clock domain
    // Capture falling edge
    TPM0_C0SC = 0x88;    // clear CHF, capture falling edge only
    while ((TPM0_STATUS & 0x01) == 0);
    TPM0_STATUS = 0x01;   // clear CHF
    TPM0_C0SC = 0x80;   // must be disabled before changing mode
    count_value = TPM0_C0V - count_value;
    cntvalue = count_value;
 
我知道答案 目前已有0人回答
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-3-11 10:18:29 | 显示全部楼层

RE:KL02 TPM 使用中的一个问题

楼主如果先单通道测试脉宽的话,不建议换模式采集。
你可以设置为双边沿采集,然后通过读IO口的高低电平来确认是上升沿还是下降沿。
不过如果采集的频率比较高,就不够准确了。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-19 01:49 , Processed in 0.082755 second(s), 22 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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