<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Lopple &#187; デジタル回路</title>
	<atom:link href="http://www.lopple.jp/?cat=53&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>https://www.lopple.jp</link>
	<description>組込ソフト・機器開発／スマートフォンアプリ開発／Webシステム開発・保守</description>
	<lastBuildDate>Fri, 12 Jul 2019 07:40:18 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>SPI通信におけるモードの理解</title>
		<link>https://www.lopple.jp/?p=581</link>
		<comments>https://www.lopple.jp/?p=581#comments</comments>
		<pubDate>Mon, 15 Oct 2012 22:01:01 +0000</pubDate>
		<dc:creator>takezawa</dc:creator>
				<category><![CDATA[デジタル回路]]></category>

		<guid isPermaLink="false">http://www.lopple.jp/?p=581</guid>
		<description><![CDATA[SPI通信について理解が浅かったのでわかりやすくまとめてみた。 CPOL クロックが正論理なのか負論理なのかをクロックの極性という。(Clock Polarity=CPOL) SPI通信においては以下のように定義する。  &#8230; <a href="https://www.lopple.jp/?p=581">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>SPI通信について理解が浅かったのでわかりやすくまとめてみた。</p>
<h3><strong>CPOL</strong></h3>
<p>クロックが正論理なのか負論理なのかをクロックの極性という。(Clock Polarity=CPOL)</p>
<p>SPI通信においては以下のように定義する。</p>
<ul>
<li>CPOL=0の場合、クロックは<a href="http://e-words.jp/w/E6ADA3E8AB96E79086.html" target="_blank">正論理</a>とする。</li>
<li>CPOL=1の場合、クロックは負論理とする。</li>
<li>何も通信しないときは当然0にしておく。(CPOL=0のときはLow, CPOL=1のときはHi)</li>
</ul>
<h3><strong>CPHA</strong></h3>
<p>クロックは１クロックで0から1、1から0に切り替わるがその切り替わりのタイミングのことをクロックの位相という。（Clock Phase=CPHA）</p>
<p>SPI通信においては以下のように定義する。</p>
<ul>
<li>CPHA=0の場合、0から1に切り替わるタイミングでデータを取り込むこととする。</li>
<li>CPHA=1の場合、1から0に切り替わるタイミングでデータを取り込むこととする。</li>
</ul>
<h2><strong><span style="font-size: medium; line-height: 24px;">モードについて</span></strong></h2>
<p>SPI通信ではCPOLとCPHAの値によって4つのモードを定義する。</p>
<table border="0">
<thead>
<tr>
<th>CPOL</th>
<th>CPHA</th>
<th>モード</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>2</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>3</td>
</tr>
</tbody>
</table>
<p>以上</p>
<p>以下の図がわかりやすいだろう。</p>
<p>cf.<a href="https://www.diolan.com/dln_doc/spi-transfer-modes.html">https://www.diolan.com/dln_doc/spi-transfer-modes.html</a></p>
<pre>(追記：20160113)
モードを暗記する場合 、以下のように考えると覚えやすい。
<strong>デフォルトをモード0とする。</strong>
<strong>クロックが1→ 0になるときに取り込みを行う場合、モードに1を足す。</strong>
<strong>クロックが負論理ならモードに2を足す。</strong> 
まとめると単にこれだけのことである。</pre>
<p>＝＝</p>
<p>余談</p>
<p>ネット上の解説では、CPHAのタイミングについて立ち上がり立下りなどという表現が使われたりしているがHi Lowの切り替わりと勘違いしそうなのでやめた方がいい気がする。</p>
<p>またサンプルされない位相でデータがシフトされるという説明がよくあるが一般的に言い切ってしまうとmode=0のときの1ビット目はどうするんだという話になったり、mode=0の最後では何をシフトしてるんですか？という話になったりするのでやめた方がいい気がする。</p>
<p>そもそもシフトタイミングについてはサンプルのタイミングさえ厳密に決まれば自由のはずなので仕様的には未定義なのではないだろうか？</p>
]]></content:encoded>
			<wfw:commentRss>https://www.lopple.jp/?feed=rss2&#038;p=581</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
