打印

请进,STM32中AFIO设置,请不吝指教

[复制链接]
7959|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dosculler|  楼主 | 2011-11-17 16:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 dosculler 于 2011-11-17 17:35 编辑

最近拿到一块板,看到上面IIC的SCL/SDA分别做在PB6/7上,
查了一下ST该芯片的PB6/7脚发现打开AFIO功能后
该两个脚也是具备IIC1_SCL/SDA的功能,如图1。
我看了相应程序里面没有打开AFIO功能的函数。

所以想问下问题如下:
1)IIC芯片做电路图时是不是一定要连接到上面标有复用该功能的管脚才行,还是任意管脚都可以?(注:我看到ALIENTTEK开发板上用的是PC11/12,但这两个管脚的AFIO功能不是IIC。)
2)如果打开AFIO这个功能后,和不打开该功能做,对IIC有何区别?
3)如果为了IIC打开AFIO功能后,但其他管脚我是直接控制管脚的,比如PA4~7(复用功能为SPI),现在被打开复用功能后会影响到原来直接控制么,怎么办?如图2.

4)最后一个偏离一点的问题:复位后管脚是不是默认是普通IO(不打开AFIO),为什么看到手册里写“JTAG引脚不受IO控制器控制,他们(在每次复位后)被默认保留为JTAG用途”,这句话意思是该管脚复位后打开的是JTAG而不是普通IO控制?如图3


问题有点多,请不要嫌麻烦,帮解下惑,谢谢。

图1.jpg (17.99 KB )

图1.jpg

图2.jpg (22.05 KB )

图2.jpg

图3.jpg (41.34 KB )

图3.jpg
沙发
dosculler|  楼主 | 2011-11-17 16:44 | 只看该作者
请路过会的不会的帮忙讨论下,谢谢!
用的芯片是100脚的。

使用特权

评论回复
板凳
香水城| | 2011-11-17 17:05 | 只看该作者
1)必须连接到上面标有复用该功能的管脚才行。
2)打开AFIO这个功能后,可以使用PB8和PB9的组合,否则只能使用PB6和PB7的组合。
3)I2C与SPI的控制位不一样,不会影响。
4)不太明白你的问题。

使用特权

评论回复
地板
dosculler|  楼主 | 2011-11-17 17:40 | 只看该作者
3# 香水城

首先,非常感谢香水城这么快回答我的问题。不过还有几点疑问
1)我看到ALIENTTEK开发板上用的是PC11/12,但这两个管脚的AFIO功能不是IIC
2)打开这个功能后我还不是一样得写虚拟IIC协议?那跟单片机的普通管脚写IIC有什么区别
3)我的意思是AFIO不是一次性全部打开的吧?我一打开IIC的AFIO功能,那也把SPI/UART等功能给打开了?那原来的管脚PA4~7(复用功能为SPI)我没做复用的,是不是变成复用SPI了,怎么办?
4)如上,我改了。

问题比较多,麻烦你了,谢谢!

使用特权

评论回复
5
香水城| | 2011-11-17 18:05 | 只看该作者
1)你要看ALIENTTEK开发板上的程序是怎么做的。
2)使用PB8和PB9的组合或使用PB6和PB7的组合,则使用硬件的I2C1模块,不需要写写虚拟IIC协议。
3)AFIO功能开启后,I2C1_REMAP控制I2C1模块,SPI1_REMAP控制SPI1模块,互不干扰。

使用特权

评论回复
6
dosculler|  楼主 | 2011-11-18 12:21 | 只看该作者
5# 香水城

3)可以单独打开IIC而不打开其他如SPI等功能?
我看一打开AFIO_MAPR,该位置0还是置1都已经打开这些全部功能,而没有一个选项可以单独关闭某AFIO功能

AFIO_MAPR.png (49.92 KB )

AFIO_MAPR.png

使用特权

评论回复
7
香水城| | 2011-11-18 13:07 | 只看该作者
重映像与没有重映像打开与关闭 是2个概念,不要搞混了!

使用特权

评论回复
8
dosculler|  楼主 | 2011-11-18 15:14 | 只看该作者
本帖最后由 dosculler 于 2011-11-18 16:52 编辑

7# 香水城

真搞混了我,哎
我打个例子,那我要打开IIC的AFIO功能
不是要先
1)RCC->APB2ENR|=1<<0;    //开启辅助时钟
2)AFIO->MAPR|=0X0002; //SCL/SDA映射到PB8/PB9
此时MAPR位1 置1(电路上SCL连接在PB8, SDA在PB9)实在了映射IIC功能在PB8/9上,
但其他位都置0,不也打开映射了么,如何让其他位不映射??
例:位0在上面也被置0实现SPI1映射在PA4~7,我不想这几个位实现SPI映射(但又同时保持上面的IIC映射),我应该置什么?置0也不对,置1也不对

:dizzy:

AFIO_MAPR.png (49.92 KB )

AFIO_MAPR.png

使用特权

评论回复
9
碧天伊剑| | 2011-11-18 15:24 | 只看该作者
刚开始学,

使用特权

评论回复
10
香水城| | 2011-11-18 18:36 | 只看该作者
7# 香水城

真搞混了我,哎
我打个例子,那我要打开IIC的AFIO功能
不是要先
1)RCC->APB2ENR|=1
dosculler 发表于 2011-11-18 15:14


其他位为0有什么不妥?

比如SPI1,即使不映射,它默认也是使用PA4~PA7这几个端口;打开AFIO后,SPI1_REMAP=0,也仍然使用PA4~PA7这几个端口,并没有任何区别!

使用特权

评论回复
11
dosculler|  楼主 | 2011-11-21 17:37 | 只看该作者
10# 香水城

哦,我明白了,就跟单片机的RXD、TXD一样,有没有这个功能都不影响管脚控制,
STM32也是一样,没有打开映射时和打开该位产生映射,对正常的管脚控制输入输出、高低电平没有影响是吧。
一直以为打开硬件映射后,会对原来同一个管脚上的程序(我这边的硬件都是用软件虚拟的)有影响,汗……

非常感谢!!

如果直接配合映射硬件的程序,能赋上个网址或者是程序么?
Whatever,我明白,再谢!

使用特权

评论回复
12
dosculler|  楼主 | 2011-11-22 12:13 | 只看该作者
11# dosculler

其实如果不能单独控制某个功能的AFIO映射,
还不如上电默认把所有AFIO映射给打开算了:dizzy:

使用特权

评论回复
13
香水城| | 2011-11-22 17:40 | 只看该作者
11# dosculler

其实如果不能单独控制某个功能的AFIO映射,
还不如上电默认把所有AFIO映射给打开算了:dizzy:
dosculler 发表于 2011-11-22 12:13


这样会有额外的功耗!

使用特权

评论回复
14
香水城| | 2011-11-22 17:40 | 只看该作者
10# 香水城  

哦,我明白了,就跟单片机的RXD、TXD一样,有没有这个功能都不影响管脚控制,
STM32也是一样,没有打开映射时和打开该位产生映射,对正常的管脚控制输入输出、高低电平没有影响是吧。
一直以为打开硬 ...
dosculler 发表于 2011-11-21 17:37


ST的库中就有很多例子。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
dosculler + 1
15
wangshi| | 2011-11-22 19:38 | 只看该作者
前面已经说的挺多的了,我就补充一句,按部就班,否则很容易出错。

使用特权

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

本版积分规则

0

主题

329

帖子

1

粉丝