你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

请使用F103VET6板子的朋友帮忙验证一个系统BUG~~

[复制链接]
ss1969 提问时间:2017-1-12 17:24 /
本帖最后由 ss1969 于 2017-1-12 17:25 编辑

环境:
   HAL库, F1系列1.40版
   STM32F103VET6
   使用双线的ST-Link

BUG:
    使用PB345作为SPI端口,连接一颗W25Q16
    CubeMX生成代码,如果使用SPI1,则会造成Init SPI后,STlink无法下载代码(Keil 5里面报告找不到Target),此时SPI1是正常工作的可操作Flash。
    如果使用SPI3则一切正常。后来跟踪发现,只要调用了_HAL_AFIO_REMAP_SPI1_ENABLE就会出问题。
    以下是简化的main.c,启动5秒内,正常下载;5秒后,Stlink无法连上。

有同样环境的朋友希望可以试一试。


WD$`73X~Z]AQGQ_976O265T.png
收藏 1 评论9 发布时间:2017-1-12 17:24

举报

9个回答
Tcreat 回答时间:2017-1-13 09:52:39
本帖最后由 Tcreat 于 2017-1-13 10:35 编辑

对照数据手册引脚图 就知道了    PB3/PB4是编程复用口  特别是PB4 在SWD 和 JTAG编程模式下 都是要占用的  然而你使能映射的PB3和PB4  我想应该是关掉的JTAG和SWD仿真口导致的
以下来自 原子论坛帖内容:

设置为SW模式时,PB3管脚在跟踪时为TRACESWO信号,cpu软件复位也不会清除,需断电才能再次使用。所以需要关闭跟踪。

否则在进入调试后,PB3管脚不受ODR控制。


关于寄存器
3个控制位用来配置SWJ-DP 接口的引脚,这3个位在系统复位时复位。
● AFIO_MAPR(STM32F10xxx微控制器中的地址是0x40010004)
─   读:APB,无等待状态
─   写:APB,如果AHB-APB桥的写缓冲器满了,则一个等待状态
位26:24=SWJ_CFG[2:0]  
由软件置位和复位
这3位用来设置分配给SWJ调试接口的专用引脚数目,目的是在使用不同的调试接口时能释放
尽可能多的引脚用作普通I/O 口。
复位后的初始值是000( 所有引脚都设置为JTAG-DP接口专用引脚),同时只能置位3个位中的
一个(禁止同时设置一个以上的位)。


调试MCU配置寄存器DBGMCU_CR
此寄存器允许在调试状态下下配置MCU。包括:
●  支持低功耗模式
●  支持定时器和看门狗的计数器
●  支持bxCAN通信
●  分配跟踪引脚
DBGMCU_CR寄存器被映射到外部PPB 总线,基地址为0xE0042000 。
寄存器由PORESET 异步复位( 不被系统复位所复位) 。当内核处于复位状态下时,调试器可写该
寄存器。
如果调试器不支持这些特性,用户软件仍可写这些寄存器。
DBGMCU_CR
地址:0xE0042004
只支持32位访问
POR复位:0x0000 0000(不被系统复位所复位)


使用SW并且PB3可控的配置代码,注意时能AFIO。

RCC->APB2ENR |= 1 |  (1<<3);  /*AFIO/ GPIOB*/
DBGMCU->CR = DBGMCU->CR & ~((uint32_t)1<<5);
AFIO->MAPR |= (AFIO->MAPR & ~((uint32_t)0x7 << 24)) | (2 << 24); //SW模式



评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

JackieLaura 回答时间:2017-1-13 09:58:34
本帖最后由 JackieLaura 于 2017-1-13 10:02 编辑
Tcreat 发表于 2017-1-13 09:52
对照数据手册引脚图 就知道了    PB3/PB4是编程复用口  特别是PB4 在SWD 和 JTAG编程模式下 都是要占用的   ...

应该是SWD接口还能使用,还能继续仿真。。。PA13、PA14未使用就可以

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

Tcreat 回答时间:2017-1-13 10:18:46
本帖最后由 Tcreat 于 2017-1-13 10:32 编辑
JackieLaura 发表于 2017-1-13 09:58
应该是SWD接口还能使用,还能继续仿真。。。PA13、PA14未使用就可以

看网上说 SWD模式 PB3默认是调试跟踪  需要关闭调试跟踪 才行 不然 PB3也是无法用的  不管怎么说 他这现象始终是与仿真口冲突造成的 并不是什么杂症  稍微百度下就知道了  
creep 回答时间:2017-1-13 10:33:20
二狗哥,这你要直接上代码啊,让有条件的同学直接下载测试下看是不是和你的情况一样。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

Tcreat 回答时间:2017-1-13 10:35:53
creep 发表于 2017-1-13 10:33
二狗哥,这你要直接上代码啊,让有条件的同学直接下载测试下看是不是和你的情况一样。 ...

无所上代码 就是编程口占用的问题   
creep 回答时间:2017-1-13 11:17:11
Tcreat 发表于 2017-1-13 10:35
无所上代码 就是编程口占用的问题

小猪老师厉害,学习了。。
ss1969 回答时间:2017-1-13 11:55:05
Tcreat 发表于 2017-1-13 10:35
无所上代码 就是编程口占用的问题

问题在于~~ 我用SPI3的时候,也是占用了PB3、4、5的,这个时候SPI3工作正常(能读写w25q)
而且,同时,Serial Wire模式下载正常(使用ST Link)
所以 并 不 是 占用编程口的问题。
ss1969 回答时间:2017-1-13 11:55:27
本帖最后由 ss1969 于 2017-1-13 12:04 编辑
Tcreat 发表于 2017-1-13 10:35
无所上代码 就是编程口占用的问题

补充一下Serial wire模式应该是不使用PB4的。

出现这个问题之后,我用Jlink + 飞线的方式,可以下载,此时也不需要接PB4(nTRST),只需要多接上TDI,TDO和nSRST即可!


ss1969 回答时间:2017-1-13 11:57:47
creep 发表于 2017-1-13 10:33
二狗哥,这你要直接上代码啊,让有条件的同学直接下载测试下看是不是和你的情况一样。 ...

我已经直接上了呀。
就在main里面加一句就能出bug了
但我不确定如果不上W25Q16,会不会也会出现这个问题。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版