2つのピンが同じ代替機能を持つように構成されている場合、STM32はどうなりますか?


10

STM32F051のマニュアルを読むと、2つのピンで同じ代替機能を構成できるように見えます。たとえば、同時に複数のUSART1_TXピンを持つことができます。または、たとえば、2つのUSART_RXピンの問題の多いケースです。この場合、マニュアルには何も書かれていません。これは合法/安全ですか?これは役に立ちましたか?


2
興味深い質問です。デバッグ中にTX出力を別のピンに取得したり、いくつかの場所でバッファ付きクロックを取得したりすることが、なぜそれが役立つのかがわかります。それを検索する必要がある人を救うために、関連するマニュアルリンクに追加する価値があるかもしれません。
PeterJ 2013年

再び-興味深い質問。しかし、2つの異なるピンからUSART_RXを割り当てる場合はどうでしょうか。チップの設計者が、2つのソースからの内部競合を許可するのではなく、一方の優先順位方式を計画したことを期待します。
Michael Karas 2013年

私はこれを試したことはありませんが、ピン図から思い出したことに基づいて、基本的にはピンを内部で相互に接続することになります。
rjp 2013年

回答:


5

ピンごとのレジスタを使用してI / O機能を選択するプロセッサでは、競合することなく出力機能を複数のピンにルーティングできます。すべてのピンが同じ出力をエコーし​​ます。複数のピンを入力に接続した場合の影響は、多くの場合指定されていません。たとえば、UARTにI / Oピン3および4がUARTに接続されている場合、UARTがピン3および4を入力として取る「AND」ゲートに接続されているかのように動作するか、または接続されているように動作する可能性があります。 1つのピンに接続してもう1つのピンを無視するか、抵抗が中程度のトランジスタを介して両方のピンをUARTの入力バッファに接続するか、ピン3が高く、ピン4が低い場合、またはその逆の場合、余分な電流が流れる可能性があります。想像できることなら何でもします。私はしません

一部のマイクロチップパーツ(おそらくいくつかのSTMパーツも同様)で使用されるやや優れた設計アプローチは、各I / O関数にマルチプレクサーを含めて、どのピンから入力を受け入れるかを選択し、ピンにマルチプレクサーを含めてIを示すことです。データを出力する/ O関数。このような設計により、1つのピンが複数のI / O機能に給電できるようになると同時に、競合する構成によって生じるあいまいさを排除できます。


3

はい、それは便利です。STM32F407VGT6での実験結果:少なくともこれらのピンをAF入力として使用する場合、両方のAFピンを同時にAFとして使用できます。実験は、外部トリガーの立ち上がりエッジでTIM1をトリガーすることでした-信号「TIM1_ETR」。「TIM1_ETR」信号は、MCUパッケージのピンPE7および/またはPA12にマッピングできます。

実験:TIM1の両方のピンPE7とPA12をAF "TIM1_ETR"として初期化します。

{
    GPIO_InitTypeDef GPIO_InitStruct = { 0 };
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Alternate = GPIO_AF1_TIM1;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;

    GPIO_InitStruct.Pin = GPIO_PIN_7;
    HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); // configure PE7 as AF

    GPIO_InitStruct.Pin = GPIO_PIN_12;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // configure PA12 as AF
}

結果-TIM1は、PE7またはPA12のいずれかのピンの立ち上がりエッジによって開始されます。

これにより、ランタイムでAFピンをMUX(変更)する方法がわかります。

main
{
  GPIO_InitTypeDef GPIO_InitStruct = { 0 };

// Deactivate PA12 input (set as regular input):
        GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
        GPIO_InitStruct.Pin = GPIO_PIN_12;
        HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

// select PE7 as a trigger source,
        GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
        GPIO_InitStruct.Pin = GPIO_PIN_7;
        HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

// Arm the timer
    arm_tim1();

/* Now timer will be started by rising edge only on PE7 */

// ... later one can select PA12 as trigger source. Deactivate PE7 (set as regular input):
        GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
        GPIO_InitStruct.Pin = GPIO_PIN_7;
        HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

// Activate PA12
        GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
        GPIO_InitStruct.Pin = GPIO_PIN_12;
        HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

// Arm the timer
    arm_tim1();
/* timer will be started by rising edge only on PA12 */
}

これは役立つ場合があり、タイマーのトリガーには2つの異なるソースが必要です。これにより、オフボードのMUX ICを節約できます。ポストの最初に示すように初期化されている場合、両方の入力を同時に使用できます。入力は一緒に接続されていません。つまり、PA12の信号はPE7に転送されず、その逆も同様です(GPIOが入力として設定されているため)。

コードは「STM32CubeF4 v5.3」+「ファームウェアパッケージV1.24.0 / 08-February-2019」によって生成されます。


2

基本的に、ピンはGPIOであり、UART_RXなどの代替機能に割り当てることができます。すべての代替機能には、デフォルトのピンと、機能を再マップできる代替ピンがあります。セクション9.1.5 のSTM32F103のリファレンスマニュアルを確認すると、次のように述べられています。

異なるデバイスパッケージの周辺I / O機能の数を最適化するために、いくつかの代替機能を他のいくつかのピンに再マッピングすることが可能です。これは、対応するレジスターをプログラミングすることにより、ソフトウェアによって実現されます(177ページのAFIOレジスターを参照)。その場合、代替機能は元の割り当てにマップされなくなります。


これを理解する方法は次のとおりです。新しいピンを割り当てると、以前の割り当てが削除されるため、複数のピンを技術的に同じ周辺機能に接続することはできません。
dext0rb 2014年

1
(少なくともF103では、STM32の他の派生物を使用していません)ので、AF_Outputとして設定しても、リマップ機能を使用せずに代替ピンを関数に割り当てることはできません。 GPIOセットアップ。そして、再マッピング後、元のピンでは機能が使用できなくなります。これが私が何を意味するのかが明確になることを願っています。
Manu3l0us 2014年

1
これが行われる方法がある非常に異なるの異なるサブファミリーに。F1レジスター構造はそれを禁止するかもしれませんが、F3構造は異なります。そこでは、ピンへの機能の代わりに代替機能にピンを構成するので、重複したマッピングが可能であると思われます。実際、あなたは質問の状況に答えていません。これは、レジスター構造がそれを許可する部分についてのようです。
Chris Stratton

1
@Chris Stratton STM32F302 Ref Manualセクション8.3.2:「デバイスのI / Oピンは、一度にI / Oピンに接続されている1つのペリフェラルの代替機能(AF)のみを許可するマルチプレクサを介して、オンボードのペリフェラル/モジュールに接続されています。このようにして、同じI / Oピンで利用可能なペリフェラル間で競合が発生することはありません。」しかし、実際には、これは1つのAFでの複数のI / Oについては何も言いません。入力ピンには複数のオプションがありますか?
Manu3l0us 14年

1
私もF1x情報に感謝します。私もそれを使いました:-)
joeforker
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.