打印
[匠人手记]

《两轮小车DIY》之《主控芯片STM32F10x IO口分配》(已经结贴

[复制链接]
9065|38
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
程序匠人|  楼主 | 2009-2-19 16:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
mohanwei| | 2009-2-20 13:41 | 只看该作者

去年也收到了一个,不过好像stlink长得不太一样……

使用特权

评论回复
板凳
小飞鼠| | 2009-2-20 16:18 | 只看该作者

期待匠人JJ的小车。

使用特权

评论回复
地板
程序匠人|  楼主 | 2009-2-27 16:24 | 只看该作者

这难道就是传说中的八卦迷魂阵?

使用特权

评论回复
5
香水城| | 2009-2-27 16:39 | 只看该作者

哈哈,不是传说中的,是现实中的

不过用好它确实不容易。

使用特权

评论回复
6
程序匠人|  楼主 | 2009-2-27 16:56 | 只看该作者

呵呵,香版啊,你这个迷魂阵好厉害

匠人这两天尝试着安排IO口,乍一看,发现demo原理图的芯片管脚与手册里的不符;仔细一看,果然不符;再仔细一看,还是不符。如下图对比。

看来不把每个管脚的来龙去脉祖宗八代家庭成分五脏六腑搞清楚之前,连原理图都画不出来。

使用特权

评论回复
7
香水城| | 2009-2-27 18:38 | 只看该作者

匠人果然够很,要追祖宗八代,刨五脏六腑——给你张穴位

按图索骥!

使用特权

评论回复
8
程序匠人|  楼主 | 2009-3-4 17:09 | 只看该作者

IO口分配——请香斑竹拿斧头来斧正一下

简单说明一下:
1、PA0~PA7、PC13、PC14、PC15 : 用于LCD模块(类似于1602)
2、PB0、PB1 : 设置为ADC口,用于检测加速度传感器
3、PB10~PB14 : 设置为输入口,用于检测RF模块的输出开关量信号
4、PB15 : 初步定为lcd模块背光控制
5、PB6、PB7 : 设置为TIM4_CH1、TIM4_CH2 ,输出PWM信号,控制电机转速
6、PB8、PB9 : 设置为TIM4_CH3、TIM4_CH4 ,捕获功能,输入车速脉冲,计脉冲个数或测频率/周期
7、PA11、PA12 : 普通输出口,控制电机方向


匠人的问题:
1、请帮我看一下上述分配是否合理,尤其是PWM和脉冲捕获那4个口。
2、PA0~PA7 是用于与LCD通讯,并行输入输出,但是因为STM32的口都是16位的。那么这8个口在作并行输入输出时,是否会与PA8~PA15相互干扰。
3、JTAG占用了不少IO口,这些口在什么样的条件下可以当普通IO口。(比如,是否要牺牲调试功能,之类)
4、PB4/JNRST似乎并没有被用于JTAG,是否可以在不影响调试的情况下拿来用作普通IO口。

问题比较菜,请香斑竹拿斧头来斧正一下。

使用特权

评论回复
9
lut1lut| | 2009-3-4 18:05 | 只看该作者

我来班门弄斧一下

1、PA0~PA7、PC13、PC14、PC15 : 用于LCD模块(类似于1602)
>> PA0~PA7的操作不会影响到PA8~PA15。但是PC13/14/15在这里的使用有待商榷:因为在DataSheet的Pin description表格后的注释有这么一段:
“ PC13, PC14 and PC15 are supplied through the power switch and since the switch only sinks a limited amount of current 
(3 mA), the use of GPIOs PC13 to PC15 is restricted: only one I/O at a time can be used as an output, the speed has to be 
limited to 2 MHz with a maximum load of 30 pF and these I/Os must not be used as a current source (e.g. to drive an LED).


3、JTAG占用了不少IO口,这些口在什么样的条件下可以当普通IO口。
>> JTAG作为GPIO了,肯定牺牲调试功能。但是它们可以分时复用。在参考手册(V8.0)7.3.4章节有
“To optimize the number of free GPIOs during debugging, this mapping can be configured in 
different ways by programming the SWJ_CFG[1:0] bits ”
在ST官方的FwLib中有个例子就是如何将这几个调试口作为GPIO使用的。

使用特权

评论回复
10
程序匠人|  楼主 | 2009-3-4 20:22 | 只看该作者

谢谢lut1lut

电路修改一下,暂时不用PC13、PC14、PC15 。


继续等待答案的问题:
1、请帮我看一下上述分配是否合理,尤其是PWM和脉冲捕获那4个口。
4、PB4/JNRST似乎并没有被用于JTAG,是否可以在不影响调试的情况下拿来用作普通IO口。

使用特权

评论回复
11
香水城| | 2009-3-4 21:49 | 只看该作者

哈哈,斧头太重,俺拿不动

只能敲敲键盘~~~~

关于10楼的问题:
1、请帮我看一下上述分配是否合理,尤其是PWM和脉冲捕获那4个口。
可以这样分配。
如果要使用PWM输入模式测量输入脉冲的宽度和周期,请使用定时器的CH1。所以建议把捕获通道安排在CH1和CH2,而PWM输出安排在CH3和CH4。

4、PB4/JNRST似乎并没有被用于JTAG,是否可以在不影响调试的情况下拿来用作普通IO口。
这个脚是用于JTAG模块的复位信号,在调试时需要用到。


关于PC13~15,9楼的那段话意思是:因为模拟开关只能通过少量的电流(3mA),使用PC13至PC15的I/O口功能是有限制的:同一时间内只有一个I/O口可以作为输出,速度必须限制在2MHz以下,最大负载为30pF,而且这些I/O口绝不能当作电流源(如驱动LED)。

如果把这3个脚都作为输入,则没有任何问题;所以你可以考虑把RF_D0~D3中的3个信号安排到PC13~PC15,从而把PB10~PB13中的管脚拿出来做输出。

使用特权

评论回复
12
香水城| | 2009-3-4 21:56 | 只看该作者

STM32管脚配置的一个简单的工具

这是一个Excel文件,分别列出了所有封装的管脚,在LQFP48的表中,我按照10楼的图纸标号填入了表中,匠人可以看看这样是不是容易浏览?


另外,请注意PA0~PA7不是5V容忍管脚,你不能与5V的LCD直接接口。
相关链接:https://bbs.21ic.com/upfiles/img/20093/200934214759799.zip

使用特权

评论回复
13
程序匠人|  楼主 | 2009-3-4 22:18 | 只看该作者

谢谢香斑竹在12楼提供的那把斧子,果然是开天辟地的利器



4、PB4/JNRST似乎并没有被用于JTAG,是否可以在不影响调试的情况下拿来用作普通IO口。
这个脚是用于JTAG模块的复位信号,在调试时需要用到。
根据demo原理图上所示,JTAG模块的复位信号好像是连接到芯片的复位脚(7脚),而不是PB4/JNRST,所以我才会有此一问。不知是原理图有误还是两种方式都可以?  (见附图)

另外在问一下PA9PA10,这两个口好像不是JTAG必须的吧?
另外,请注意PA0~PA7不是5V容忍管脚,你不能与5V的LCD直接接口。
谢谢,这条提示很及时,否则又要走冤枉路了。另,我那个RF模块的输出也是5V的。

 

使用特权

评论回复
14
香水城| | 2009-3-4 22:29 | 只看该作者

JNRST是JTAG调试接口的复位,而/RST是MCU的复位管脚

如果不做调试时,JNRST可以做普通I/O用,但/RST始终都不能做I/O用。

PA9和PA10不是JTAG的调试口,可以做任何普通I/O口使用。

如果RF模块的输出也是5V,则不能使用PC13~15。

如果不要求高精度的时钟,可以考虑使用内部RC振荡器,把管脚5和管脚6(PD0 PD1)腾出来做GPIO使用,它们是5V容忍的。

使用特权

评论回复
15
程序匠人|  楼主 | 2009-3-4 22:34 | 只看该作者

看来是原理图有误,我回头用万用表测量一下看

我回头用万用表测量一下看,JTAG调试接口的复位,到底连接到了JNRST,还是/RST

使用特权

评论回复
16
香水城| | 2009-3-4 22:39 | 只看该作者

注意/RST和JNRST是两个功能不同的信号

/RST只复位MCU,但不复位JTAG模块。

JNRST只复位JTAG模块,但不复位MCU。

使用特权

评论回复
17
程序匠人|  楼主 | 2009-3-4 22:39 | 只看该作者

demo原理图无误

万用表测量下来,JTAG调试接口的复位,确实是连接到/RST(7脚),而不是到JNRST

使用特权

评论回复
18
程序匠人|  楼主 | 2009-3-4 22:45 | 只看该作者

从到这张图看来,PB4/JNRST似乎不是必须的

使用特权

评论回复
19
程序匠人|  楼主 | 2009-3-4 22:47 | 只看该作者

不知道“完全调试模式”和“无JNRST模式”有何差别

不过,SK-STM32F 学习评估套件中的电路应该是采用了“无JNRST模式”

使用特权

评论回复
20
McuPlayer| | 2009-3-4 22:54 | 只看该作者

JNRST是JTAG状态机的Reset信号,就是那个TRST

可以过过JNRST复位JTAG状态机,也可以TMS上输出5个CLK的高电平来复位状态机
一个简洁,一个节约IO

使用特权

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

本版积分规则

734

主题

11156

帖子

676

粉丝