UARTの仕様
TWELITEにはシリアルポートとしてUARTが2ポート(UART0、UART1)あります。
※ ソフトウェアの処理方法例については「UART処理」を参照ください。
- 対応しているボーレートは 4800, 9600, 19200, 38400, 76800, 115200bps が主になります。
- 実際の周期は 1,000,000 / (ディバイザ) bps で計算します(ディバイザはvAHI_UartSetBaudDivisor()で設定します) 。
※ 115200ディバイザ=9で 111111 bps となりますので、若干誤差が大きいため、接続先との整合性を事前に確認してください。以下に挙げる vAHI_UartSetClocksPerBit() API による調整により、より近いボーレートとなります。
※ 接続相手側のマイコンでは、多くの場合システムクロックに対する分周比の設定で通信条件を近づける事が出来ますので、上記の良くつかわれるボーレート以外の設定も検討してください。
※ 下記にある ClocksPerBit を設定することで微調整できる場合が有ります。 - vAHI_UartSetClocksPerBit() API による調整(CBP)も可能です。
※ UARTの性質上、誤差が2%以内であれば、概ね問題がおきにくい誤差範囲となります。
※ 実際のボーレートは接続先との整合性検査やオシロスコープなどで確かめてください。
以下に代表的な計算例を示します。- Div/Cbp = 23/11 の場合、57600bps に対して -0.6% (Cbp無しの場合 Div=17 で -2.1%)
- Div/Cbp = 10/13 の場合、115200bps に対して 0.8% (Cbp無しの場合 Div=9 で 3.5%)
- Div/Cbp = 5/13 の場合、230400bps に対して 0.8% (Cbp無しの場合は Div=4 で -8.5%)
- 通常使用しませんが、1Mbps まで対応可能です。データを高速に出力したい場合などに利用しますが、データの破損等が発生しやすくなります。(250000bps 位までが常用範囲で、特に高速になる場合取りこぼしなどが発生しえます。十分検証ください。)
※ ただしこの速度でのUARTデータを受信して無線伝送することは、様々なボトルネックが要因となり、出来ません。
- 実際の周期は 1,000,000 / (ディバイザ) bps で計算します(ディバイザはvAHI_UartSetBaudDivisor()で設定します) 。
- CTS/RTS を用いたハードウェアフロー制御が可能です。
- 16バイトのFIFOバッファがあります。
- 割り込みまたはポーリングでUARTからのデータを受け取ります。割り込みはバッファの入力データ数が1,4,8,14バイトのところで発生します。通常は1バイトのところで割り込みをかけて、バッファからデータを取り出します。
- プログラムの書き込みはUART0でのみ可能です。
- アプリケーションソフトウエアからの機能としてはUART0、1とも違いはありません。