RX231を使用しています。
UARTを使うにあたり、CTS/RTS機能を使いたく調べたところ、どちらか一方しか選択できないとわかりました。
単純な疑問なのですが、どうして一方しか使えないような仕様になっているのか、理由が知りたいのです。
ハードフロー制御をあまり使ったことがないのですが、どちらか一方で足りるものなのでしょうか。
どうして。。。
チョコさん、こんにちは。NoMaYです。リプライ有難う御座います。チョコさんが3つ前の投稿で書かれていた8251Aの初期バージョンでのCTSの問題は、8251Aのdatasheetの以下の記載から、~CTS(~はローアクティブの印)が送信回路に入力されていることが分かりますので、論理設計ミスがあったのだろうな、とは推測出来るのです。ですが、8250(といっても8250Aですが)のdatasheetには「~CTS has no effect on the Transmitter.」と書かれていて、~CTSと送信回路は何の関係も無い筈で、それでどうしてそんなバグが発生したのか推測出来ないのです。あと、今しがた気付いたのですが、以下の文面からすると、8251Aでは送信途中に~CTS=Low→Highの変化があると送信中のデータが壊れる(その時点から強制的にTxD=Highになる)と読み取れるのですが、そうなのですか? (もしそうなら、そういうものはフロー制御と呼ぶものでは無いのでは?という気がしています。) ただ、チョコさんの3つ前の投稿には「CTSに対応するRTSはRxRDYを使っていた記憶があります。これでも,最悪で1キャラクタ分は送信されてくる可能性があったので,外部にF/Fを付けて,スタート・ビットでRTSをオフしたこともありました。」とも書かれていて、それと整合性が取れていない(スタートビットの初めの部分でTxDが一瞬だけHigh→Low→Highと変化するのみで、正常なデータが送信されることは無い?)ような気もして、首を傾げているところです。8251Aのdatasheetから抜粋Transmitter BufferThe Transmitter Buffer accepts parallel data from the Data Bus Buffer, converts it to a serial bit stream, inserts the appropriate characters or bits (based on the communication technique) and outputs a composite serial stream of data on the TxD output pin on the falling edge of ~TxC. The transmitter will begin transmission upon being enabled if ~CTS = 0. The TxD line will be held in the marking state immediately upon a master Reset or when Tx Enable or ~CTS is off or the transmitter is empty.
チョコです。 その当時のデバイスは設計変更すると,動いていたものが動かなくなることがよくありました。 CTSについても,Aのつかない8251では正しく動作していました。(オリジナルではチャントできていた 機能が改良版では動かなくなったパターンです。送信中のデータが破壊されるのは経験していませんが, これは単にタイミングの問題でしょう。当時,UARTの受信では,スタートビットの中央辺りでノイズが 載るとUARTが動かなくなってしまうなど結構問題がありましたよ。) また,当時は内部に訳の分からない回路があって,それが後から公開されたり,逆に,公開されていた 機能が削除されたりしていました。 8250でもCTSをサポートしようとして回路を組み込んだが問題があってCTS端子に動作しないように細工 したんじゃないかと想像されます。とにかくお客様のセットは出さないといけないので,その回路を 殺したものを正式な仕様にして,CTSが正常になったものを改版品としてしまったとか。 そんな時代でした。
追伸
スタートビット云々は,8251での話です。8251Aは使いませんでした(使えなかったので,古い8251を
かき集めて対応していました。その後,UPD71051に切り替えたので,8251Aは不採用でした)。
こんにちは。NoMaYです。昔のシリアルインターフェースLSIについては夜にまた投稿しようと思いますが、今では単体のシリアルインターフェースLSIは使わないでマイコン内蔵のシリアルインターフェースを使うことになります。いつものことながら、しつこい&くどい、なぁとは思いつつ、各ベンダのマイコンを調べてみました。といっても、滅茶苦茶な数のマイコンがありますので、以下でGoogle検索してみて最初にdatasheetのPDFが見付かったものを調べることにしました。(なお、調べている最中にGoogle検索の結果が変動することもありました。また、見付かったPDFが簡易版だったために、完全版のリファレンスマニュアルを参照したものもあります。)Google検索:www.google.co.jp/search?q=<ベンダ名>+<ファミリ名>+datasheet結果は以下の通りです。片方しか使えないものはありませんでした。(両方使えないものはありました。) あと、びっくりしたこととして、STM32で日本語のリファレンスマニュアルがあったことです。ただ、文章に違和感もありますので、機械翻訳(というか今はAIと表記するのでしょうね)を使用して自動翻訳したもの(それをベースに人が最小限の修正したもの?)なのかも知れません。www.google.co.jp/search?q=Microchip+SAM+datasheet(例) SAM G54G / SAM G54NThe Atmel® | SMART SAM G54 is a series of Flash microcontrollers based on the high-performance 32-bit ARM® Cortex®-M4 RISC processor. They operate at a maximum speed of 96 MHz and feature up to 512 Kbytes of Flash and 96 Kbytes of SRAM.CTS・RTS ⇒ 有り(UARTには無いがUSARTには有る)両方とも使える内蔵ハードウェアによる自動的なハードウェアハンドシェイクが可能www.google.co.jp/search?q=Microchip+PIC32+datasheet(例) PIC32MX5XX/6XX/7XX32-bit Microcontrollers (up to 512 KB Flash and 128 KB SRAM) with Graphics Interface, USB, CAN, and EthernetCore: 80 MHz/105 DMIPS MIPS32® M4K®• MIPS16e® mode for up to 40% smaller code size• Code-efficient (C and Assembly) architecture• Single-cycle (MAC) 32x16 and two-cycle 32x32 multiplyCTS・RTS ⇒ 有り両方とも使える内蔵ハードウェアによる自動的なハードウェアハンドシェイクが可能www.google.co.jp/search?q=Microchip+AT32+datasheet(例) AT32UC3CHigh Performance, Low Power 32-bit AVR® Microcontroller– Compact Single-cycle RISC Instruction Set Including DSP Instruction Set– Built-in Floating-Point Processing Unit (FPU)– Read-Modify-Write Instructions and Atomic Bit Manipulation– Performing 1.49 DMIPS / MHz • Up to 91 DMIPS Running at 66 MHz from Flash (1 Wait-State) • Up to 49 DMIPS Running at 33 MHz from Flash (0 Wait-State)– Memory Protection UnitMulti-hierarchy Bus System– High-Performance Data Transfers on Separate Buses for Increased Performance– 16 Peripheral DMA Channels Improves Speed for Peripheral CommunicationInternal High-Speed Flash– 512 Kbytes, 256 Kbytes, 128 Kbytes, 64 Kbytes Versions– Single Cycle Access up to 33 MHz– FlashVault™ Technology Allows Pre-programmed Secure Library Support for End User Applications– Prefetch Buffer Optimizing Instruction Execution at Maximum Speed– 100,000 Write Cycles, 15-year Data Retention Capability– Flash Security Locks and User Defined Configuration AreaInternal High-Speed SRAM, Single-Cycle Access at Full Speed– 64 Kbytes (512 KB and 256 KB Flash), 32 Kbytes (128 KB Flash), 16 Kbytes (64 KB Flash)– 4 Kbytes on the Multi-Layer Bus System (HSB RAM)CTS・RTS ⇒ 有り両方とも使える内蔵ハードウェアによる自動的なハードウェアハンドシェイクが可能www.google.co.jp/search?q=TI+TM4C+datasheet(例) TM4C123GH6PMTexas Instrument's Tiva™ C Series microcontrollers provide designers a high-performance ARM® Cortex™-M-based architecture with a broad set of integration capabilities and a strong ecosystem of software and development tools. Targeting performance and flexibility, the Tiva™ C Series architecture offers a 80 MHz Cortex-M with FPU, a variety of integrated memories and multiple programmable GPIO.CTS・RTS ⇒ 有り(ただし8つあるUARTのうちの1つのみ)両方とも使える内蔵ハードウェアによる自動的なハードウェアハンドシェイクが可能www.google.co.jp/search?q=TI+C2000+datasheet(例) TMS320F28004x Piccolo™TMS320C28x 32-Bit CPU– 100 MHz– IEEE 754 Single-Precision Floating-Point Unit (FPU)– Trigonometric Math Unit (TMU)– 3×-Cycle to 4×-Cycle Improvement for Common Trigonometric Functions Versus Software Libraries– 13-Cycle Park Transform– Viterbi/Complex Math Unit (VCU-I)– Ten Hardware BreakpointsProgrammable Control Law Accelerator (CLA)– 100 MHz– IEEE 754 Single-Precision Floating-Point Instructions– Executes Code Independently of Main CPUOn-Chip Memory– 256KB (128KW) of Flash (ECC-Protected) Across Two Independent Banks– 100KB (50KW) of RAM (ECC-Protected or Parity-Protected)– Dual-Zone Security Supporting Third-Party Development– Unique Identification NumberCTS・RTS ⇒ 無しwww.google.co.jp/search?q=NXP+LPC+datasheet(例) LPC1769/68/67/66/65/64/6332-bit ARM Cortex-M3 microcontroller; up to 512 kB flash and 64 kB SRAM with Ethernet, USB 2.0 Host/Device/OTG, CANThe LPC1768/67/66/65/64/63 operate at CPU frequencies of up to 100 MHz. The LPC1769 operates at CPU frequencies of up to 120 MHz. The ARM Cortex-M3 CPU incorporates a 3-stage pipeline and uses a Harvard architecture with separate local instruction and data buses as well as a third bus for peripherals. The ARM Cortex-M3 CPU also includes an internal prefetch unit that supports speculative branching.CTS・RTS ⇒ 有り(ただし4つあるUARTのうちの1つのみ)両方とも使える内蔵ハードウェアによる自動的なハードウェアハンドシェイクが可能www.google.co.jp/search?q=NXP+Kinetis+datasheet(例) K10 Sub-FamilyPerformance– Up to 100 MHz ARM Cortex-M4 core with DSP instructions delivering 1.25 Dhrystone MIPS per MHzMemories and memory interfaces– Up to 512 KB program flash memory on non-FlexMemory devices– Up to 128 KB RAM– Serial programming interface (EzPort)– FlexBus external bus interfaceCTS・RTS ⇒ 有り両方とも使える内蔵ハードウェアによる自動的なハードウェアハンドシェイクが可能www.google.co.jp/search?q=STMicro+STM32+datasheet(例) STM32F103x8 STM32F103xBARM® 32-bit Cortex®-M3 CPU Core– 72 MHz maximum frequency, 1.25 DMIPS/MHz (Dhrystone 2.1) performance at 0 wait state memory access– Single-cycle multiplication and hardware divisionMemories– 64 or 128 Kbytes of Flash memory– 20 Kbytes of SRAMおお!日本語リファレンスマニュアルがある!CTS・RTS ⇒ 有り両方とも使える内蔵ハードウェアによる自動的なハードウェアハンドシェイクが可能[余談]ちなみに、今回気付いたSTM32の日本語リファレンスマニュアルですが、以下の通りの記載がありました。「この資料は、STMicroelectronics NV 並びにその子会社( 以下ST) が英文で記述した資料(以下、「正規英語版資料」)を、皆様のご理解の一助として頂くためにST マイクロエレクトロニクス㈱が英文から和文へ翻訳して作成したものです。この資料は現行の正規英語版資料の近時の更新に対応していない場合があります。この資料は、あくまでも正規英語版資料をご理解頂くための補助的参考資料のみにご利用下さい。この資料で説明される製品のご検討及びご採用にあたりましては、必ず最新の正規英語版資料を事前にご確認下さい。ST 及びST マイクロエレクトロニクス㈱は、現行の正規英語版資料の更新により製品に関する最新の情報を提供しているにも関わらず、当該英語版資料に対応した更新がなされていないこの資料の情報に基づいて発生した問題や障害などにつきましては如何なる責任も負いません。」
こんにちは。NoMaYです。(すみません。昨夜は眠さに負けてしまいました。)リカルドさん、uPD8251AF(uP‘C’8251AFは打ち間違いですね)のマニュアル調査結果、有難う御座いました。チョコさん、スタートビット(と外部に付けたF/F)の件はA無し8251だったとの返信、有難う御座いました。Intel 8251Aのデータシートと互換品/上位?互換品の、東芝 TMP8251A、NEC μPD8251A/AF、NEC μPD71051、のデータシートを見比べてみました。(TMP8251AはデータシートのPDFの19ページ以降です。) 私の感想は、これは現物を動かさないと分からないな、というものですが、昨日の他マイコン調査で、片方しか使えないという仕様が少なくとも今はルネサスRXマイコン特有のものであることを理解したので、昔を気にするのはもうやめることにします。それよりも、RXマイコンと他社マイコンを繋ぐと何か問題が発生するか、とか、発生するなら回避策があるか、とか、そちらの方が気になり始めました。以下、比較結果です。Intel 8251Awww.datasheetcatalog.com/datasheets_pdf/8/2/5/1/8251A.shtml・オリジナル・文章だけでは送信途中に~CTS=Low→Highの変化があると送信中のデータが壊れるような印象あり・その一方で波形データの図を見ると最後まできちんと送信されていて矛盾している東芝 TMP8251Awww.datasheetcatalog.com/datasheets_pdf/T/M/P/8/TMP82C51A.shtml・Intel 8251Aのデータシートをテクニカルライターが全体構成や文章細部や図を手直したような印象・原本からのスキャンが綺麗であり波形データが見易い・「Figure 6.10 Transmitter Control and Flag Timing (SYNC Mode)」の SYNC Mode は ASYNC Mode の間違いと思われる・文章細部の手直しにより文章からはデータが壊れるような印象がオリジナルよりも強くなっている・その一方で波形データの図を見ると最後まできちんと送信されていて矛盾しているNEC μPD8251A/AFwww.datasheetcatalog.com/datasheets_pdf/U/P/D/8/UPD8251AF.shtml・Intel 8251Aのデータシートとは文章が結構変更されている(LSIの動作が違うのかと思う程の違いもある)・こちらの文章では送信途中に~CTS=Low→Highの変化があると送信中のデータが壊れるような印象は全く無い・従って波形データの図で最後まできちんと送信されていることと矛盾しないNEC μPD71051www.datasheetcatalog.com/datasheets_pdf/U/P/D/7/UPD71051.shtml・型番が変わっている程なのでデータシートもリニューアルされて詳しくなっている・反面、波形データは貧弱になってしまっていて、~CTS=Low→Highの変化でTxDがどうなるか追うことが出来ない・送信途中に~CTS=Low→Highの変化があった場合の動作は文章として以下のように明文化されていた「If ~CTS is set equal to 1 during transmission, the sending operation stops after sending all currently witten data and the TxDATA pin goes high.」・でもstops after sending all currently witten dataでは思っていた動作より1文字多く出力される場合がある・それを踏まえて8251Aの波形データの図を見ると確かに思っていた動作より1文字多く出力されている以下、datasheetの波形データの図です。(東芝 TMP8251Aを最初に持って来たのは図が綺麗だったからです。)東芝 TMP8251AIntel 8251ANEC μPD8251A/AF
チョコさん、こんにちは。NoMaYです。リプライ有難う御座います。相手側のソフトウェアが、何が繋がるか分からない、最悪パケットが完了するまで送られてしまうこともある、ということを想定して作られていれば大丈夫なのだと思いますが、今時の32bitマイコンで内蔵ハードウェアでRTS/CTSのフロー制御をやれないものがあるとは想定していなかった、そんなマイコンの為にソフトウェアを複雑化させるのは勘弁して欲しい、という感覚/発想で相手側が開発されていた場合どうなるのかなぁ、という点が気になった、と私が気になったことを再定義させて下さい。そういう場合でも、RXマイコン側のソフトウェアを頑張れば(出来れば余り頑張らずとも)対処可能なのか、ギブアップして他社32bitマイコンを検討するのが得策なのか、そういうところが気になりました。そして今思うのは、もともとのalmondさんの懸念も突き詰めると根っ子としてはそういうことではないのかなぁ、という気がして来ました。そして、そうなると案件の詳細に依存してしまうので概略的なことは何も言えない、となってしまうのか、わわいさんがやリカルドさんが書かれたような、(私の勝手な解釈とも言えますが)CTS制御がハードウェアで出来れば後はソフトウェアで何とかなる、(ポイントさえ分かればソフトウェアを書くのは難しくない筈、) ぐらいは言えそうなのか、そういうのが回答出来たら良いのかなぁ、と今は思うのです、、、