Nucleo SPI CLK

ee9king に投稿

Nucleo(F411RE)のSPIクロックが想定通りにならなかった。2MHzで1.5MHzs、1.5MHzで750KHz・・・。半分というとそうでもない。。。

コミュニティーで答えをもらったのだが、結論としては、データシートをよく読みなさいということだと思われます。mbedで遊んでいると、ターゲットを変えるだけで普通に動いてhしまうため、そこがどうしても、気づかなくなってしまう。それに、KL25の時はあまり気にせずほとんどがその通りに動いていた。(実際、今回の件もあり確認したが細かく設定できる)

printf(“SystemClock=%d[Hz]\r\n”, SystemCoreClock);

クロック出力できるとのことでmNucleo-F411では内蔵発振、外部水晶時ともに、96MHzと出力される。

Nuleo-F411では、SPIクロックソースは内部クロックの分周を利用するがその設定が3ビットしかないとのことである。データシート

3.23 Serial peripheral interface (SPI)
The devices feature five SPIs in slave and master modes in full-duplex and simplex communication modes. SPI1, SPI4 and SPI5 can communicate at up to 50 Mbit/s, SPI2 and SPI3 can communicate at up to 25 Mbit/s. The 3-bit prescaler gives 8 master mode frequencies and the frame is configurable to 8 bits or 16 bits. The hardware CRC generation/verification supports basic SD Card/MMC modes. All SPIs can be served by the DMA controller.
The SPI interface can be configured to operate in TI mode for communications in master mode and slave mode.
これらのデバイスは、全二重および単方向通信モードのスレーブモードとマスターモードで5つのSPIを備えています。 SPI1、SPI4、およびSPI5は最大50 Mbit / sで通信でき、SPI2およびSPI3は最大25 Mbit/sで通信できます。 3ビットプリスケーラは8つのマスターモード周波数を提供し、フレームは8ビットまたは16ビットに構成可能です。 ハードウェアCRCの生成/検証は、基本的なSDカード/MMCモードをサポートします。 すべてのSPIは、DMAコントローラーによって処理できます。
SPIインターフェースは、マスターモードとスレーブモードでの通信のためにTIモードで動作するように構成できます。

Referenceマニュアル

20.5.1 SPI control register 1 (SPI_CR1)(not used in I2S mode)

Bits 5:3 BR[2:0]: Baud rate control
000: fPCLK/2
001: fPCLK/4
010: fPCLK/8
011: fPCLK/16
100: fPCLK/32
101: fPCLK/64
110: fPCLK/128
111: fPCLK/256
Note: These bits should not be changed when communication is ongoing.
They are not used in I2S mode.

fPCLK=96MHzとすると、設定可能なのは、

48MHz
24MHz
12MHz
6MHz
3MHz
1.5MHz
0.75MHz
0.375MHz

である。ない場合は、設定値より低い周波数で最高のものが設定される。2MHz設定で1.5MHzになる。

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
  • 行と段落は自動的に折り返されます。