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: 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: 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 のボーレートを低くすることによって、オーバーランエラーを回避できます。
Community Translated by MoTa_728816 Version : **
質問: ADCでの、INLとDNLの意味を教えてください。
回答:
DNL - 微分非直線性誤差 (Differential Non-Linearity):
理想的なADCの出力は、幅を持った2のN乗のステップに分割されます。この理想値からのずれを DNL (微分非直線性誤差)と呼び、カウント値として表現されます。DNLは ADC の個々の構造に起因するため、キャリブレーションの実行ではDNL は除去できません。
INL - 積分非直線性誤差 (Integral Non-Linearity):
DNLを積算したものが総積分非直線性誤差です。これはADCの理想的な出力スロープからの最大偏差(ずれ)として定義され、その値のステップの中心値との差として測定されます。この値はカウント値として表現されます。INLは ADC の個々の構造に起因するため、キャリブレーションの実行では、この影響は除去できません。これらの誤差の詳細については添付のドキュメントを参照してください。
Version: **
Translation - Japanese: FM0+/FM3/FM4 マイクロコントローラ ビットバンディングによるペリフェラル レジスタの各ビットへのアクセス - KBA220576 - Community Translated (JA)
Question:
When bit-banding is used to access a bit in peripheral registers, which access size (a byte, a half-word or a word) can be used for the bit-banding access?
Answer:
The bit-band alias address is word-aligned and can be accessed with any of the access sizes. However, it is recommended to use the minimum access size supported by the targeted register. You can find available access sizes of each peripheral register in “Appendixes – Register Map” sections of Technical Reference Manual for FM0+, FM3 or FM4 microcontroller.
When a read or write instruction to access a bit-band alias address is issued, a read operation (for read instruction) or a read-modifywrite operation (for write instruction) is implicitly executed to the targeted peripheral register with the access size specified in the read/write instruction.
The access size doesn’t matter for most of peripheral registers. However, we need to know some cases that it should be considered.
Please check size of the target register and if there are any other registers in a 32-bit word line containing the target register
If the target is a byte or half-word register, and other registers are located in the same word line, do not access the bit-band alias address with the size larger than the target register. Otherwise, the implicit read/read-modify-write operation may be applied not only to the target register but also to the neighbor registers in the same word line. If the neighbor registers have some hardware controlled bits such as FIFO or status flag, contents of these bits may be lost by the read/read-modify-write operation.
(E.g.) USB Host: Host Error Status (HERR) register and Host Interrupt (HIRQ) register
This is also true for accessing a bit in a register containing the hardware controlled bits. Typical example is Scan Conversion FIFO Data (SCFD) Register. The 32-bit register has a status bit (INVL bit) indicating validity of a scan conversion result in lower half word and a FIFO storing the scan conversion results in upper half word. To know the validity of a scan conversion result, status of the INVL bit might be periodically estimated.
If a bit-band alias address corresponding the INVL bit is accessed with 32-bit word size to read validity of a scan conversion result, the read operation is applied to a whole register width and valid scan conversion data in the FIFO will be shifted out and lost. To avoid this problem, the bit-band alias address should be accessed with byte or half-word size.
(E.g.) DMAC: PB bit and EB, ST bits of Configuration A (DMACA) register
MFS UART Mode: D8 bit and D[7:0] bits of RDR/TDR register in multiprocessor mode
ADC: Lower and higher half-words of Scan Conversion FIFO Data (SCFD) and Priority Conversion FIFO Data (PCFD) Register
Another case to be considered is a write to a bit in write-only register. A bit-band alias write will cause a read-modify-write operation to the register. However, read value of the operation may be undefined. Therefore, an undefined value might be written back to the register excluding the target bit. This may cause unexpected behavior on the peripheral. Do not use bit-band alias access to such registers.
(E.g.) BT: Software-based Simultaneous Startup (BTSSSR) register
For PDL (Peripheral Driver Library) users, please confirm definitions of bit-band alias addresses you are using.
PDL provides macros of bit-band alias addresses for easy access to bits of peripheral registers. The bit-band alias macros are defined with a prefix “bFM_” in peripheral register definitions header file. If the bit-band alias macros you’re using violate the above manners, do not use them.
(E.g.) Lower and higher half-words of Scan Conversion FIFO Data (SCFD) register
Definition in PDL 2.1.0: #define bFM_ADC0_SCFD_INVL *((volatile uint8_t *)(0x424E01B0UL))
→ This is not a problem because the SCFD register is byte-accessed.
Definition in PDL 2.0.2: #define bFM_ADC0_SCFD_INVL *((volatile unsigned int*)(0x424E01B0UL))
→ This may cause a problem and FIFO data will be lost because the SCFD register is word-accessed. Do not use this
Show Less