212|16

2546

帖子

2

资源

五彩晶圆(初级)

stm32g431的boot0引脚如何复用为I2C [复制链接]

 

我是用STM32CubeMX设置PB8和PB7为I2C引脚,但是芯片无法工作,因为PB8默认为Boot0引脚,电路上需要就GND,所以使用STM32 ST-LINK Utility设置后可以使用了,但是I2C工作一直不正常,不知道还需要怎么设置。

image.png  上图既是设置的项目,我在设置好之后,PA8引脚只是设置成I2C其它没有设置。I2C的引脚我已经上拉4.7K电阻。

image.png

image.png  

 我测量了引脚PB7为高电平,但是PB8确是低电平GND。这好像不正常。

此帖出自stm32/stm8论坛

回复

4380

帖子

3

资源

版主

本帖最后由 damiaa 于 2022-11-24 16:01 编辑

按资料上讲设置了配置位启动就没PB8的事了。 

就算PB8做启动选择IO口,那也是输入,不至于一直低电平高不上来。

你把它做过简单的gpio 测试一下,让它翻转看行不。

如果可以。再看i2C的事。

 

还有BFB2的事:楼主可以了解一下,没玩过。

When the device boots from SRAM, in the application initialization code, you have to

relocate the vector table in SRAM using the NVIC exception table and the offset register.

When booting from the main Flash memory, the application software can either boot from

bank 1 or from bank 2 (only for category 3 devices). By default, boot from bank 1 is selected.

To select boot from Flash memory bank 2, set the BFB2 bit in the user option bytes. When

this bit is set and the boot pins are in the boot from main Flash memory configuration, the

device boots from system memory, and the boot loader jumps to execute the user

application programmed in Flash memory bank 2. For further details, please refer to

AN2606

 

点评

BFB2好像和BOOT0没有毛的关系,资料上说G4系列nSWBOOT0是用来决定BOOT0信号源是内部还是外部地,如果是内部boot0就由nBoot0来决定了。  详情 回复 发表于 4 天前
我怀疑是因为引脚没有初始化为I2C的原因,也不知道为什么STM32G431的Cube生成的程序都没有指定GPIO复用,串口、PWM、ADC等等都一样可是串口工作正常。  详情 回复 发表于 4 天前

回复

2546

帖子

2

资源

五彩晶圆(初级)

damiaa 发表于 2022-11-24 15:25 按资料上讲设置了配置位启动就没PB8的事了。  就算PB8做启动选择IO口,那也是输入,不至于一直低电 ...

我怀疑是因为引脚没有初始化为I2C的原因,也不知道为什么STM32G431的Cube生成的程序都没有指定GPIO复用,串口、PWM、ADC等等都一样可是串口工作正常。

点评

指定了呢。 [attachimg]659747[/attachimg] BFB2那个位好像是做双启动用的, 用户要升级程序等场景用的,具体你看一下手册。是不是和它有关?  详情 回复 发表于 4 天前

回复

4380

帖子

3

资源

版主

bigbat 发表于 2022-11-24 16:12 我怀疑是因为引脚没有初始化为I2C的原因,也不知道为什么STM32G431的Cube生成的程序都没有指定GPIO复用, ...

指定了呢。

11.png

BFB2那个位好像是做双启动用的, 用户要升级程序等场景用的,具体你看一下手册。是不是和它有关?

点评

无论怎么设置都是低电平,我把PIN设置成输出置成高 ,复用模式、开漏模式。都是低。看来BOOT0真不能复用啊 GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_  详情 回复 发表于 4 天前

回复

2317

帖子

0

资源

版主

先检测PB8能不能正常拉高,如果可以,估计就是初始化IIC有问题。可以先用软件IIC。


回复

2546

帖子

2

资源

五彩晶圆(初级)

damiaa 发表于 2022-11-24 16:35 指定了呢。 BFB2那个位好像是做双启动用的, 用户要升级程序等场景用的,具体你看一下手册。是不 ...

无论怎么设置都是低电平,我把PIN设置成输出置成高 ,复用模式、开漏模式。都是低。看来BOOT0真不能复用啊

	GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_7;
	GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
	GPIO_InitStruct.Pull = GPIO_NOPULL;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
	HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

 

点评

BFB2 看了没有?  详情 回复 发表于 4 天前

回复

4380

帖子

3

资源

版主

本帖最后由 damiaa 于 2022-11-24 17:16 编辑

STM32 ST-LINK Utility设置 里面的BFB2 看了没有?不过我没玩过这个板子,BFB2这里没搞过。你自己看看。摸索一下。


回复

2546

帖子

2

资源

五彩晶圆(初级)

damiaa 发表于 2022-11-24 15:25 按资料上讲设置了配置位启动就没PB8的事了。  就算PB8做启动选择IO口,那也是输入,不至于一直低电 ...

BFB2好像和BOOT0没有毛的关系,资料上说G4系列nSWBOOT0是用来决定BOOT0信号源是内部还是外部地,如果是内部boot0就由nBoot0来决定了。


回复

4380

帖子

3

资源

版主

本帖最后由 damiaa 于 2022-11-25 11:15 编辑

这个选了吗?图片上好像没选。当nBOOT_SEL为1时,启动模式完全由Option Bytes控制。

 

