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

关于stm32f103vet6 SMBUS问题

[复制链接]
gintoki_zero 提问时间:2023-5-30 11:18 / 未解决

请问下各位大佬们,stm32f103 spec上描述是可以使用SMBUS和PMBUS的,但是在用CUBEMX生成代码时,可配置的选项很少,SMBUS代码为空,这个是什么情况 根据SPEC是需要配置一些寄存器,请问下是需要在I2C的配置下手动改CR1和SR1的配置吗? image.png image.png

收藏 评论6 发布时间:2023-5-30 11:18

举报

6个回答
xmshao 回答时间:2023-5-30 13:11:22
当你就某I2C模块选择为SMBUS后,基本的默认配置就那些。不知你说smbus代码为空是啥意思。




你通过cubemx配置时,选择某个I2C后,接着选择使用方式,即I2C还是SMBUS。之后生成的MX_I2C1_SMBUS_Init(void)函数里


就可以清晰看见相关配置,包括你提到的对CR1的配置。在STM32参考手册里就I2C协议与SMBUS协议的差异有个表格也罗列出来了。


二者很类似,SMBUS协议可以看做I2C协议的一个子集,可简单将SMBUS看成低速I2C BUS。
xmshao 回答时间:2023-5-30 13:21:22
static void MX_I2C1_SMBUS_Init(void){

  /* USER CODE END I2C1_Init 1 */
  hsmbus1.Instance = I2C1;
  hsmbus1.Init.ClockSpeed = 100000;
  hsmbus1.Init.AnalogFilter = SMBUS_ANALOGFILTER_ENABLE;
  hsmbus1.Init.OwnAddress1 = 0;
  hsmbus1.Init.AddressingMode = SMBUS_ADDRESSINGMODE_7BIT;
  hsmbus1.Init.DualAddressMode = SMBUS_DUALADDRESS_DISABLE;
  hsmbus1.Init.OwnAddress2 = 0;
  hsmbus1.Init.GeneralCallMode = SMBUS_GENERALCALL_DISABLE;
  hsmbus1.Init.NoStretchMode = SMBUS_NOSTRETCH_DISABLE;
  hsmbus1.Init.PacketErrorCheckMode = SMBUS_PEC_DISABLE;
  hsmbus1.Init.PeripheralMode = SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE;
  if (HAL_SMBUS_Init(&hsmbus1) != HAL_OK)
  {
    Error_Handler();
  }



如果是CubeMx的问题,不妨重启或更新下。
xmshao 回答时间:2023-5-30 13:26:22
这是我配合后生成的代码。


static void MX_I2C1_SMBUS_Init(void){


  hsmbus1.Instance = I2C1;
  hsmbus1.Init.ClockSpeed = 100000;
  hsmbus1.Init.AnalogFilter = SMBUS_ANALOGFILTER_ENABLE;
  hsmbus1.Init.OwnAddress1 = 0;
  hsmbus1.Init.AddressingMode = SMBUS_ADDRESSINGMODE_7BIT;
  hsmbus1.Init.DualAddressMode = SMBUS_DUALADDRESS_DISABLE;
  hsmbus1.Init.OwnAddress2 = 0;
  hsmbus1.Init.GeneralCallMode = SMBUS_GENERALCALL_DISABLE;
  hsmbus1.Init.NoStretchMode = SMBUS_NOSTRETCH_DISABLE;
  hsmbus1.Init.PacketErrorCheckMode = SMBUS_PEC_DISABLE;
  hsmbus1.Init.PeripheralMode = SMBUS_PERIPHERAL_MODE_SMBUS_SLAVE;
  if (HAL_SMBUS_Init(&hsmbus1) != HAL_OK)
  {
    Error_Handler();
  }


如果是CubeMx的问题,不妨重启或更新下。
gintoki_zero 回答时间:2023-5-30 14:40:31

xmshao 发表于 2023-5-30 13:26
这是我配合后生成的代码。</p>
<p>

我生成后没有这段代码,但是F4系列的生成就有,F1系列的生成就有,请问你也是在F1系列下生成的吗?再请问下Cube的版本是哪个版本 呢

gintoki_zero 回答时间:2023-5-31 09:36:14

gintoki_zero 发表于 2023-5-30 14:40
我生成后没有这段代码,但是F4系列的生成就有,F1系列的生成就有,请问你也是在F1系列下生成的吗?再 ...

[md]说错了,F4系列生成就有,F1系列生成就没有这段代码

xmshao 回答时间:2023-6-1 11:06:23
en,我也测试了stm32F1系列,的确CubeMx在这个系列的配置有点问题。
我们可以后续跟踪下。 你暂时可以参考其它系列配置。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版