Community Translated by MoTa_728816 Version: **
Translation - English: Selecting ADC Analog Input Channels 8 Through 15, and 24 Through 31 for ADC Conversion Is Not Supported in PDL 2.1.0 - K…
質問:
ADC ドライバのバグのために、ADC 変換において アナログ入力チャネル 8 から 15 および 24 から 31 が選択できません。この問題は ペリフェラル ドライバ ライブラリ (PDL) 2.1.0 の ADC を使用することで FM0+ と FM4 ファミリのデバイスで再現されています。ワークアラウンドはありますか?
回答:
いいえ、ありません。この問題は PDL 2.x の次のリリースで修正される予定です。
ファームウェア アップデートの予定および ADC 変換の特定入力チャネルの使用方法に関するご質問は Cypress 技術サポート (www.cypress.com/mycases) までお問合せください。
Show LessCommunity Translated by MoTa_728816 Version: **
Translation - English: Dstc_ClearDreqenbBit() function in PDL 2.1.0 sets DREQENB register bit instead of clearing it - KBA218861
質問:
ペリフェラル ドライバ ライブラリ (PDL) 2.1.0 の Dstc_ClearDreqenbBit() 関数が DREQENB レジスタビットをクリアせずにセットしてしまいます。この問題は PDL 2.1.0 の DSTC を使用した場合に FM0+ と FM4 ファミリで再現可能です。ワークアラウンドはありますか?
回答:
PDL のソースを手動で変更することが必要ですが、下記ワークアラウンドがあります。
/drivers/dstc/dstc.c というファイルを開いて、Dstc_ClearDreqenbBit() 関数を特定してください。
下記の行を
*(uint32_t*)(uint32_t)(((uint32_t)(&FM_DSTC->DREQENB0)) + ((4ul * (uint32_t)u8WordPos))) |= u32BitPosRelative;
下記の行に変更してください。
*(uint32_t*)(uint32_t)(((uint32_t)(&FM_DSTC->DREQENB0)) + ((4ul * (uint32_t)u8WordPos))) &= ~(u32BitPosRelative);
この問題は PDL 2.x の次のリリースで修正される予定です。ファームウェア アップデートの予定および DREQENB レジスタの使用方法に関するご質問は Cypress 技術サポート (www.cypress.com/mycases) までお問合せください。
Show LessCommunity Translated by MoTa_728816 Version: **
Translation - English: Can the built-in high-speed CR be selected for Master Clock when using the USB Function? - KBA218388
質問:
USB 機能を使用するときに、内蔵のハイスピード CR をマスタークロックに選択することは可能ですか?
回答:
いいえ。ハイスピード CR クロック (CLKHC) の周波数精度は USB 規格の要求に適合しません。同様に、EtherMAC、CAN/CAN-FD、I2S ブロックも、この場合使用出来ません。どのよう場合にハイスピード CR をマスタークロックに使用するべきかについての詳細は FMx Peripheral Manual (Communication Part) をご参照ください。
Show LessCommunity Translated by MoTa_728816 Version: **
Translation - English: Choosing Appropriate Capacitance Value on the C Pin for FM0+ Series MCUs – KBA222290
質問:
FM0+ シリーズ MCU で消費電力を抑えるために適切な C ピンのコンデンサ容量はどのように選択したら良いでしょうか?
回答:
FM0+ シリーズのデバイスでは、デバイスが DeepStandby モードからウェイクアップ時の瞬間的なピーク電流値は C ピンに適応されたコンデンサの容量値に大きく関係しています。
C ピンに接続されているコンデンサはデバイスが DeepStandby モードへ入ったり出たりするときにいつも充電と放電が行われます。これはコンデンサの容量が小さければ電流も小さくなるということです。しかし、コンデンサの容量の最小値は 1 μF で、もしこの容量が 1 μF 未満の場合デバイスの通常動作も保証されません。一方、コンデンサの容量は温度にも影響を受けます;周囲温度の変化によって容量も変化します。そのため、温度変化も考慮に入れた上でコンデンサの容量値が常に 1 μF よりも大きくなるようにする必要があります。
Show LessCommunity Translated by MoTa_728816 Version: **
Translation - English: 65-nm Flash Family Behavior During Voltage Irregularities - KBA219071
質問:
システムが不安定な電圧に遭遇した場合、どのようなことを考慮したら良いでしょうか?
回答:
ケースバイケースです: 無視しても良い場合もありますし、パワーオンリセット (POR) やその代替となる POR に似た回復処理が必要になる場合もあります。
通常、20 ns 未満のオーバーシュートやアンダーシュートは フラッシュメモリに認識されません。しかし、その他の電圧降下や電力低下は、然るべき回復処理が必要になります。
電力低下/ 電圧降下の規定
もし電圧の揺らぎが VLKO よりも高い範囲に収まっていた場合、部品は通電されていると認識され VCC が通常動作電圧に復帰すると正常に動作します。
しかしフラッシュの電源電圧が VCC ロックアウト (VLKO) 未満に落ちると、フラッシュは電源オフになったものと認識されます。この場合のベストプラクティスは完全な POR 処理を行うことです。これは Cypress のフラッシュデバイスでは VCC が再度上昇して通常動作範囲に入ったときにデバイスを正しく初期化するために、電源電圧、VCC, が tPD の期間 VRST 未満の電圧に落ちる必要があるということです。他の形式のリセット、RESET# ラインをトグルしたり、ソフトウェア リセット コマンドを発行することは POR リセットとは異なり、この状況下でのリセットとしては適切ではありません。
65-nm HyperFlash™ や HyperRAM™ メモリなど、一部の Cypress NOR フラッシュメモリは ディープ パワー ダウン (DPD) をサポートし、これは POR の代替手段の一部として使用することが可能です。そのため、VCC が VLKO 未満に降下して再び VCC が通常動作電圧に復帰するまでに POR を完了できないような電圧降下では、下記のワークアラウンドに従うことが可能です:
VCC > VCC(MIN) の期間、以下を実行します:
この復帰方法は DPD モードをサポートするすべての パラレル NOR、シリアル NOR、HyperFlash、HyperRAM において正当な POR と完全に同等です、
ただし シリアル NOR フラッシュの S25FS-S ファミリは DPD モードからの退出で POR のような完全なパワーアップ処理が行われないので例外となります。
Show LessCommunity Translated by MoTa_728816 Version: **
Translation - English: Output UART Log on S6E1C Series Starter Kit with PDL2.1.0 to Host PC Terminal - KBA226798
質問:
PDL 2.1.0 を使用して S6E1C シリーズ スタータ キットの URART ログを ホストPC のターミナルに出力するにはどうしたら良いですか?
回答:
スタータ キットでは SOT1_1 と SIN1_1 ピンが S6E1C3 マイクロコントローラのピン SIN0_1 と SOT0_1 にそれぞれ接続されていて、CMSIS-DAP ポートと S6E1C3 マイクロコントローラの UART 通信を可能にしています。
しかし、PDL 2.1.0 (…\PDL\2.1.0\utilities\printf_scanf\uart_io.c) では、MCU の UART TX ポートは SOT0_0 に設定されています。その為、 S6E1C シリーズのスタータ キットでは、下記の変更が必要になります。
ファイル: …\PDL\2.1.0\utilities\printf_scanf\uart_io.c
関数: void Uart_Io_Init(void)
#if (PDL_UTILITY_ENABLE_UART_PRINTF == PDL_ON)
- SetPinFunc_SOT0_0();
+ SetPinFunc_SOT0_1();
Mfs_Uart_EnableFunc(UartCh, UartTx);
#endif
詳細については下記をご参照ください。
FM0-64L-S6E1C3 - Arm® Cortex®-M0+ MCU Starter Kit with USB and Digital Audio Interface
Peripheral Driver Library (PDL)
Show LessCommunity Translated by MoTa_728816 Version: **
Translation - English: Bit-banding access to individual bits in peripheral registers for FM0+/FM3/FM4 microcontrollers – KBA220576
質問:
ペリフェラル レジスタへのアクセスにビットバンディング (Bit-banding) を使用した場合、どのアクセス サイズ (バイト、ハーフワード、ワード) が使用可能ですか?
回答:
ビットバンド エイリアス アドレスはワード単位でアラインされていて任意のサイズでのアクセスが可能です。しかし、目的とするレジスタがサポートしている最小単位でのアクセスが推奨されます。各ペリフェラル レジスタの対応可能なアクセスサイズについては FM0+、FM3、FM4 マイクロコントローラ テクニカル リファレンス マニュアル (TRM) の “Appendixes - Register Map” 節 をご参照ください。ビットバンド エイリアス アドレスに対して 読出し(read) あるいは 書込み(write) の命令が発行されると、(読出し 命令には) 読出し処理が、(書込み 命令には) リード モディファイ ライト (read-modify-write) 処理が暗黙的にその読出し/書込み命令で指定されたアクセス サイズで対象ペリフェラル レジスタに行われます。
アクセス サイズはほとんどのペリフェラル レジスタでは問題になりません。しかし、考慮する必要がある場合もあります。
対象レジスタのサイズと同じ32-bit ワード単位内に他のレジスタが含まれていないかをご確認ください。
もし対象レジスタがバイトやハーフワードのレジスタで、同じワード内に他のレジスタが配置されていた場合、ビットバンドを対象レジスタのサイズよりも大きなサイズでアクセスしないでください。もし隣接するレジスタが FIFO やステータスレジスタのように、ハードウェアウェア コントロール ビットを含んでいた場合読出し/リード モディファイ ライト処理によって内容が失われてしまう可能性があります。
(例) USB ホスト:ホスト エラー ステータス (HERR) レジスタとホスト割込み (HIRQ) レジスタ
これはハードウェア コントロール ビットを含むレジスタへのビットアクセスでも発生します。
代表的な例としては スキャン変換 FIFO データ (SCFD) レジスタが挙げられます。
32-bit のレジスタの下位ハーフワードにはスキャン変換結果の有効性を表すステータスビット (INVL ビット) を含み、上位ハーフワードには FIFO がスキャン変換後のデータを保存しています。スキャン変換結果の有効性を確認するために、定期的にこの INVL ビットは評価される可能性があります。
もしスキャン変換結果の有効性を確認するために INVL ビットを含むアドレスが 32-bit ワードサイズでアクセスされると、読出し処理はこのレジスタの全領域におよび FIFO の有効なスキャン変換データもシフトアウトされて失われてしまいます。
この問題を回避するためには、このビットバンド エイリアス アドレスにはバイトかハーフワードのサイズでアクセスしなければなりません。
(例) DMAC: 設定レジスタ A (DMACA) の PB ビットと EB, ST ビット
MFS UART モード: マルチプロセッサ モードにおける RDR/TDR レジスタの D8 ビットと D[7:0] ビット
ADC: スキャン変換 FIFO データレジスタ (SCFD) と プライオリティ変換 FIFO データ (PCFD) レジスタの下位と上位のハーフワード
他の注意が必要なケースとしては書込み専用レジスタへのビット書込みがあります。
ビットバンド エイリアスの書込みは対象レジスタにリード モディファイ ライト処理を行います。
しかし、(書込み専用レジスタの)読出し値は未定義となっています。
そのため、対象ビット以外のビットに未定義の値が書き込まれてしまう恐れがあります。これはペリフェラルの予期せぬ挙動につながる可能性があります。
このようなレジスタにはビットバンド エイリアス アクセスは行わないでください。
(例) BT: Software-based Simultaneous Startup (BTSSSR) レジスタ
ペリフェラル ドライバ ライブラリ (PDL) をお使いの場合、使用するビットバンド エイリアス アドレスの定義を確認してください。
PDL はペリフェラル レジスタのアクセスを容易にする ビットバンド エイリアス アドレスのマクロを提供しています。
ビットバンド エイリアスのマクロはペリフェラル定義ヘッダファイル内で、“bFM_”というプリフィックス付きで定義されています。
もしお使いのビットバンド エイリアスのマクロが前述の手法に従っていない場合には、それらはご使用にならないでください。
(例) スキャン変換 FIFO データ (SCFD) レジスタの下位と上位のハーフワード
PDL 2.1.0 での定義:#define bFM_ADC0_SCFD_INVL *((volatile uint8_t *)(0x424E01B0UL))
→ SCFD レジスタへのアクセスがバイトアクセスなので、これは問題ありません。
PDL 2.1.0 での定義:#define bFM_ADC0_SCFD_INVL *((volatile unsigned int*)(0x424E01B0UL))
→ SCFD レジスタへのアクセスがワードアクセスなので、FIFO データが失われる危険性があります。このマクロ定義は使用しないでください。
Show LessCommunity Translated by NoTa_4591161 Version: *B
Translation - English: Knowledge Base – Cypress Semiconductor Cage Code - KBA89258
質問:
Cypresの商業および政府機関コードまたはCAGE CODEとは何ですか?
回答:
商業および政府機関コード(CAGEコード)は、さまざまな政府機関や防衛機関、および政府機関自体やさまざまな組織のサプライヤーに割り当てられる固有のIDです。
CAGEコードは、特定の場所にある特定の施設を識別する標準化された方法を提供します。
Cypress Semiconductor社のカリフォルニア州サンノゼのCAGEコードは65786です。
Show LessCommunity Translated by keni_4440091 Version: *B
質問:
National InstrumentsのLabVIEWソフトウェアを使用して、KitProg2 / MiniProg3をもつサイプレスデバイスのプログラムするにはどうすればよいですか?
回答:
LabVIEWは、コンポーネントオブジェクトモデル(COM)APIにアクセスするActiveXメソッドをサポートします。詳細については、ActiveX and LabVIEW white paperを参照してください。 PSoC®Programmerのドライバは、カスタマイズされたプログラミングホストデザインのためのCOMインターフェースをサポートしています。すべてのPSoC Programmer COM APIにおける詳しい説明(定義、メソッド、パラメータ)は、 PSoC Programmer COM User Guideを参照してください。 LabVIEWプロジェクトにおける、Python、C#、およびPerlのコード例をPSoC Programmerのインストールフォルダー(…\ Cypress \ Programmer \ Examples \ Programming)から使用できます。
以下のセクションでは、LabVIEWおよびKitprog2 / Miniprog3を使用してターゲットのサイプレスデバイスをプログラムする方法を示します。ターゲットデバイスは、PSoC4、PSoC3、またはPSoC5LPです。プログラミング操作には以下に示すようにハードウェア接続が必要です。
LabVIEWプロジェクトのソフトウェア開発を開始することで、最初にPSoC Programmer COMオブジェクトをLabVIEWによって正しくフックする必要があります。 LabVIEWの「オートメーションオープン」オプションを使用して、PSoC Programmer COMオブジェクトのActiveXクラスオブジェクトを選択します。以下にその方法を示します。
ソフトウェアアプローチの簡単なプログラミングフローチャートを次に示します。これは例としてPSoC4を使用します。 PSoC 3およびPSoC5 LPに対しも、応用が可能です。以下のフローチャートはフラッシュ保護を考慮していないことに注意してください。詳細については、PSoC ProgrammerインストールのPython、C#、またはPerlの例を参照してください。 PSoC Programmer COMオブジェクトが正常にフックされてLabVIEWプロジェクトの開発が完了した後、以下のフローチャートで言及されている各「pp.[Function]()」には、LabVIEWプロジェクトの「メソッドの呼び出し」オプションを使用して直接アクセスできます。
この記事に添付されているLabVIEWプロジェクトを例としてご使用下さい。詳細については、サイプレスセールスまたはテクニカルサポートにお問い合わせください。
Show LessCommunity Translated by MoTa_728816 Version : **
質問:
UART における オーバーランエラーとはどういったものですか?
また、どのような対策が必要ですか?
回答:
オーバーランエラーは直前の1バイトが UART の受信バッファから読み出される前に次の1バイトが受信された時に発生します。これは主に 割込み処理において 、CPU が受信バッファから文字を取り出すまでに必要とされる時間によって、引き起こされます。もし CPU のサービスが遅く次のバイトが受信される前に割込み処理を行えなかった場合、受信バッファがいっぱいになり、オーバーランエラーが発生します。 以下にこの問題を回避するためのいくつかの手法を紹介します。
1. CPU を可能な最大速度で動かしてください。
UART 割込み処理(その他の割込みも含まれます。)の速度が上がります。
2. UART の割込み処理(ISR) を可能な限り効率的かつ短くしてください。
例えば ISR は UART の受信バッファを読んで RAM バッファに移し、フラグだけをセットします。受信したデータの処理は通常処理(foreground)で行えます。 ISR の処理時間は、次のデータバイトを受信するために必要な時間より短くしてください。
3. C言語で ISR を記述した場合、すべての仮想レジスタ、ページレジスタ、AおよびXレジスタの退避と復帰が発生します。これは ISR の実行時間を増加させます。UART の割込み処理 (ISR) をアセンブラで記述することにより、ISRをより効率的に処理できます。
4. プログラム内の他の割込みは、その割込みによる遅延を発生し、結果的にオーバーランエラーに結び付くことがあります。 そのような状況では、UART のボーレートを低くすることによって、オーバーランエラーを回避できます。