0

私は 40MHz で動作する STM32F031K6 を使用しており、ルーピング シフト レジスタとして機能するプログラムを設計したいと考えています。外部トリガを使用してクロックを供給し、シフト レジスタの値は立ち上がり/立ち下がりエッジが発生するたびに左にシフトします。受け取った。出力は、ハイまたはローのいずれかの 1 つのピンです。

クロッキング エッジと出力の間の時間を 0.5uS 未満にするか、できるだけ早く失敗する必要があります。シフト レジスタの値は変更でき、長さも変更できますが、今のところ 11000010 のようなバイトから始めています。

私は当初、これを外部割り込みで実装することを考えていましたが、それを実装するためのより良い方法があるかもしれないことが示唆されました

どんな助けでも大歓迎です

4

1 に答える 1

1

タスクに STM32F0 の SPI ペリフェラルを使用する場合があります。スレーブ モードに設定されている場合、SCK 信号で外部クロック エッジが検出されるたびに、MISO は SPI データ レジスタを介して内部シフト レジスタにロードされる値の次のビットに設定されます。

STM32F0 リファレンス マニュアルのシリアル ペリフェラル インターフェイス (SPI) に関する章を確認してください。特に、次のキーワードに対応するセクションをご覧ください。

  • 一般的な説明: SPI ブロック図
  • スレーブ モード (マスター選択: スレーブ構成)
  • シンプレックス通信:送信専用モード(RXONLY=0)
  • スレーブ選択 (NSS) ピン管理: ソフトウェア NSS 管理 (SSM = 1)
  • データフレームフォーマット(データサイズは4ビットから16ビット長まで設定可能)
  • SPIの構成

SPI ユニットは、クロック信号の極性など、高度な設定が可能です。これは独立したハードウェア ユニットであるため、0.5us の反応時間要件を処理できるはずです。MCU ファームウェアは、Tx バッファ エンプティ フラグ (TXE) がセットされるたびに、SPI ユニットをセットアップし、SPI ユニットに新しいデータを提供する必要があります。これは、割り込み (TXEIE) によって、または循環バッファーを備えた DMA チャネル (TXDMAEN) を使用して行うこともできます。後者の場合、「シフト レジスタ機能」は MCU コアから完全に独立して実行されます (セットアップ後)。

于 2020-07-07T22:16:19.350 に答える