<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

單片機 arm 常用的接口總結

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò ) 收藏
常用的接口有spi,I2c,uart等,他們都有自己的協(xié)議規定,下面談?wù)勊鼈冎g的聯(lián)系與區別:

1 I2C總線(xiàn)

本文引用地址:http://dyxdggzs.com/article/201611/321770.htm

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

首先來(lái)談?wù)処2c協(xié)議。涉及到的信號主要分為三類(lèi):開(kāi)始信號,停止信號,發(fā)送數據。既然是協(xié)議,就是雙方事先約定好的規定,通信雙方按照這個(gè)標準來(lái)進(jìn)行數據的傳輸就可以了。保證數據傳輸的一致性的話(huà),還有在某些時(shí)候發(fā)送一些附帶的檢查信息,例如ack信號,非ack信號;

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

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

接下來(lái)看看帶有I2C的控制器的arms3c2410,s3c2440芯片的i2c的控制。主要包括四個(gè)相關(guān)的寄存器的設置:通過(guò)它們之間的相互配合,實(shí)現i2c的數據傳輸。

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

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

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

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

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

三個(gè)函數就可以實(shí)現簡(jiǎn)單的I2C協(xié)議: 讀取,寫(xiě)入,中斷;

編程思路如下:

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

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

【背景】

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

【SPI基礎知識簡(jiǎn)介】

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

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

一個(gè)master可以接一個(gè)或多個(gè)slave。

常見(jiàn)用法是一個(gè)Master接一個(gè)slave,只需要4根線(xiàn):

SCLK:Serial Clock,(串行)時(shí)鐘

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

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

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

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

【SPI相關(guān)的縮寫(xiě)或說(shuō)法】

先簡(jiǎn)單說(shuō)一下,關(guān)于SPI中一些常見(jiàn)的說(shuō)法:

SPI的極性Polarity和相位Phase,最常見(jiàn)的寫(xiě)法是CPOL和CPHA,不過(guò)也有一些其他寫(xiě)法,簡(jiǎn)單總結如下:

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

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

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

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

對于一個(gè)時(shí)鐘周期內,有兩個(gè)edge,分別稱(chēng)為:

Leading edge=前一個(gè)邊沿=第一個(gè)邊沿,對于開(kāi)始電壓是1,那么就是1變成0的時(shí)候,對于開(kāi)始電壓是0,那么就是0變成1的時(shí)候;

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

本文采用如下用法:

極性=CPOL

相位=CPHA

SCLK=時(shí)鐘

第一個(gè)邊沿和第二個(gè)邊沿

【SPI的相位和極性】

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

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

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

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

所以,關(guān)于在其他地方介紹的,看似多么復雜難懂難記憶的CPOL和CPHA,其實(shí)經(jīng)過(guò)上面解釋?zhuān)秃苋菀卓炊耍?/p>

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

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

即:

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

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

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

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

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

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

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

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

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

關(guān)于SPI從設備,在空閑的時(shí)候,是高電平還是低電平,即決定了CPOL是0還是1;

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

舉例1:

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

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

舉例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.”

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

按理來(lái)說(shuō),接下來(lái)應該再去確定SCLK空閑時(shí)候是高電平還是低電平,用以確定CPOL是0還是1,但是datasheet中沒(méi)有提到這點(diǎn)。

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

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

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

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

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


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 單片機arm接口總

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>