<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>http://mochiuwiki.e2.valueserver.jp/index.php?action=history&amp;feed=atom&amp;title=MSP430F149_-_UART</id>
	<title>MSP430F149 - UART - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="http://mochiuwiki.e2.valueserver.jp/index.php?action=history&amp;feed=atom&amp;title=MSP430F149_-_UART"/>
	<link rel="alternate" type="text/html" href="http://mochiuwiki.e2.valueserver.jp/index.php?title=MSP430F149_-_UART&amp;action=history"/>
	<updated>2026-06-05T05:39:29Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://mochiuwiki.e2.valueserver.jp/index.php?title=MSP430F149_-_UART&amp;diff=13748&amp;oldid=prev</id>
		<title>Wiki: /* ボーレート計算 */</title>
		<link rel="alternate" type="text/html" href="http://mochiuwiki.e2.valueserver.jp/index.php?title=MSP430F149_-_UART&amp;diff=13748&amp;oldid=prev"/>
		<updated>2025-12-15T13:59:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;ボーレート計算&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2025年12月15日 (月) 22:59時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l276&quot;&gt;276行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;276行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ボーレート計算 &lt;/del&gt;==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ボーレートの計算 &lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MSP430F149のUSARTモジュールでは、ボーレートは以下に示す式で計算される。&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MSP430F149のUSARTモジュールでは、ボーレートは以下に示す式で計算される。&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l294&quot;&gt;294行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;294行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;この時、実際のボーレートは以下のようになる。&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;この時、実際のボーレートは以下のようになる。&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;math&amp;gt;\mbox{ 実 際 の ボ ー レ ー ト } = \dfrac{2000000}{208} = 9615 \, \mbox{[bps]}&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &amp;lt;math&amp;gt;\mbox{ 実 際 の ボ ー レ ー ト } = \dfrac{2000000}{208} = 9615 \, \mbox{[bps]}&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;これは、設定値 9600[bps]に対して約0.16%の誤差となる。&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;これは、設定値 9600[bps]に対して約0.16%の誤差となる。&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(9615 / 9600 = 1.00156...)&lt;/ins&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;u&amp;gt;一般的に、ボーレート誤差は2[%]以内であれば正常に通信できる。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;u&amp;gt;一般的に、ボーレート誤差は2[%]以内であれば正常に通信できる。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mochiuwiki:diff:1.41:old-13747:rev-13748:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
	<entry>
		<id>http://mochiuwiki.e2.valueserver.jp/index.php?title=MSP430F149_-_UART&amp;diff=13747&amp;oldid=prev</id>
		<title>Wiki: ページの作成:「== 概要 == UART (Universal Asynchronous Receiver / Transmitter) (汎用非同期送受信機) は、シリアル通信の一種であり、データを1ビットずつ送受信する。&lt;br&gt; &lt;br&gt; * 非同期通信 *: 送信側と受信側が別々のクロックを使用して、あらかじめ設定されたボーレート (通信速度) に基づいてデータを送受信する。 *: &lt;br&gt; * データフォーマット *: スタートビット、データビッ…」</title>
		<link rel="alternate" type="text/html" href="http://mochiuwiki.e2.valueserver.jp/index.php?title=MSP430F149_-_UART&amp;diff=13747&amp;oldid=prev"/>
		<updated>2025-12-15T13:56:06Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「== 概要 == UART (Universal Asynchronous Receiver / Transmitter) (汎用非同期送受信機) は、シリアル通信の一種であり、データを1ビットずつ送受信する。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; * 非同期通信 *: 送信側と受信側が別々のクロックを使用して、あらかじめ設定されたボーレート (通信速度) に基づいてデータを送受信する。 *: &amp;lt;br&amp;gt; * データフォーマット *: スタートビット、データビッ…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 概要 ==&lt;br /&gt;
