打印
[STM32F1]

STM32配置JTAG端口为普通IO,仿真不正常必须断电重启才行

[复制链接]
5164|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
这个问题出现在STM32F103ZET6芯片上,采用SW方式,由于SPI3和JTAG引脚都占用PB3/PB4,多次试验发现仿真时SPI不正常,只有断电SPI才有数据输出,为了排除SPI的问题,关闭JTAG,只把PB3/PB4当GPIO来用,问题仍在,即PB4(JNTRST)正常,PB3(JTDO)仿真时不正常,断电复位正常,看了手册,这种效果是配置了:“所有的SWJ引脚 (JTAG-DP + SW-DP) 除了JNTRST引脚”这种模式后才出现的现象,但是我程序里开启了复用时钟,并且打开的是GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);怀疑库的问题,然后操作寄存器也就是配置AFIO_MAPR Bit26:24,程序如下:
//JTAG模式设置,用于设置JTAG的模式 AFIO_MAPR Bit26:24
//mode:jtag,swd模式设置
//000,全使能;
//001,完全SWJ(JTAG-DP + SW-DP)但没有NJTRST;
//010,关闭JTAG,启用SW
//100,全关闭;                  
void JTAG_SetRig(u8 mode)
{
        u32 temp;
        temp=mode;
        temp<<=24;
        RCC->APB2ENR|=1<<0;     //开启辅助时钟          
        AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]
        AFIO->MAPR|=temp;       //设置jtag模式
}

排除硬件故障,多个板子都是一个问题,总结起来就是PB3(JTDO)的问题,即程序下载进去和仿真都不正常,只有断电之后正常,因为很多东西需要在线调试SPI,所以如果不能仿真那就很麻烦



评论
Lzy21900448 2022-3-22 17:02 回复TA
哥们,对于sw-DP释放其他引脚为IO口的问题,麻烦你加下我微信:13259732180,谢谢 
沙发
玄德| | 2014-4-11 14:09 | 只看该作者
你看下 MODER 寄存器,PB3 肯定变了。

使用特权

评论回复
板凳
zhaoxingchen|  楼主 | 2014-4-11 14:38 | 只看该作者
使用Keil仿真,查看AFIO_MAPR寄存器,(主要是配置26:24位)

未配置之前,26:24 = 000 全关闭

配置好之后26:24 = 100,但是,实际应该是010,对应的关闭JTAG,打开SWD
直接配置寄存器效果一样

求解?

使用特权

评论回复
地板
zhaoxingchen|  楼主 | 2014-4-11 15:09 | 只看该作者
玄德 发表于 2014-4-11 14:09
你看下 MODER 寄存器,PB3 肯定变了。

拉高拉低PB3,寄存器变化都对,这是实际测量引脚没有输出,断电重新上电PB3输出正常

使用特权

评论回复
5
zhaoxingchen|  楼主 | 2014-4-11 15:21 | 只看该作者
香主对这个很了解吧,求助。难道没有其他人遇到过?

使用特权

评论回复
6
玄德| | 2014-4-11 16:23 | 只看该作者
本帖最后由 玄德 于 2014-4-11 16:34 编辑

巧得很,上午才遇到几乎同样的现象:
PB3做SCK,仿真器连续运行则波形正常;一旦停一下,再连续运行,波形就乱了,出现不名的时钟波形,很乱。
也就是说,不能仿真。

下午观察到 GPIOB-MODER 寄存器改变了,PB3管脚的配置变了。原因不明,应当与我的程序无关。
于是想到 LCKR 寄存器,可以锁定端口配置。过去从来不用。
ST设计这个寄存器,很奇怪:我既然配置了,当然就是要锁定;如果要变,我当然会再写语句;反正芯片内部别乱改就行,改不改我自己决定,干吗要搞个寄存器,多加一把锁?
这只能说明其他地方有问题,芯片内部的问题。不知道他们遇到了什么问题。

现在上锁以后,仿真的问题已经解决,可以随便停,波形都正常。你试试吧。

但你下面几层楼描述的情况,我不了解。貌似咱们用的平台不同,我是IAR,你是KEIL。




使用特权

评论回复
7
zhaoxingchen|  楼主 | 2014-4-11 17:03 | 只看该作者
玄德 发表于 2014-4-11 16:23
巧得很,上午才遇到几乎同样的现象:
PB3做SCK,仿真器连续运行则波形正常;一旦停一下,再连续运行,波形 ...

我的仿真的时候一次都不成功,CLK引脚没任何信号,单步调试PB3的配置是对的,但是测量实际输出还是没有值。只要不仿真,跑的很欢,每次必须断电复位一下。软件reset不行

使用特权

评论回复
8
zhaoxingchen|  楼主 | 2014-4-11 17:08 | 只看该作者
我同事用IAR同样的配置仿真正常,不解,求解释

使用特权

评论回复
9
湖北泽翔| | 2014-4-12 11:48 | 只看该作者

使用特权

评论回复
10
湖北泽翔| | 2014-4-12 11:49 | 只看该作者
莫名其妙

使用特权

评论回复
11
3842| | 2014-10-14 11:43 | 只看该作者
我也遇到这个问题了,用SWD仿真,管脚无反应.

使用特权

评论回复
12
chenquanxin918| | 2015-11-24 20:32 | 只看该作者
我今天遇到了跟楼主一样的问题,过了这么久了不知道楼主解决了没,如果解决了能否给一下解释谢谢

使用特权

评论回复
13
jjjkkk00| | 2016-6-2 18:33 | 只看该作者
同样问题,求解!

使用特权

评论回复
14
童雨竹| | 2023-12-1 08:02 | 只看该作者

做多层板可将做好的两块双面板用特制的粘合剂“压合”起来

使用特权

评论回复
15
Pulitzer| | 2023-12-1 09:05 | 只看该作者

清除与电镀动作都会在化学过程中完成

使用特权

评论回复
16
公羊子丹| | 2023-12-1 10:08 | 只看该作者

负片转印(Subtractive transfer)的方式将设计好的PCB线路板的线路底片“印刷”在金属导体上。

使用特权

评论回复
17
公羊子丹| | 2023-12-1 11:01 | 只看该作者

将整个表面铺上一层薄薄的铜箔,并且把多余的部份给消除

使用特权

评论回复
18
Wordsworth| | 2023-12-1 12:04 | 只看该作者

在开始电镀之前,必须先清掉孔内的杂物。

使用特权

评论回复
19
Clyde011| | 2023-12-1 13:07 | 只看该作者

光绘出零件间联机的PCB设计布线

使用特权

评论回复
20
万图| | 2023-12-1 15:03 | 只看该作者

在孔璧内部作金属处理后,可以让内部的各层线路能够彼此连接。

使用特权

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

本版积分规则

2

主题

17

帖子

1

粉丝