打印

求教分配管脚,关于JTDO/JTDI的重映射功能

[复制链接]
8277|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
heuyck|  楼主 | 2010-12-6 16:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32F103,用48脚封装的,需要10*ADC,6个脉冲宽度输入检测,4个脉冲输出(PPM信号)。1个uart。
UART:PA8,PA9,也用来ISP下载。
ADC:PA0~7、PB0,PB1,没得选,就10个。
6个脉宽输入:PB6~9=TIM4_CH1~4
    PA8/PA11=TIM1_CH1/CH4
4个脉宽输出:PB10/PB11=TIM2_CH3/CH4

还缺2个脉宽输出,本来想用PB5和PB4(NJTRST)的TIM3_CH1/2,没什么冲突正好。
但是这样就把TIM1/2/3/4都用了。所以就想用PB3(JTDO)、PA15(JTDI),留下TIM3做别的用途。
手册上写着把SWJ_CFG寄存器配置为关闭JTAG-DP、启用SW-DP,JTDO和JTDI就可用做IO了。
但是(PB3/JTDO/TRACESWO)标志着I/O口只可在不使用异步跟踪时使用,这个异步跟踪是不是指SWD模式下的调试输出功能?只在SWD调试模式下是否可以不用?

ps:检测输入脉宽为1.5~2.5ms的高电平脉宽,每个高电平脉冲之间大概有3ms的低电平(PPM信号),我想保险点先用timer的方式测量脉宽,有个1%的精度就够了。不知道能不能简单点用外部中断+systick的测量方式?这样选脉宽输入检测的引脚就不一定要用TIM_CH了。
沙发
香水城| | 2010-12-6 18:15 | 只看该作者
不好意思,请提醒一下,你在哪里看到“异步跟踪”的说法?

使用特权

评论回复
板凳
heuyck|  楼主 | 2010-12-6 20:53 | 只看该作者
搜SWJ_CFG寄存器就能看到哎,我看的是中文版的。
我现在手头没有datasheet,找不到。
st网站又爬不上去,太慢了。。。。

使用特权

评论回复
地板
heuyck|  楼主 | 2010-12-6 21:10 | 只看该作者
另外请问香主, 下面是你的一个帖子:
要测量高电平的宽度必须使用PWM输入模式,而且只能使用CH1
所谓脉冲方波长度高电平的宽度是指信号的上升沿至下降沿之间的时间,如果使用普通的捕获模式,只能知道出现上升沿的时间或出现下降沿的时间(你选择了后者),在你的程序中因为出现上升沿的时间与定时器启动的时间相吻合,所以第一次出现下降沿的时间就是高电平的宽度,而从第二次开始结果自然不准了。
使用PWM输入模式,实际上在出现上升沿的时侯,定时器捕获了这个时间至CC1,同时定时器内部有一个通过TI1_ED清零计数器的操作,所以每次出现下降沿时,计数器的内容刚好是高电平的宽度,这个数值被拷贝(捕获)至CC2中。
从定时器的结构图可以看到,只有通道1有一个到触发控制器的控制线(TI1_ED),而其它通道没有这样的控制线,所以PWM输入模式只能使用CH1和CH2,而不能使用CH3和CH4。


象我这样使用PB6~9=TIM4_CH1~4 PA8/PA11=TIM1_CH1/CH4作为测量高电平脉宽,是不是无法实现啊?
测量6个输入管教的高电平脉宽,脉宽在1.5~2.5ms之间,有什么方法吗?

使用特权

评论回复
5
heuyck|  楼主 | 2010-12-7 09:40 | 只看该作者
顶一下

使用特权

评论回复
6
heuyck|  楼主 | 2010-12-7 09:55 | 只看该作者
如果不用PWM输入模式,用输入捕获模式,每次检测到上升沿把计时器记下来,再开启下降沿捕获,等检测到下降沿再算出上升下降沿的时间差,这样能不能算出高电平脉宽呢?
至少1.5ms的脉宽,用来重新切换捕获模式应该够时间了吧。

使用特权

评论回复
7
香水城| | 2010-12-7 10:13 | 只看该作者
回4楼:如果你摘抄的是我曾经发过的帖,请指出那个帖子的完整出处,我不知道那个帖子的背景是否适合你的情况。


另外,看了半天你的帖子,也没有明白你要问什么问题,好像很多东西纠结在一起;请一次问一个问题,不要混在一起,谢谢。

使用特权

评论回复
8
heuyck|  楼主 | 2010-12-7 10:49 | 只看该作者
第一个问题:JTDO/TRACESWO/PB3用作GPIO的问题
我是在《8.3.5  JTAG/SWD复用功能重映射》这一节里找到说明的。
在SWJ_CFG[2:0]配置成010,作用是关闭JTAG-DP启用SW-DP,如果此时JTDO/TRACESWO/PB3管脚作为GPIO时有个提示项, 说“I/O口只可在不使用异步跟踪时使用”。
我就不清楚这个异步跟踪指什么?一般用SWD调试,很少会用TRACE功能的,就只用到SWDIO和SWCLK。

