EDITORIAL:
個人的な要約があるとして、この記事では、将来の問い合わせを容易にするため、バックアップを要約することを目指して、間違っている場合、私を修正してください。加えて、インターネット、書籍、各種マニュアルの内容のほとんどは、すぐに、侵害をお知らせください投稿を削除する必要があります謝罪します。
一、UART / USRAT
基本概念シリアルUART / USRAT通信
1.1基本的な方法
の実質的に平行なモード通信及びシリアル通信ポイント
1.1.1パラレル通信
パラレル通信は、それぞれが送信またはデータ内の複数のデータ線を受ける同時に意味します。
各データ・ビットの同時伝送、高速、高効率によって特徴付けられる、データ線の数、高い伝送コストを必要とするデータ・ビットが存在します。集積回路チップの内部に、各部材とパラレル通信送信から並列的に同じハードウェアボードを使用して、等との間のデータ転送は、一般的に30メートル未満です。
1.1.2シリアル通信
シリアル通信は、1つまたは受信されたデータの各次のビットによって同じデータ線ビットの場合に意味します。
データビット列、伝送線路、低コスト、低速を完了するための最小時間によって特徴付けられます。コンピュータと遠隔端末、遠隔端末同一の間のデータ伝送は、多くの場合、シリアルです。
1.1.3比較シリアル通信とパラレル通信
、シリアル通信の顕著な特徴:長距離伝送、数メートルから数キロメートルに、容易にシリアル通信のクロック周波数は、信号間の通信、抗ジャミングを改善するため相互干渉を完全に無視することができるが、シリアル通信は、パラレル通信よりもはるかに遅いです。シリアル通信が広く、データ取得および制御システムで使用されてきました。
1.2動作モード
基づく単線シリアル通信が送信され、データは、典型的には、データフローの方向に応じて3つの伝送モードに分け、2つのサイト間で送信されます。
1.2.1片面モード(シンプレックス)
シンプレックスモードでのデータは、他の側は、受信機に固定され、通信は、送信側の両方の一つである、単方向です。データケーブルを使用して、一方向にのみ情報を送信します。
ラジオなど、タワー再送データを与えるものではありません、それへの送信データ列を受け取ることができます。
1.2.2半二重モード(半二重)
半二重通信モードパーティの送信機と受信機の両方を指し、双方が受信することができるが、同時に送受信することができないとの両方を送信することができます。
例えばケースの両方向における一般半二重データ伝送、インターホン。
1.2.3全二重モード(全二重)、
二重データ通信データを送信および2つの異なる部位で同時に受信することができる二つの伝送線路から伝送され、通信は、送信と同時に動作を受け取ることができ、両方。
全二重モードでは、送信機と受信機の各端部は、二つの伝送線路は、携帯電話などの対話型アプリケーション、情報伝送の高効率で使用することができるあります。
1.3同期し
た通信のデータ同期方法によれば、通信の方法に従って区別されるクロック信号を使用するかどうか、同期および非同期に分けることができます。
- 同期通信では、送受信機は、駆動クロック信号の両方で同期データを、調整を信号を送信する上記信号線を使用します。例えば、通信は、典型的には、両方とも、クロック信号の立ち上がりまたは立ち下がりエッジでデータ線の均一なサンプリングを所定します。
- 送信データフレームフォーマットデータは、非同期通信データ同期クロック信号に使用されていない、いくつかの信号は、直接データ信号に同期ビットが散在している、またはパッケージに関連するデータ。通信はまた、より良い同期化するために、など、良いデータの規程伝送速度の両面が必要です。
同期通信では、送信されたデータ信号の内容の大部分は有効なデータであり、非同期通信は、様々なデータフレームが識別子を含むことになるであろう、同期通信効率が高いが、クロック同期通信の両方が、小さな誤差を許容します、少しクロックエラーは、データ障害を引き起こす可能性があり、非同期通信を可能に両方のクロックの誤差が大きくなっています。
二、I2C
2. I2C基本的な概念
I2C总线是 PHLIPS公司在 20世纪 80年代推出的一种串行总线。具有引脚少,硬件实现简单,可扩展性强的优点。I2C总线的另一优点是支持多主控,总线上任何能够进行发送/接收数据的设备都可以占领总线。当然,任意时间点上只能存在一个主控。
I2C即是一种总线,也是一种通讯协议。在嵌入式开发中,通讯协议可分为两层:物理层和协议层。物理层是数据在物理媒介传输的保障;协议层主要是规定通讯逻辑,同一收发双方的数据打包、解包标准。打个比方,物理层相当于现实中的公路,而协议层则是交通规则,汽车可以在路上行驶,但是需要交通规则对行驶规则进行约束,不然将出现危险,也就是数据传输紊乱、丢包。
特性:
- 2条双向串行线,一条数据线 SDA,一条时钟线 SCL。
SDA传输数据是大端传输,每次传输 8bit,即一字节。 - 支持多主控(multimastering),任何时间点只能有一个主控。
- 总线上每个设备都有自己的一个 addr,共 7个 bit,广播地址全0.
- 系统中可能有多个同种芯片,为此 addr分为固定部分和可编程部份,细节视芯片而定,看 datasheet
2.1. 物理层
I2C通讯系统接线图如下:
(1) 在I2C通讯总线上,可连接多个 I2C通讯设备,支持多个通讯主机和多个通讯从机
(2) I2C通讯只需要两条双向总线:串行数据线 (SDA),串行时钟线 (SCL)。数据线用于传输数据,时钟线用于同步数据收发
(3) 每个连接到总线的设备都有一个独立的地址,主机正是利用该地址对设备进行访问
(4) SDA和 SCL总线都需要接上上拉电阻,当总线空闲时,两根线均为高电平。连接到总线上的任意器件输出低电平都会将总线信号拉低。即各器件的 SDA和 SCL都是线与的关系
(5) 多个主机同时使用总线时,需要用仲裁方式决定哪个设备占用总线,不然数据将会产生冲突
(6) 串行的8位双向数据传输位速率在标准模式下可达 100kbps,快速模式下可达 400kbps,高速模式下可达 3.4Mbps(目前大多数 I2C设备还不支持高速)
2.2. 协议层
协议层规约了通讯的起始、停止信号,数据有效性、响应、冲裁同步、地址广播等。
2.3. I2C位传输
数据传输:SCL为高电平时,SDA线若保持稳定,那么 SDA上是在传输数据bit;
数据改变:SCL为低电平时,SDA线才能改变传输的bit;
若 SDA发生跳变,则用来表示一个会话的开始或结束(后面讲)
2.3.1 I2C开始和结束信号
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
2.3.2 I2C应答信号
Master每发送完 8bit数据后等待 Slave的ACK。
即在第9个clock,若从 IC发 ACK,SDA会被拉低。
若没有 ACK,SDA会被置高,这会引起 Master发生 RESTART或 STOP流程,如下所示:
2.4 I2C写流程
写寄存器的标准流程为:
- Master发起 START
- Master发送 I2C addr(7bit)和w操作0(1bit),等待 ACK
- Slave发送 ACK
- Master发送 reg addr(8bit),等待ACK
- Slave发送 ACK
- Master发送 data(8bit),即要写入寄存器中的数据,等待 ACK
- Slave发送 ACK
- 第 6步和第 7步可以重复多次,即顺序写多个寄存器
- Master发起 STOP
写一个寄存器
写多个寄存器
2.5 I2C读流程
读寄存器的标准流程为:
- Master发送 I2Caddr(7bit)和 W操作1(1bit),等待 ACK
- Slave发送 ACK
- Master发送 reg addr(8bit),等待ACK
- Slave发送 ACK
- Master发起 START
- Master发送 I2C addr(7bit)和 R操作1(1bit),等待 ACK
- Slave发送 ACK
- Slave发送 data(8bit),即寄存器里的值
- Master发送 ACK
- 第 8步和第 9步可以重复多次,即顺序读多个寄存器
读一个寄存器
读多个寄存器
三、SPI
3. SPI基本概念
SPI(serial peripheral interface,串行外围设备接口)总线技术是 Motorola公司推出的一种同步串行接口。它用于CPU与各种外围器件进行全双工、同步串行通讯。它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是:串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线 CS。
当 SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。发送一个字节后,从另一个外围器件接收的字节数据进入移位寄存器中。即完成一个字节数据传输的实质是两个器件寄存器内容的交换。主 SPI的时钟信号(SCK)使传输同步。其典型系统框图如下图所示。
3.1 通信原理
标准的 SPI 是 4 根线,分别是 SSEL( 片选,也写作 SCS)、 SCLK( 时钟,也写作 SCK)、 MOSI( 主机输出从机输入 Master Output/Slave Input) 和 MISO( 主机输入从机输出 Master Input/Slave Output)。
- MOSI(SDO):主器件数据输出,从器件数据输入。
- MISO(SDI):主器件数据输入,从器件数据输出。
- SCLK :时钟信号,由主器件产生。
- CS:从器件使能信号,由主器件控制。(CS控制芯片是否被选中,只有片选信号为实现约定的使能信号时(高电位或地电位),对此芯片的操作才有效,这也就允许同一总线上连接多个SPI设备。)
SPI串行传输,数据一位一位从 MSB或 LSB开始传输,产生相应的脉冲沿时,MOSI,MISO才进行数据传输。
3.2 SPI总线工作方式
SPI有四种工作模式,取决于两个参数:(这两个参数其实就是控制了CLK这一根线,SPI通信不像UART或IIC那样有专门的通信周期,有专门的通信起始信号和结束信号。所以SPI协议能够通过控制时钟信号线在没有数据交流的时候保持的状态,要么是高电平,要么是低电平)
1、 CPOL,clock polarity,译作时钟极性。
2、 CPHA,clock phase,译作时钟相位。
- 詳細な説明CPOL:
CPOLはクロック信号を定義するために使用されるハイレベル0の代わりに低く、アイドル状態でハイまたはローです。 - 詳細な説明CPHA:
まず、同期インタフェースでは、インタフェースは、データサンプリングインターフェースを同期させるために使用されるクロックが存在しなければなりません。CPHAは、いくつかのエッジ、データサンプリング時間でサンプリングされたデータを定義するために使用されます。図1は、サンプリングされた第二のエッジを表す第一のサンプルエッジに対して0です。
以上の二つのパラメータ、4つの組み合わせの合計:
CPOL = 0、CPHA = 0(1):アイドル状態が、SCLKが低い場合、このとき、データはSCLKにより、すなわち、最初のエッジでサンプリングされ低〜高ホッピング、データを立ち上がりエッジでサンプリングされ、データは立ち下がりエッジで送信されます。
(2)CPOL = 0、CPHA = 1:この時点でアイドル状態は、SCLKがローレベルで、データは、SCLKによって、すなわち、第二のエッジで送信されます安いものから高いものへホッピング、データは立ち下がりエッジでサンプリングされ、データは立ち上がりエッジで送信されます。
(3)CPOL = 1、CPHA = 0:アイドル状態が、SCLKが高いこの時点で、データは、SCLKによって、すなわち、第一縁部に回収されます安いものから高いものへホッピング、データの取得は、立ち下がりエッジが、データは立ち上がりエッジで送信されます。
(4)CPOL = 1、CPHA = 1:この時点でアイドル状態は、SCLKは、データはSCLKによって、すなわち、第二のエッジで送信され、高いです低〜高ホッピング、データ取得、データは立ち下がりエッジで送信され、立ち上がりエッジです。
統一標準SPIが存在しないので、タイミングの説明は、いくつかの違いがあるため、特定のデータシートに勝ちます。