UART (Universal Asynchronous Receiver / Transmitter) (汎用非同期送受信機) は、シリアル通信の一種であり、データを1ビットずつ送受信する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 非同期通信&lt;br /&gt;
*: 送信側と受信側が別々のクロックを使用して、あらかじめ設定されたボーレート (通信速度) に基づいてデータを送受信する。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* データフォーマット&lt;br /&gt;
*: スタートビット、データビット (通常8ビット)、パリティビット (オプション)、ストップビットで構成される。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* ボーレート&lt;br /&gt;
*: 通信速度のことであり、ビット/秒 (bps) で表現される。&lt;br /&gt;
*: 送信側と受信側で同じ設定が必要となる。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* フロー制御&lt;br /&gt;
*: データの送受信を制御するために、ハードウェアまたはソフトウェアの手法を使用する。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* 送受信バッファ&lt;br /&gt;
*: 送信するデータと受信したデータを一時的に保持するバッファである。&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
UARTは、マイコンとPC間、マイコン同士、または他の周辺機器との通信に広く利用されている。&amp;lt;br&amp;gt;&lt;br /&gt;
UARTを使用する場合は、ボーレート、データフォーマット、フロー制御等の設定を適切に行う必要がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UART ==&lt;br /&gt;
==== 非同期通信 ====&lt;br /&gt;
UARTは非同期通信方式を採用している。&amp;lt;br&amp;gt;&lt;br /&gt;
送信側と受信側が別々のクロックを使用して、データの送受信タイミングを同期させる必要がない。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
送信側と受信側は、あらかじめ設定されたボーレート (通信速度) に基づいてデータを送受信する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== シリアル通信 ====&lt;br /&gt;
UARTは、データを1ビットずつ順番に送信するシリアル通信方式である。&amp;lt;br&amp;gt;&lt;br /&gt;
送信側は、データを1ビットずつ送信線 (TX) に送出して、受信側は、受信線 (RX) から1ビットずつデータを受信する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== データフォーマット ====&lt;br /&gt;
UARTでは、一般的に以下に示すようなデータフォーマットが使用されている。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* スタートビット&lt;br /&gt;
*: データの開始を示すビット (通常は0)&lt;br /&gt;
* データビット&lt;br /&gt;
*: 実際のデータを表すビット (通常は8ビット)&lt;br /&gt;
* パリティビット&lt;br /&gt;
*: エラー検出用のビット (偶数パリティ または 奇数パリティ)&lt;br /&gt;
* ストップビット&lt;br /&gt;
*: データの終了を示すビット (通常は1 または 2ビット)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== ボーレート ====&lt;br /&gt;
ボーレートは、UARTの通信速度を表す。&amp;lt;br&amp;gt;&lt;br /&gt;
単位は、ビット/秒 (bps) である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
一般的なボーレートには、9600[bps]、19200[bps]、38400[bps]、115200[bps]等がある。&amp;lt;br&amp;gt;&lt;br /&gt;
送信側と受信側は、同じボーレートに設定する必要がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== フロー制御 ====&lt;br /&gt;
UARTでは、データの送受信を制御するためにフロー制御が使用される場合がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ハードウェアフロー制御&lt;br /&gt;
*: RTS (Request to Send) 信号 と CTS (Clear to Send) 信号を使用して、データの送受信を制御する。&lt;br /&gt;
* ソフトウェアフロー制御&lt;br /&gt;
*: XON / XOFF制御文字を使用して、データの送受信を制御する。&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 送受信バッファ ====&lt;br /&gt;
UARTには、送信バッファと受信バッファが用意されている。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
送信バッファは送信するデータを一時的に保持して、受信バッファは受信したデータを一時的に保持する。&amp;lt;br&amp;gt;&lt;br /&gt;
バッファを使用することにより、データの送受信を効率的に行うことができる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 耐ノイズ性 ==&lt;br /&gt;
UARTは、他の通信方式と比較して、ノイズの影響を比較的受けやすい通信方式である。&amp;lt;br&amp;gt;&lt;br /&gt;
以下に示す理由から、UARTはノイズに弱いといえる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 単線通信&lt;br /&gt;
*: UARTは、送信線 (TX) と 受信線 (RX) の2本の信号線を使用して通信を行う。&lt;br /&gt;
*: ノイズの影響を受けると、データの誤りが発生しやすくなる。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* 非同期通信&lt;br /&gt;
*: UARTは非同期通信方式を採用しているため、送信側と受信側のクロックが完全に同期していない。&lt;br /&gt;
*: ノイズの影響でデータのタイミングがずれると、通信エラーが発生する可能性がある。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* 信号レベル&lt;br /&gt;
*: UARTは、一般的にTTLレベル (0[V]～5[V]) や CMOSレベル (0[V]～3.3[V]) の信号レベルを使用する。&lt;br /&gt;
*: これらの信号レベルは、ノイズの影響を受けやすく、信号の品質が低下する可能性がある。&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
ただし、UARTのノイズ耐性を向上させるためのいくつかの手法がある。&amp;lt;br&amp;gt;&lt;br /&gt;
* シールドケーブルの使用&lt;br /&gt;
*: 通信線をシールドケーブルで保護することにより、外部ノイズの影響を軽減することができる。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* 適切な信号レベルの選択&lt;br /&gt;
*: 通信距離や環境に応じて、適切な信号レベル (RS-232、RS-422、RS-485等) を選択することにより、ノイズの影響を軽減できる。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* パリティビットの使用&lt;br /&gt;
*: パリティビットを使用することにより、通信エラーを検出して、データの整合性を確認できる。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* フィルタの使用&lt;br /&gt;
*: ハードウェアまたはソフトウェアのフィルタを使用して、高周波ノイズを除去することができる。&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
これらの手法を適切に組み合わせることにより、UARTのノイズ耐性を向上させることができる。&amp;lt;br&amp;gt;&lt;br /&gt;
ただし、極端に高いノイズ環境下では、より高いノイズ耐性を持つ通信方式 (I2C、SPI、CAN等) の使用を検討する必要がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MSP430F149のUSARTモジュール ==&lt;br /&gt;
MSP430F149には、2つのUSART (Universal Synchronous/Asynchronous Receiver/Transmitter) モジュールが搭載されている。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* USART0&lt;br /&gt;
*: 1つ目のUSARTモジュールである。&lt;br /&gt;
*: 送信ピン: P3.4 (UTXD0)&lt;br /&gt;
*: 受信ピン: P3.5 (URXD0)&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* USART1&lt;br /&gt;
*: 2つ目のUSARTモジュールである。&lt;br /&gt;
*: 送信ピン: P3.6 (UTXD1)&lt;br /&gt;
*: 受信ピン: P3.7 (URXD1)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
各USARTモジュールは、UART（非同期）モード または SPI（同期）モードで動作させることができる。&amp;lt;br&amp;gt;&lt;br /&gt;
UARTモードでは、シリアル通信を行うために必要な送信、受信、ボーレート設定、データフォーマット設定等の機能が提供される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 主要なレジスタ ====&lt;br /&gt;
USARTモジュールは、以下の主要なレジスタで制御される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 制御レジスタ&lt;br /&gt;
*: U0CTL (USART0制御レジスタ)&lt;br /&gt;
*: U1CTL (USART1制御レジスタ)&lt;br /&gt;
*: USARTの動作モード、データ長、パリティ、ストップビット等を設定する。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* 送信制御レジスタ&lt;br /&gt;
*: U0TCTL (USART0送信制御レジスタ)&lt;br /&gt;
*: U1TCTL (USART1送信制御レジスタ)&lt;br /&gt;
*: クロックソース、送信許可等を設定する。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* 受信制御レジスタ&lt;br /&gt;
*: U0RCTL (USART0受信制御レジスタ)&lt;br /&gt;
*: U1RCTL (USART1受信制御レジスタ)&lt;br /&gt;
*: 受信エラーフラグ等を確認する。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* ボーレート制御レジスタ&lt;br /&gt;
*: U0BR0、U0BR1 (USART0ボーレートレジスタ)&lt;br /&gt;
*: U1BR0、U1BR1 (USART1ボーレートレジスタ)&lt;br /&gt;
*: ボーレートを設定する。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* モジュレーション制御レジスタ&lt;br /&gt;
*: U0MCTL (USART0モジュレーション制御レジスタ)&lt;br /&gt;
*: U1MCTL (USART1モジュレーション制御レジスタ)&lt;br /&gt;
*: ボーレート生成の精度を向上させるためのモジュレーションパターンを設定する。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* 送受信バッファ&lt;br /&gt;
*: U0TXBUF (USART0送信バッファ)、U0RXBUF (USART0受信バッファ)&lt;br /&gt;
*: U1TXBUF (USART1送信バッファ)、U1RXBUF (USART1受信バッファ)&lt;br /&gt;
*: 送受信するデータを格納する。&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* 割り込みフラグレジスタ&lt;br /&gt;
*: IFG1 (USART0用: UTXIFG0、URXIFG0)&lt;br /&gt;
*: IFG2 (USART1用: UTXIFG1、URXIFG1)&lt;br /&gt;
*: 送信完了、受信完了の割り込みフラグを確認する。&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UARTの設定 ==&lt;br /&gt;
UART通信の設定を行う場合、&amp;lt;code&amp;gt;U0CTL&amp;lt;/code&amp;gt;レジスタ（USART0の場合）または &amp;lt;code&amp;gt;U1CTL&amp;lt;/code&amp;gt;レジスタ（USART1の場合）を適切に設定する必要がある。&amp;lt;br&amp;gt;&lt;br /&gt;
ただし、通信相手のデバイスも同じデータフォーマットを使用するように設定する必要があることに注意する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
以下の例では、USART0を使用した設定を示す。&amp;lt;br&amp;gt;&lt;br /&gt;
USART1を使用する場合は、U0CTLを&amp;lt;u&amp;gt;U1CTL&amp;lt;/u&amp;gt;に置き換える。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* データ長 8ビット, パリティなし, 1ストップビット (8N1)&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 U0CTL &amp;amp;= ~PENA;   // パリティなし&lt;br /&gt;
 U0CTL &amp;amp;= ~CHAR;   // 8ビットデータ&lt;br /&gt;
 U0CTL &amp;amp;= ~SPB;    // 1ストップビット&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* データ長 8ビット, パリティなし, 2ストップビット (8N2)&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 U0CTL &amp;amp;= ~PENA;   // パリティなし&lt;br /&gt;
 U0CTL &amp;amp;= ~CHAR;   // 8ビットデータ&lt;br /&gt;
 U0CTL |= SPB;     // 2ストップビット&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* データ長 7ビット, パリティ付き, 1ストップビット (7E1)&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 U0CTL |= PENA;    // パリティ付き&lt;br /&gt;
 U0CTL |= CHAR;    // 7ビットデータ&lt;br /&gt;
 U0CTL &amp;amp;= ~SPB;    // 1ストップビット&lt;br /&gt;
 U0CTL &amp;amp;= ~PEV;    // 奇数パリティ（PEV=0で奇数、PEV=1で偶数）&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
