国产肉体XXXX裸体137大胆,国产成人久久精品流白浆,国产乱子伦视频在线观看,无码中文字幕免费一区二区三区 国产成人手机在线-午夜国产精品无套-swag国产精品-国产毛片久久国产

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 單片機 arm 常用的接口總結

單片機 arm 常用的接口總結

作者: 時間:2016-11-26 來源:網(wǎng)絡 收藏
常用的接口有spi,I2c,uart等,他們都有自己的協(xié)議規(guī)定,下面談談它們之間的聯(lián)系與區(qū)別:

1 I2C總線

本文引用地址:http://m.ptau.cn/article/201611/321770.htm

涉及到I2C的編程主要涉及到兩種情況:有專用控制器的arm芯片,無控制器的單片機芯片。有控制器的arm芯片,主要就是依據(jù)數(shù)據(jù)手冊,通過設置相應的寄存器(控制寄存器,狀態(tài)寄存器等)來實現(xiàn)相應的操作;然而對于沒有控制器的單片機芯片,只有通過相應的引腳根據(jù)I2c協(xié)議來予以模擬實現(xiàn)。

首先來談談I2c協(xié)議。涉及到的信號主要分為三類:開始信號,停止信號,發(fā)送數(shù)據(jù)。既然是協(xié)議,就是雙方事先約定好的規(guī)定,通信雙方按照這個標準來進行數(shù)據(jù)的傳輸就可以了。保證數(shù)據(jù)傳輸?shù)囊恢滦缘脑挘€有在某些時候發(fā)送一些附帶的檢查信息,例如ack信號,非ack信號;

開始信號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)。
結束信號:SCL為高電平時,SDA由低電平向高電平跳變,結束傳送數(shù)據(jù)。
應答信號:接收數(shù)據(jù)的IC在接收到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。CPU向受控單元發(fā)出一個信號后,等待受控單元發(fā)出一個應答信號,CPU接收到應答信號后,根據(jù)實際情況作出是否繼續(xù)傳遞信號的判斷。若未收到應答信號,由判斷為受控單元出現(xiàn)故障。

基于單片機的模擬I2C的信號,應該嚴格按照以上的時序進行研究實現(xiàn)。

接下來看看帶有I2C的控制器的arms3c2410,s3c2440芯片的i2c的控制。主要包括四個相關的寄存器的設置:通過它們之間的相互配合,實現(xiàn)i2c的數(shù)據(jù)傳輸。

IICON:控制寄存器。主要是用于控制是否發(fā)出ACK信號,設置發(fā)送器的時鐘,開啟I2c中斷,并標示中斷是否發(fā)生。

  IISTAT: 狀態(tài)寄存器。選擇I2C的工作模式,發(fā)出S信號,P信號,使能接受/發(fā)送功能,并標示各種狀態(tài),比如總線仲裁是否成功,作為從機時是否被尋址,是否接收到0地址,是否接收到ACK信號。

IICADD:多主機I2C地址寄存器;

IICDS:發(fā)送、接受數(shù)據(jù)移位寄存器;

接下來按照數(shù)據(jù)手冊,根據(jù)其主機發(fā)送器的工作流程來編寫相應的代碼。

三個函數(shù)就可以實現(xiàn)簡單的I2C協(xié)議: 讀取,寫入,中斷;

編程思路如下:

寫函數(shù),讀函數(shù),僅僅是啟動I2C傳輸,然后等待,直到數(shù)據(jù)在中斷服務程序中傳輸完畢后再返回。

2 SPI總線協(xié)議的認識(SPI中的極性CPOL和相位CPHA)

【背景】

最近在看關于Silicon Labs的C8051F347的某個驅動中,關于SPI部分初始化的代碼,看到其對于SPI的設置為CPOL=1,CPHA=0,對于CPOL及CPHA的含義不了解,想要搞懂,這兩個參數(shù)到底是什么意思,以及為何要這么設置。所以才去找了SPI的極性和相位的相關資料,整理如下。

【SPI基礎知識簡介】

設備與設備之間通過某種硬件接口通訊,目前存在很多種接口,SPI接口是其中的一種。

SPI中分Master主設備和Slave從設備,數(shù)據(jù)發(fā)送都是由Master控制。

一個master可以接一個或多個slave。

常見用法是一個Master接一個slave,只需要4根線:

SCLK:Serial Clock,(串行)時鐘

MISO:Master In Slave Out,主設備輸入,從設備輸出

MOSI:Master Out Slave In,主設備輸出,從設備輸入

SS: Slave Select,選中從設備,片選

SPI由于接口相對簡單(只需要4根線),用途算是比較廣泛,主要應用在 EEPROM,F(xiàn)LASH,實時時鐘,AD轉換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間。即一個SPI的Master通過SPI與一個從設備,即上述的那些Flash,ADC等,進行通訊。
而主從設備之間通過SPI進行通訊,首先要保證兩者之間時鐘SCLK要一致,互相要商量好了,要匹配,否則,就沒法正常通訊了,即保證時序上的一致才可正常訊。而這里的SPI中的時鐘和相位,指的就是SCLk時鐘的特性,即保證主從設備兩者的時鐘的特性一致了,以保證兩者可以正常實現(xiàn)SPI通訊。

【SPI相關的縮寫或說法】

先簡單說一下,關于SPI中一些常見的說法:

