PSoC 6 MCUデバイスのファームウェアを介したSPI I/Oピンの制御 - KBA226844 - Community Translated (JA)
- RSS フィードを購読する
- 新着としてマーク
- 既読としてマーク
- ブックマーク
- 購読
- 印刷用ページ
- 不適切なコンテンツを報告
Community Translated by NoTa_4591161 Version: **
質問:
PSoC®6 MCUデバイスのSPIピン(CLK、MOSI、MISO、SS)は、ファームウェアのランタイム中にどのような制御ができますか?
回答:
SCB_SPIコンポーネントをTopDesignに配置した後、SPIマスター/スレーブ機能をその場で無効/有効にすることができます。以下のソリューションはファームウェアのピンを制御する手順を提供し、コードスニペットはAPIを使用して推奨されるソリューションを実装しています。
ファームウェアのソリューション:
一般に、ピンはファームウェアまたはハードウェアのいずれかで制御できます。デフォルトでは、すべてのSPI I/OピンはSCBハードウェアブロックによって制御されます。そのため、ファームウェアで制御できるようにするには、SCBブロックからSPIピンを切断する必要があります。
次の手順に従って、SPI I/OピンとSPI SCB間のハードウェア接続を切断し、ファームウェアで制御を有効にします。
- SPI I / Oピンに対応するHSIOM_PRTx_PORT_SELxレジスタのビットに「ビット0」を書き込みます。
- GPIO_PRTx_CFGレジスタを変更して、SPI I / Oピンの駆動モードを設定します。
詳細については、 Architecture Technical Reference ManualおよびRegister Technical Reference ManualのI/Oシステム(HSIOM)を参照してください。次のコードスニペットを使用して、APIを使用して推奨されるソリューションを実装できます[SPI CLKピンをP10.2にすることを検討してください。これはファームウェアで制御されます]。
コードスニペット:
// デフォルトのSCB_SPI構成設定を格納する変数
uint32 temp;
// アプリケーションが必要とする新しいドライブモード設定を格納する変数
// 設定する駆動モードが高インピーダンスの場合、drive_mode = 0xFFFFF0FF
uint32 drive_mode;
// SCB_SPIのHSIOM構成を保存します
temp = CY_GET_REG32(CYREG_HSIOM_PRT10_PORT_SEL0);
// SPI CLKピンをファームウェアで制御されるように設定します
CY_SET_REG32 (CYREG_HSIOM_PRT10_PORT_SEL0, temp & 0xFFE0FFFF);
// SPI CLKピンの駆動モードを設定します
CY_SET_REG32 (GPIO_PRT10_CFG, drive_mode);
/ /デフォルトのSPI機能をロードします(つまり、CLKピンがSCB_SPIハードウェアブロックに接続されています)
CY_SET_REG32 (CYREG_HSIOM_PRT10_PORT_SEL0, temp)
注意:
すべてのSCBブロックとTCPWMなどの他の周辺機器も、HSIOMとドライブモードレジスタを変更することにより、ファームウェアで制御できます。