または、偶数パリティの場合は以下のように設定する。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 U0CTL |= PENA;    // パリティ付き&lt;br /&gt;
 U0CTL |= CHAR;    // 7ビットデータ&lt;br /&gt;
 U0CTL &amp;amp;= ~SPB;    // 1ストップビット&lt;br /&gt;
 U0CTL |= PEV;     // 偶数パリティ&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== サンプルコード ==&lt;br /&gt;
MSP430F149マイコンを使用して、UART通信を行うための手順を、以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
ターミナルソフト (PuTTY等) を使用して、設定したボーレート (以下の例では、9600[bps]) でシリアル通信を行う。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ハードウェアの接続:&lt;br /&gt;
*: MSP430F149のP3.4 (UTXD0) を送信端子に接続する。&lt;br /&gt;
*: MSP430F149のP3.5 (URXD0) を受信端子に接続する。&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 #include &amp;lt;msp430.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void main(void)&lt;br /&gt;
 {&lt;br /&gt;
    WDTCTL = WDTPW | WDTHOLD;   // ウォッチドッグタイマを停止&lt;br /&gt;
 &lt;br /&gt;
    // クロック設定 (例: DCOを使用、FLLで約2[MHz])&lt;br /&gt;
    // 32.768kHz x 61 = 1999848 Hz (約2[MHz])&lt;br /&gt;
    BCSCTL1 &amp;amp;= ~XTS;             // LFXT1を低周波モードに設定&lt;br /&gt;
    SCFQCTL = 60;                // FLL乗数を設定 (N = 61)&lt;br /&gt;
    SCFI0 = FLLD_1 | FN_2;       // DCO範囲選択&lt;br /&gt;
 &lt;br /&gt;
    // クロックが安定するまで待機&lt;br /&gt;
    do {&lt;br /&gt;
       IFG1 &amp;amp;= ~OFIFG;&lt;br /&gt;
       for (int i = 0xFFFF; i &amp;gt; 0; i--);&lt;br /&gt;
    } while (IFG1 &amp;amp; OFIFG);&lt;br /&gt;
 &lt;br /&gt;
    // USART0のピン設定&lt;br /&gt;
    P3SEL |= BIT4 + BIT5;        // P3.4とP3.5をUSART0用に設定&lt;br /&gt;
 &lt;br /&gt;
    // USART0をUARTモードに設定&lt;br /&gt;
    ME1 |= UTXE0 + URXE0;        // USART0の送信と受信を有効化&lt;br /&gt;
    U0CTL |= SWRST;              // USART0をリセット状態にする&lt;br /&gt;
 &lt;br /&gt;
    // UART設定&lt;br /&gt;
    U0CTL |= CHAR;               // 8ビットデータ (CHAR=1で8ビット)&lt;br /&gt;
    U0CTL &amp;amp;= ~PENA;              // パリティなし&lt;br /&gt;
    U0CTL &amp;amp;= ~SPB;               // 1ストップビット&lt;br /&gt;
 &lt;br /&gt;
    U0TCTL |= SSEL1;             // SMCLKをクロックソースとして使用&lt;br /&gt;
 &lt;br /&gt;
    // ボーレート設定: 9600[bps] (2[MHz] SMCLK時)&lt;br /&gt;
    // ボーレート = BRCLK / N = 2000000 / 208 = 9615 bps&lt;br /&gt;
    U0BR0 = 0xD0;                // 下位バイト (208 = 0x00D0)&lt;br /&gt;
    U0BR1 = 0x00;                // 上位バイト&lt;br /&gt;
    U0MCTL = 0x00;               // モジュレーション設定&lt;br /&gt;
 &lt;br /&gt;
    U0CTL &amp;amp;= ~SWRST;             // USARTをリセットから解除&lt;br /&gt;
    IE1 |= URXIE0;               // 受信割り込みを有効化 (オプション)&lt;br /&gt;
 &lt;br /&gt;
    // 送信例&lt;br /&gt;
    while (!(IFG1 &amp;amp; UTXIFG0));   // 送信バッファが空になるまで待機&lt;br /&gt;
    U0TXBUF = &amp;#039;H&amp;#039;;               // 文字 &amp;#039;H&amp;#039; を送信&lt;br /&gt;
 &lt;br /&gt;
    // 受信例&lt;br /&gt;
    while (!(IFG1 &amp;amp; URXIFG0));   // 受信バッファにデータが入るまで待機&lt;br /&gt;
    char receivedChar = U0RXBUF; // 受信データを読み込み&lt;br /&gt;
 &lt;br /&gt;
    // メインループ&lt;br /&gt;
    while(1) {&lt;br /&gt;
       // 通信処理を継続&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
上記のサンプルコードでは、USART0を使用してUART通信を行っている。&amp;lt;br&amp;gt;&lt;br /&gt;
主な設定手順は以下の通りである。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
# ウォッチドッグタイマを停止する。&lt;br /&gt;
# クロックを設定する。(この例では、FLLを使用してDCOを約2[MHz]に設定)&lt;br /&gt;
# P3SELレジスタを設定して、P3.4とP3.5をUSART0の送受信ピンとして使用できるようにする。&lt;br /&gt;
# ME1レジスタでUSART0の送信と受信を有効化する。&lt;br /&gt;
# U0CTLレジスタでSWRSTビットを立てて、USART0をリセット状態にする。&lt;br /&gt;
# U0CTLレジスタでデータ長、パリティ、ストップビットを設定する。&lt;br /&gt;
# U0TCTLレジスタでクロックソース (SMCLK) を選択する。&lt;br /&gt;
# U0BR0、U0BR1レジスタでボーレートを設定する。&lt;br /&gt;
# U0MCTLレジスタでモジュレーションを設定する。&lt;br /&gt;
# SWRSTビットをクリアして、USARTをリセットから解除する。&lt;br /&gt;
# 必要に応じて、受信割り込みを有効化する。&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
これにより、USART0が9600[bps]のUART通信を行えるように設定される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ボーレート計算 ==&lt;br /&gt;
MSP430F149のUSARTモジュールでは、ボーレートは以下に示す式で計算される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;math&amp;gt;\mbox{ ボ ー レ ー ト } = \dfrac{\mbox{BRCLK}}{\mbox{N}}&amp;lt;/math&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 BRCLK : USARTのクロックソース (通常はSMCLK) の周波数&lt;br /&gt;
 N : 分周比&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nの値は、U0BR0とU0BR1レジスタ（16ビット値）で設定される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
例えば、SMCLK = 2[MHz]で9600[bps]のボーレートを得るには、以下のように計算する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 # 計算例:&lt;br /&gt;
 &amp;lt;math&amp;gt;\mbox{N} = \dfrac{\mbox{BRCLK}}{\mbox{ ボ ー レ ー ト }} = \dfrac{2000000}{9600} \cong 208.33&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
整数値に丸めて、N = 208とする。&amp;lt;br&amp;gt;&lt;br /&gt;
この時、実際のボーレートは以下のようになる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;math&amp;gt;\mbox{ 実 際 の ボ ー レ ー ト } = \dfrac{2000000}{208} = 9615 \, \mbox{[bps]}&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
これは、設定値 9600[bps]に対して約0.16%の誤差となる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;一般的に、ボーレート誤差は2[%]以内であれば正常に通信できる。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
U0BR0とU0BR1の設定方法は以下の通りである。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
N = 208 = 0x00D0&amp;lt;br&amp;gt;&lt;br /&gt;
U0BR0 = 0xD0 (下位8ビット)&amp;lt;br&amp;gt;&lt;br /&gt;
U0BR1 = 0x00 (上位8ビット)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
一般的なボーレートとクロック周波数の組み合わせを下表に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! SMCLK周波数 !! ボーレート !! N !! U0BR1 !! U0BR0 !! 実際のボーレート !! 誤差&lt;br /&gt;
|-&lt;br /&gt;
| 1[MHz] || 9600bps || 104 || 0x00 || 0x68 || 9615bps || 0.16%&lt;br /&gt;
|-&lt;br /&gt;
| 1[MHz] || 19200bps || 52 || 0x00 || 0x34 || 19231bps || 0.16%&lt;br /&gt;
|-&lt;br /&gt;
| 2[MHz] || 9600bps || 208 || 0x00 || 0xD0 || 9615bps || 0.16%&lt;br /&gt;
|-&lt;br /&gt;
| 2[MHz] || 19200bps || 104 || 0x00 || 0x68 || 19231bps || 0.16%&lt;br /&gt;
|-&lt;br /&gt;
| 2[MHz] || 115200bps || 17 || 0x00 || 0x11 || 117647bps || 2.13%&lt;br /&gt;
|-&lt;br /&gt;
| 8[MHz] || 9600bps || 833 || 0x03 || 0x41 || 9604bps || 0.04%&lt;br /&gt;
|-&lt;br /&gt;
| 8[MHz] || 19200bps || 417 || 0x01 || 0xA1 || 19185bps || -0.08%&lt;br /&gt;
|-&lt;br /&gt;
| 8[MHz] || 115200bps || 69 || 0x00 || 0x45 || 115942bps || 0.64%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USART1の使用 ==&lt;br /&gt;
MSP430F149には、USART0に加えてUSART1も搭載されている。&amp;lt;br&amp;gt;&lt;br /&gt;
USART1を使用する場合は、USART0と同様の手順で設定を行うが、レジスタ名とピン番号が異なる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* ピン配置&lt;br /&gt;
*: P3.6 (UTXD1) : 送信ピン&lt;br /&gt;
*: P3.7 (URXD1) : 受信ピン&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* レジスタ&lt;br /&gt;
*: U1CTL : USART1制御レジスタ&lt;br /&gt;
*: U1TCTL : USART1送信制御レジスタ&lt;br /&gt;
*: U1RCTL : USART1受信制御レジスタ&lt;br /&gt;
*: U1BR0、U1BR1 : USART1ボーレート制御レジスタ&lt;br /&gt;
*: U1MCTL : USART1モジュレーション制御レジスタ&lt;br /&gt;
*: U1TXBUF : USART1送信バッファ&lt;br /&gt;
*: U1RXBUF : USART1受信バッファ&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* 割り込みフラグ&lt;br /&gt;
*: IFG2レジスタのUTXIFG1、URXIFG1ビット&lt;br /&gt;
*: &amp;lt;br&amp;gt;&lt;br /&gt;
* モジュール有効化&lt;br /&gt;
*: ME2レジスタのUTXE1、URXE1ビット&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
以下の例では、USART1を使用している。&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 #include &amp;lt;msp430.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void main(void)&lt;br /&gt;
 {&lt;br /&gt;
    WDTCTL = WDTPW | WDTHOLD;   // ウォッチドッグタイマを停止&lt;br /&gt;
 &lt;br /&gt;
    // クロック設定（USART0の例と同じ）&lt;br /&gt;
    BCSCTL1 &amp;amp;= ~XTS;&lt;br /&gt;
    SCFQCTL = 60;&lt;br /&gt;
    SCFI0 = FLLD_1 | FN_2;&lt;br /&gt;
 &lt;br /&gt;
    do {&lt;br /&gt;
       IFG1 &amp;amp;= ~OFIFG;&lt;br /&gt;
       for (int i = 0xFFFF; i &amp;gt; 0; i--);&lt;br /&gt;
    } while (IFG1 &amp;amp; OFIFG);&lt;br /&gt;
 &lt;br /&gt;
    // USART1のピン設定&lt;br /&gt;
    P3SEL |= BIT6 + BIT7;        // P3.6とP3.7をUSART1用に設定&lt;br /&gt;
 &lt;br /&gt;
    // USART1をUARTモードに設定&lt;br /&gt;
    ME2 |= UTXE1 + URXE1;        // USART1の送信と受信を有効化&lt;br /&gt;
    U1CTL |= SWRST;              // USART1をリセット状態にする&lt;br /&gt;
 &lt;br /&gt;
    // UART設定&lt;br /&gt;
    U1CTL |= CHAR;               // 8ビットデータ&lt;br /&gt;
    U1CTL &amp;amp;= ~PENA;              // パリティなし&lt;br /&gt;
    U1CTL &amp;amp;= ~SPB;               // 1ストップビット&lt;br /&gt;
 &lt;br /&gt;
    U1TCTL |= SSEL1;             // SMCLKをクロックソースとして使用&lt;br /&gt;
 &lt;br /&gt;
    // ボーレート設定: 9600[bps] (2[MHz] SMCLK時)&lt;br /&gt;
    U1BR0 = 0xD0;&lt;br /&gt;
    U1BR1 = 0x00;&lt;br /&gt;
    U1MCTL = 0x00;&lt;br /&gt;
 &lt;br /&gt;
    U1CTL &amp;amp;= ~SWRST;             // USARTをリセットから解除&lt;br /&gt;
    IE2 |= URXIE1;               // 受信割り込みを有効化 (オプション)&lt;br /&gt;
 &lt;br /&gt;
    // 送信例&lt;br /&gt;
    while (!(IFG2 &amp;amp; UTXIFG1));   // 送信バッファが空になるまで待機&lt;br /&gt;
    U1TXBUF = &amp;#039;A&amp;#039;;               // 文字 &amp;#039;A&amp;#039; を送信&lt;br /&gt;
 &lt;br /&gt;
    // メインループ&lt;br /&gt;
    while(1) {&lt;br /&gt;
       // 通信処理を継続&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
USART0とUSART1を同時に使用することも可能であり、これにより2つの独立したシリアル通信チャネルを持つことができる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PCとのUART通信 ==&lt;br /&gt;
LinuxでマイコンとUART通信を行う場合は、以下の手順に従う。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
# シリアルポートの接続&lt;br /&gt;
#: マイコンのUART送信ピン (TX) をPCのシリアル受信ピン (RX) に接続する。&lt;br /&gt;
#: マイコンのUART受信ピン (RX) をPCのシリアル送信ピン (TX) に接続する。&lt;br /&gt;
#: マイコンとPCのグラウンド (GND) を接続する。&lt;br /&gt;
#: MSP430F149でUSART0を使用する場合は、P3.4 (UTXD0) と P3.5 (URXD0) を使用する。&lt;br /&gt;
#: &amp;lt;br&amp;gt;&lt;br /&gt;
# シリアルポートの設定&lt;br /&gt;
#: ターミナルを開いて、シリアルポートを設定する。&amp;lt;br&amp;gt;&lt;br /&gt;
#: &amp;lt;code&amp;gt;stty -F &amp;lt;デバイスファイルのパス&amp;gt; &amp;lt;ボーレート&amp;gt; &amp;lt;データ長&amp;gt; &amp;lt;ストップビット長&amp;gt; &amp;lt;パリティビットの有無&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#: &amp;lt;br&amp;gt;&lt;br /&gt;
#: 例: &amp;lt;code&amp;gt;stty -F /dev/ttyUSB0 9600 cs8 -cstopb -parenb&amp;lt;/code&amp;gt;&lt;br /&gt;
#: &amp;lt;br&amp;gt;&lt;br /&gt;
#: /dev/ttyUSB0は、使用するシリアルポートのデバイスファイル名を入力する。(環境に応じて適切なデバイスファイル名に変更すること)&lt;br /&gt;
#: 9600は、ボーレートを表す。(マイコン側の設定と一致させる)&lt;br /&gt;
#: cs8は、データ長を8ビットに設定する。&lt;br /&gt;
#: -cstopbは、ストップビットを1ビットに設定する。&lt;br /&gt;
#: -parenbは、パリティビットを無効にする。&lt;br /&gt;
#: &amp;lt;br&amp;gt;&lt;br /&gt;
# 通信の確立&lt;br /&gt;
#: &amp;lt;code&amp;gt;cat&amp;lt;/code&amp;gt;コマンドを使用して、シリアルポートを読み書きする。&lt;br /&gt;
#: シリアルポートからの入力を受信して、ターミナルに表示する。&lt;br /&gt;
#: &amp;lt;code&amp;gt;cat &amp;lt;デバイスファイルのパス&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#: 例: &amp;lt;code&amp;gt;cat /dev/ttyUSB0&amp;lt;/code&amp;gt;&lt;br /&gt;
#: &amp;lt;br&amp;gt;&lt;br /&gt;
#: 別のターミナルを開いて、&amp;lt;code&amp;gt;echo&amp;lt;/code&amp;gt;コマンドおよび&amp;lt;code&amp;gt;cat&amp;lt;/code&amp;gt;を使用して、シリアルポートに書き込む。&lt;br /&gt;
#: これにより、シリアルポートにテキストが送信される。&lt;br /&gt;
#: &amp;lt;code&amp;gt;echo &amp;quot;Hello, MSP430!&amp;quot; &amp;gt; &amp;lt;デバイスファイルのパス&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#: &amp;lt;br&amp;gt;&lt;br /&gt;
# 通信の確認&lt;br /&gt;
#: マイコン側で受信処理が正しく実装されている場合、送信したテキストがマイコンで受信される。&lt;br /&gt;
#: マイコン側で送信処理が正しく実装されている場合、マイコンから送信されたデータがターミナルに表示される。&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;※注意&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;シリアルポートのデバイスファイル名 (/dev/ttyUSB0等) は、環境によって異なる場合がある。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;code&amp;gt;ls /dev/tty*&amp;lt;/code&amp;gt;コマンドを実行して、利用可能なシリアルポートを確認すること。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;ボーレートやデータフォーマット等の設定は、マイコン側の設定と一致している必要がある。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;一部のLinuxディストリビューションでは、シリアルポートへのアクセス権限が必要な場合があるため、適切な権限を設定すること。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki&lt;br /&gt;
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板&lt;br /&gt;
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux&lt;br /&gt;
|image=/resources/assets/MochiuLogo_Single_Blue.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[カテゴリ:MSP430]]&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
</feed>