SPI的極性Polarity和相位Phase,最常見的寫法是CPOL和CPHA,不過也有一些其他寫法,簡單總結如下:

(1) CKPOL (Clock Polarity) = CPOL = POL = Polarity =(時鐘)極性;

(2) CKPHA (Clock Phase) = CPHA = PHA = Phase =(時鐘)相位;

(3) SCK=SCLK=SPI的時鐘;

(4) Edge=邊沿,即時鐘電平變化的時刻,即上升沿(rising edge)或者下降沿(falling edge);

對于一個時鐘周期內,有兩個edge,分別稱為:

Leading edge=前一個邊沿=第一個邊沿,對于開始電壓是1,那么就是1變成0的時候,對于開始電壓是0,那么就是0變成1的時候;

Trailing edge=后一個邊沿=第二個邊沿,對于開始電壓是1,那么就是0變成1的時候(即在第一次1變成0之后,才可能有后面的0變成1),對于開始電壓是0,那么就是1變成0的時候;

本文采用如下用法:

極性=CPOL

相位=CPHA

SCLK=時鐘

第一個邊沿和第二個邊沿

【SPI的相位和極性】

CPOL和CPHA,分別都可以是0或時1,對應的四種組合就是:

Mode 0CPOL=0, CPHA=0
Mode 1CPOL=0, CPHA=1
Mode 2CPOL=1, CPHA=0
Mode 3CPOL=1, CPHA=1

結合這個圖已經(jīng)很清楚的認識到,極性和相位主要是控制什么東東了.cpol等于0時,時鐘的空閑電平就是0;cpol等于1時,空閑電平就是1;而cpha決定了數(shù)據(jù)采樣的時刻,是第一個邊沿的時候,還是第二個邊沿的時候。

【如何看懂和記憶CPOL和CPHA】

所以,關于在其他地方介紹的,看似多么復雜難懂難記憶的CPOL和CPHA,其實經(jīng)過上面解釋,就很容易看懂了:

去看時序圖,如果起始的始終SCLK的電平是0,那么CPOL=0,如果是1,那么CPOL=1,

然后看數(shù)據(jù)采樣時刻,即時序圖數(shù)據(jù)線上的數(shù)據(jù)那個矩形區(qū)域的中間所對應的位置,對應到上面SCLK時鐘的位置,對應著是第一個邊沿或是第二個邊沿,即CPHA是0或1。(對應的是上升沿還是還是下降沿,要根據(jù)對應的CPOL的值,才能確定)。

即:

(1)如何判斷CPOL:SCLK的空閑時候的電壓,是0還是1,決定了CPOL是0還是1;

(2)如何判斷CPHA:而數(shù)據(jù)采樣時刻對應著的SCLK的電平,是第一個邊沿還是第二個邊沿,對應著CPHA為0還是1。

【軟件中如何設置SPI的極性和相位】

SPI分主設備和從設備,兩者通過SPI協(xié)議通訊。

而設置SPI的模式,是從設備的模式,決定了主設備的模式。

所以要先去搞懂從設備的SPI是何種模式,然后再將主設備的SPI的模式,設置和從設備相同的模式,即可正常通訊。

對于從設備的SPI是什么模式,有兩種:

(1)固定的,有SPI從設備硬件決定的

SPI從設備,具體是什么模式,相關的datasheet中會有描述,需要自己去datasheet中找到相關的描述,即:

關于SPI從設備,在空閑的時候,是高電平還是低電平,即決定了CPOL是0還是1;

然后再找到關于設備是在上升沿還是下降沿去采樣數(shù)據(jù),這樣就是,在定了CPOL的值的前提下,對應著可以推算出CPHA是0還是1了。

舉例1:

CC2500- Low-Cost Low-Power 2.4 GHz RF Transceiver的datasheet中SPI的時序圖是:

從圖中可以看到,最開始的SCLK和結束時候的SCLK,即空閑時刻的SCLK,是低電平,推導出CPOL=0,然后可以看到數(shù)據(jù)采樣的時候,即數(shù)據(jù)最中間的那一點,對應的是SCLK的第一個邊沿,所以CPHA=0(此時對應的是上升沿)。

舉例2:

SSD1289- 240 RGB x 320 TFT LCD Controller Driver的datasheet中提到:

“SDI is shifted into 8-bit shift register on every rising edge of SCK in the order of data bit 7, data bit 6 …… data bit 0.”

意思是,數(shù)據(jù)是在上升沿采樣,所以可以斷定是CPOL=0,CPHA=0,或者CPOL=1,CPHA=1的模式,但是至于是哪種模式。

按理來說,接下來應該再去確定SCLK空閑時候是高電平還是低電平,用以確定CPOL是0還是1,但是datasheet中沒有提到這點。

所以,此處,目前不太確定,是兩種模式都支持,還是需要額外找證據(jù)卻確定CPOL是0還是1.

(2)可配置的,由軟件自己設定

從設備也是一個SPI控制器,4種模式都支持,此時只要自己設置為某種模式即可。

然后知道了從設備的模式后,再去將SPI主設備的模式,設置為和從設備模式一樣,即可。

對于如何配置SPI的CPOL和CPHA的話,不多細說,多數(shù)都是直接去寫對應的SPI控制器中對應寄存器中的CPOL和CPHA那兩位,寫0或寫1即可。


上一頁 1 2 下一頁

關鍵詞: 單片機arm接口總

評論


技術專區(qū)

關閉