第二个问题:关于高电平脉宽捕获测量的问题。
我是看到这个帖子的,https://bbs.21ic.com/icview-109870-1-1.html。香版在4楼说了一些。
我的想法是下面这样的:
不用PWM输入模式,用普通的输入捕获模式。
先在TIMx_CCER寄存器中写入CC1P=0(上升沿)捕获。
启动中断,在上升沿触发的中断里把TIMx_CCR1的值存下来,把CC1P=1改成下降沿,退出中断。
在下降沿触发的中断里把下降沿的TIMx_CCR1减去上升沿的TIMx_CCR1值,就等于高电平的脉宽了吧?
相当于把定时器当一个实时时钟用,不用重载,轮流配置CC1P=0和1,以在上升和下降沿触发中断,计时器相减获得脉宽。
我想1.5ms的最小脉宽,相对72M的主频,测量起来应该误差不大吧?这样做可否?

感谢香版关注!

使用特权

评论回复
9
香水城| | 2010-12-7 10:57 | 只看该作者
1)异步跟踪是SWD模块的一种调试手段,需要使用TRACESWO信号。

2)你说的方法可以,但为什么你不用PWM输入模式呢?这不是更简单?

使用特权

评论回复
10
heuyck|  楼主 | 2010-12-7 12:12 | 只看该作者
1.那我不使用异步跟踪功能,是不是还是可以使用SWD调试呢?
2.主要是定时器不够呀,我要测6个输入脉宽,定时器总共才4个。还得做脉宽输出用。

使用特权

评论回复
11
香水城| | 2010-12-7 12:20 | 只看该作者
1)是的。

2)8楼不是说要使用普通的输入捕获模式吗?难道这不是使用定时器吗?与PWM输入模式相比除了配置模式和软件处理不一样,硬件方面有其它区别吗?

使用特权

评论回复
12
heuyck|  楼主 | 2010-12-7 13:42 | 只看该作者
2.看手册和您写的帖子,PWM输入模式只能使用CH1和CH2,而不能使用CH3和CH4。
我用6个输入,还有4个输出。要占用3个定时器的CH1和CH2,还有1个定时器的CH1~4,管脚就很难分配了,而且定时器也用光光了。

使用特权

评论回复
13
香水城| | 2010-12-7 13:49 | 只看该作者
2.看手册和您写的帖子,PWM输入模式只能使用CH1和CH2,而不能使用CH3和CH4。
我用6个输入,还有4个输出。要占用3个定时器的CH1和CH2,还有1个定时器的CH1~4,管脚就很难分配了,而且定时器也用光光了。 ...
heuyck 发表于 2010-12-7 13:42


不错,PWM输入模式只能使用CH1和CH2;虽然CH3和CH4不能使用PWM输入模式,但可以配置CH3为上升沿捕获,CH4为下降沿捕获,2次捕获值之差就是高电平的宽度。这样做既准确,也省去了反复转换捕获边沿的配置。

使用特权

评论回复
14
heuyck|  楼主 | 2010-12-7 14:24 | 只看该作者
还是有疑问啊,下面是我的理解,请指教:

看PWM输入模式是靠IC1映射到TI1检测上升沿,重置CNT并从CCR1获得脉冲周期,同时IC2映射到TI1检测下降沿,直接从CCR2获得高电平脉冲宽度。因为TI1会重置CNT,这样就把定时器给霸占了。

如果我想检测CH2的PWM,IC3/IC4映射到TI2,但因为CNT会同时被TI1和TI2的上升沿重复清零,结果1和2都不准确了。。。同理CH3和CH4也不能用来做捕获了。1个定时器就只能支持一路的PWM测量。

使用特权

评论回复
15
heuyck|  楼主 | 2010-12-7 14:25 | 只看该作者
哦对了,我的理解前提是各个PWM信号的周期不定,所以上升沿位置不一定在一起。

使用特权

评论回复
16
香水城| | 2010-12-7 15:04 | 只看该作者
PWM输入模式与输入捕获的最大区别就是,PWM输入模式会在每个脉冲的上升沿清零CNT,而输入捕获模式不会清零CNT;因此使用输入捕获模式,可以使用4个通道同时进行捕获。

使用特权

评论回复
17
heuyck|  楼主 | 2010-12-9 09:49 | 只看该作者
问题清楚了,不过还是决定用64脚的,48脚的连32k晶振的3个脚、JTAG的脚都用上,才刚刚够。
一个GPIO都没多,每个GPIO的输入输出都限死了。。。。不敢用,一点设计余量都没了。

使用特权

评论回复
18
heuyck|  楼主 | 2010-12-9 09:51 | 只看该作者
不过很佩服stm32的管脚重映射功能,各种搭配,能做到一点都不浪费不容易啊。

使用特权

评论回复
19
woshic23| | 2014-11-20 17:58 | 只看该作者
stm32手册写的真是太一般了!

使用特权

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

本版积分规则

42

主题

189

帖子

0

粉丝