STM32F4中,将JTAG引脚PA15配置成普通IO的方法

1. 应用背景

编写Flash芯片W25QJV128的驱动,需要使用STM32F4的SPI3,分配的引脚是PA15、PC10、PC11、PC12,在数据手册中关于这4个引脚的“Pinout and pin definitions”如下图所示。

发现PA15的function after reset(复位后的默认功能)是JTAG的JTDI功能。

此时我们希望能不使用其JTDI功能,而实使用其Alternate functions里的SPI_NSS功能。

2. 将STM32F4的PA15配置成普通IO功能的方法

结论:要把PA15当作普通IO使用,直接把PA15当作无JTAG的功能的引脚,按照普通IO的方式进行配置即可。

3. DEMO工程

(后期再补上链接)

4. 结论依据

4.1 使用SPI的注意事项&解决方案

查看F4的参考手册(RM0090)的SPI章节,里面提到了在使用SPI的一些注意事项及三种解决方法如下表:

原文简单翻译

Since some SPI1 and SPI3/I2S3 pins may be mapped onto some pins used by the JTAG interface (SPI1_NSS onto JTDI, SPI3_NSS/I2S3_WS onto JTDI and SPI3_SCK/I2S3_CK onto JTDO), you may either:
– map SPI/I2S onto other pins
– disable the JTAG and use the SWD interface prior to configuring the pins listed as SPI I/Os (when debugging the application) or
– disable both JTAG/SWD interfaces (for standalone
applications).


For more information on the configuration of the JTAG/SWD
interface pins, please refer to Section 8.3.2: I/O pin
multiplexer and mapping.

由于SPI1/SPI3/I2S3的一些功能可能会映射在有JTAG功能的引脚上(比如:SPI1_NSS映射到JTDI、 SPI3_NSS/I2S3_WS映射到JTDI、SPI3_SCK/I2S3_CK映射到JTDO),对于这种情况,你可以采取以下措施来使得SPI功能正常运行:

 

-1. 选择将SPI/I2S映射到非JTAG的引脚上(本例:要使用SPI3_NSS的功能,除了可以将其映射在PA15上,还可以将其映射在PA4上);

-2. 需要debug的情况下:在配置SPI的I/O引脚之前,禁用JTAG,使用SWD调试;

-3. 不需要debug,只需要单机运行的情况下:在配置SPI的I/O引脚之前,禁用JTAG,禁用SWD;

 

有关配置 JTAG/SWD 接口引脚的更多信息,请参见第 8.3.2 节:I/O 引脚复用器和映射。

4.2 解决方案1:将SPI/I2S映射到非JTAG的引脚上

为了能正确驱动Flash芯片,若采用方法1,可以选择将SPI3_NSS的功能映射到PA4上去,稍微改一下硬件电路,在按照常规的SPI初始化流程进行初始化即可;

4.3 解决方案2:在配置SPI的I/O引脚之前,禁用JTAG,使用SWD调试;

按照表格里文字的提示,查看参考手册的第 8.3.2 节:I/O 引脚复用器和映射( I/O pin multiplexer and mapping.)

微控制器板载的外设/模块,要通过一个多路复用器(multiplexer)才能被映射到其物理层的I/O脚上。且该多路复用器一次只允许一个外设复用功能被映射到I/O脚上。以此来确保同一个I/O口上不会被映射多个外设功能而发生冲突。

 SPI_NSS的配置与SPI_NSS的模式有关。

SPI_NSS的三种模式

SPI_NSS_SOFT;//配置spi在master下,NSS作为普通IO,由用户自己写代码控制片选,可以1主多从SPI_NSS_HARD_OUTPUT;//配置spi在master下,NSS作为SPI专用IO,由MCU自动控制片选,只能1主1从
SPI_NSS_HARD_INPUT;//仅当配置spi在slave下,作为从机片选输入

 本文用的是软件模式,即只需将PA15配置成普通IO口的模式即可。在参考手册中,关于如何将引脚复用为GPIO口只有一句话,如下图。说明,只需按常规操作,将PA15配置成普通IO口,即可,不用像F1那样复杂。

总结:多看手册。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值