按理讲是应该可以复用的。st不至于这么low。

这个只有STM32G系列可以boot0启动由Option Bytes控制。 F0系列看了一下。还没这个功能。

点评

nBOOT_SEL是不可选的,手册DataSheet上说nSWBOOT0来控制,是不是这个和nBOOT_SEL是一样的作用  详情 回复 发表于 3 天前

回复

2546

帖子

2

资源

五彩晶圆(初级)

damiaa 发表于 2022-11-25 11:12 这个选了吗?图片上好像没选。当nBOOT_SEL为1时,启动模式完全由Option Bytes控制。   按理讲是 ...

nBOOT_SEL是不可选的,手册DataSheet上说nSWBOOT0来控制,是不是这个和nBOOT_SEL是一样的作用

点评

确实 手册上说了 Flash option register (FLASH_OPTR)   Bit 26 nSWBOOT0: Software BOOT0 0: BOOT0 taken from the option bit nBOOT0 1: BOOT0 taken from PB8/BOOT0 pin 有时间我找给st  详情 回复 发表于 3 天前

回复

4380

帖子

3

资源

版主

本帖最后由 damiaa 于 2022-11-25 12:58 编辑
bigbat 发表于 2022-11-25 11:51 nBOOT_SEL是不可选的,手册DataSheet上说nSWBOOT0来控制,是不是这个和nBOOT_SEL是一样的作用

确实 不同型号不一样  STM32G4参考手册上说了

Flash option register (FLASH_OPTR)

Bit 26 nSWBOOT0: Software BOOT0

0: BOOT0 taken from the option bit nBOOT0

1: BOOT0 taken from PB8/BOOT0 pin

有时间我找块stm32g系列板子试试看。

 

自己做的板子还是官方的开发板?硬件部分量过没有?比如PB8和gnd是否是短路的。。。。

 

点评

PB8和GND没有短路,也没有虚焊的现象,但是PB8无论怎么设置都不起作用。这个让我很是疑惑。板子是我自己做的,而且没有富裕的引脚,要不我是不会使用PB8这样的引脚的。 还有一个现象,就是PA15也就是I2C的原生脚  详情 回复 发表于 3 天前

回复

2546

帖子

2

资源

五彩晶圆(初级)

PB8和GND没有短路,也没有虚焊的现象,但是PB8无论怎么设置都不起作用。这个让我很是疑惑。板子是我自己做的,而且没有富裕的引脚,要不我是不会使用PB8这样的引脚的。

还有一个现象,就是PA15也就是I2C的原生脚接在BELL上,有时在调试加载时会出现蜂鸣器声音较小的现象。

点评

PA15也就是I2C的原生脚接在BELL上 ?驱动电流不够吧?搞个三极管放大一下试试。  详情 回复 发表于 3 天前

回复

4380

帖子

3

资源

版主

PA15也就是I2C的原生脚接在BELL上 ?驱动电流不够吧?搞个三极管放大一下试试。

点评

PA15是接到光耦上,然后隔离后进行工作。所以不影响PA15的驱动,大部分的时间BELL都是正常地,只是调试的时候加载后会出现声音小的情况。  详情 回复 发表于 3 天前

回复

2546

帖子

2

资源

五彩晶圆(初级)

damiaa 发表于 2022-11-25 14:36 PA15也就是I2C的原生脚接在BELL上 ?驱动电流不够吧?搞个三极管放大一下试试。

PA15是接到光耦上,然后隔离后进行工作。所以不影响PA15的驱动,大部分的时间BELL都是正常地,只是调试的时候加载后会出现声音小的情况。


回复

4380

帖子

3

资源

版主

今天测试了一块nucleo-g491re:

nucleo-g491re的sWBBOOT0选1  PB8-BOOT也可以不接地 悬空可以。

                           和sWBBOOT0选0 nBOOT0 选1 效果一样

 

推挽输出控制pb8。PB8-BOOT始终为0. 

点评

就是说pb8不可以推挽输出是吗?我这里也是PB8无论什么输出都是0,很是郁闷。即使我把引脚调整过来也不行了。不知道论坛中有没有ST的人,问问怎么回事。  详情 回复 发表于 6 小时前

回复

2546

帖子

2

资源

五彩晶圆(初级)

damiaa 发表于 2022-11-28 11:51 今天测试了一块nucleo-g491re: nucleo-g491re的sWBBOOT0选1  PB8-BOOT也可以不接地 悬空可以。 ...

就是说pb8不可以推挽输出是吗?我这里也是PB8无论什么输出都是0,很是郁闷。即使我把引脚调整过来也不行了。不知道论坛中有没有ST的人,问问怎么回事。

点评

应该是什么都不可以。因为没拉电阻。搞个推挽输出测试一下。  详情 回复 发表于 6 小时前

回复

4380

帖子

3

资源

版主

bigbat 发表于 2022-11-28 13:26 就是说pb8不可以推挽输出是吗?我这里也是PB8无论什么输出都是0,很是郁闷。即使我把引脚调整过来也不行 ...

应该是什么都不可以。因为没拉电阻。搞个推挽输出测试一下。 是不是有些版本这样? 看到处资料都说可以。


回复
您需要登录后才可以回帖 登录 | 注册

相关帖子
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
    关闭
    站长推荐上一条 1/7 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表