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

请使用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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版