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

如何使STM32F412RET PC9输出I2S MCLK

[复制链接]
u18650436001 提问时间:2021-2-16 18:30 /
关键字: I2S  MCLK  主时钟  STM32F412RET
      各位大师请教下,我这边使用STM32F412RET+DA7218,需要STM32送出I2S主时钟给DA7218, 目前线路留的是PC9这个GPIO,但我在STM32CubeMX的STM32F412RET的PC9找不到有I2S MCLK选项(如附件截图)。我们在一台客户的对比机STM32F4上面有量到这个脚的PC9有输出I2S MCLK。请教下各位大师,如何配置STM32F412RET 才能从PC9输出I2S MCLK?
      先谢谢啦!

PC9没看到有I2S MCLK输出

PC9没看到有I2S MCLK输出

我的Clock配置图是这样的。

我的Clock配置图是这样的。
收藏 评论5 发布时间:2021-2-16 18:30

举报

5个回答
wenyangzeng 回答时间:2021-2-16 19:59:40
PC9要么输出MCO,作为I2S_CLK信号,要么外部输入I2S2_CK信号。
无标题.png
u18650436001 回答时间:2021-2-16 21:18:33
wenyangzeng 发表于 2021-2-16 19:59
PC9要么输出MCO,作为I2S_CLK信号,要么外部输入I2S2_CK信号。

感谢回复,我改用PA3的I2S2 MCK如下图设置,以及代码调用如下,但PA3也是没有量到I2S2 MCK主时钟波形输出。是不是我哪里设置错了?

int main(void)
{

......
  MX_I2S2_Init();
......
}
static void MX_I2S2_Init(void)
{

  /* USER CODE BEGIN I2S2_Init 0 */

  /* USER CODE END I2S2_Init 0 */

  /* USER CODE BEGIN I2S2_Init 1 */

  /* USER CODE END I2S2_Init 1 */
  hi2s2.Instance = SPI2;
  hi2s2.Init.Mode = I2S_MODE_MASTER_RX;
  hi2s2.Init.Standard = I2S_STANDARD_PHILIPS;
  hi2s2.Init.DataFormat = I2S_DATAFORMAT_16B;
  hi2s2.Init.MCLKOutput = I2S_MCLKOUTPUT_ENABLE;
  hi2s2.Init.AudioFreq = I2S_AUDIOFREQ_48K;
  hi2s2.Init.CPOL = I2S_CPOL_HIGH;
  hi2s2.Init.ClockSource = I2S_CLOCK_PLL;
  hi2s2.Init.FullDuplexMode = I2S_FULLDUPLEXMODE_ENABLE;
  if (HAL_I2S_Init(&hi2s2) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN I2S2_Init 2 */  
  /* USER CODE END I2S2_Init 2 */

}


STM32F412RET_I2S2_MCLK.png
STM32F412RET_PA3_I2S2_MCLK.png
u18650436001 回答时间:2021-2-16 22:15:18

谢谢回复,我改为PA3输出I2S2 MCLK,但也是没有量到波形,如下是不是我哪里设置错了?有空帮忙检查指导下,再次感谢!
int main(void)
{

......
  MX_I2S2_Init();
......
}

static void MX_I2S2_Init(void)
{

  /* USER CODE BEGIN I2S2_Init 0 */

  /* USER CODE END I2S2_Init 0 */

  /* USER CODE BEGIN I2S2_Init 1 */

  /* USER CODE END I2S2_Init 1 */
  hi2s2.Instance = SPI2;
  hi2s2.Init.Mode = I2S_MODE_MASTER_RX;
  hi2s2.Init.Standard = I2S_STANDARD_PHILIPS;
  hi2s2.Init.DataFormat = I2S_DATAFORMAT_16B;
  hi2s2.Init.MCLKOutput = I2S_MCLKOUTPUT_ENABLE;
  hi2s2.Init.AudioFreq = I2S_AUDIOFREQ_48K;
  hi2s2.Init.CPOL = I2S_CPOL_HIGH;
  hi2s2.Init.ClockSource = I2S_CLOCK_PLL;
  hi2s2.Init.FullDuplexMode = I2S_FULLDUPLEXMODE_ENABLE;
  if (HAL_I2S_Init(&hi2s2) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN I2S2_Init 2 */

  /* USER CODE END I2S2_Init 2 */

}


STM32F412RET_I2S2_MCLK.png
STM32F412RET_PA3_I2S2_MCLK.png
qtao 回答时间:2021-2-17 10:30:36
I2S_CLK是I2S协议的时钟信号,就如SPI_CLK一样
u18650436001 回答时间:2021-2-18 09:14:56
wenyangzeng 发表于 2021-2-16 19:59
PC9要么输出MCO,作为I2S_CLK信号,要么外部输入I2S2_CK信号。

通过设置MCO2可以输出I2S MCLK了,非常感谢!

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版