Zephyr > microSD + FatFs > SPI > STM32L476とSTM32F769の違い > SPIの周波数 > STM32F769: 210kHz | STM32L476: 312kHz


動作環境
Ubuntu 18.04 LTS
ボード: STM32L476 Nucleo_64 (以下、STM32L476)
ボード: STM32F769 Discovery Kit (以下、STM32F769)
Zephyr 2.1.0-rc1
microSDモジュール: CK-40 (サンハヤト)
ロジック確認: Analog Discovery 2 (以下、AD2)

関連 

状況

  • samples/subsys/fs/fat_fsにあるサンプルを試している
  • A. STM32L476 + SPI1: 成功
  • B. STM32L476 + SPI2: 成功
  • C. STM32F769 + SPI2: 失敗

SPIのクロック周波数

STM32L476とSTM32F769のSPIロジックをキャプチャして見ているうちに、クロック周波数の違いに気づいた。
STM32L476の方が高い周波数になっている。

クロック周波数の決定

クロック周波数の定義はspi_ll_stm32.cの255行spi_stm32_configure()にて実装されている。
clockという変数とclkを比較して、config->frequency(=400kHz)に合う周波数になる。

  • ボードごとのクロック周波数
    • STM32L476
      • 40MHz始まり
      • 312kHzになる
    • STM32F769
      • 52MHz始まり
      • 210kHzになる

Analog Discovery 2でキャプチャしたロジックに整合する。