邏輯分析之二瑞薩SPI的實現

在單片機等通訊系統中,SPI也是十分重要的。上次課程中我們使用瑞薩完成了UART功能的分析,與UART相比,SPI是同步全雙工的數據傳輸模式,而UART則是非同步傳輸模式,意味著SPI比UART多了一根時鐘線,這個時鐘線使得主機與從機成功的通訊,而UART則需要收發器之間需要固定的相同的波特率。SPI還有一根片選信號線CS,用於選擇與主機通訊的從機。

本次使用的晶元依舊是13年和15年國賽指定的型號為RL78G13100lea晶元,瑞薩中的SPI即為CSI,建議讀者先對瑞薩MCU的Datasheet進行一次閱讀,以及包括配套板子的原理圖。閱讀本文前建議將上期文章閱讀一次,以利於有更好的了解。

接下來主要分析spi協議以及瑞薩spi程序的編寫

Advertisements

Spi在一般的應用中主要有4根線,分別是MOSI,MISO,SCLK和SS,這四根線在瑞薩中被稱為SI,SO,SCK,CS,其各自代表的功能如下圖:

通常主機與從機是這樣子連線的:

其傳輸模式有四種,這是根據時鐘極性CPOL與時鐘相位CPHA組合而來的。打開瑞薩自帶的SPI常式,在代碼生成器的serial的csi選項中可以觀察的到有這樣的四種模式:

從這個圖中我們可以看到Type1和Type3的時鐘線SCK在空閑時候是高電平的,也就代表著時鐘極性CPOL=1的情況。其餘兩個則相反。

我們還可以看到Type1跟Type2的數據都在第二個跳變沿開始傳送,這代表的是時鐘相位CPHA=1的情況,其餘則是數據在時鐘的第一個跳變沿開始傳送,即CPHA=0。由此組合的四種模式。本次常式選擇了默認的CPOL=1以及CPHA=1的方式。

Advertisements

本次常式使用的是CSI00的功能,我們可以看到,系統默認的協議是單發送模式,八個字長,低位在前。

在光碟自帶的常式中,main.c中定義了一系列的變數,其中SET_CS和CLR_CS顯然是用於設置片選信號,其他一系列的宏定義則表示則對外圍器件不同的指令代碼,比如對外圍器件要進行寫入操作,則將WRITE所代表的數據從瑞薩主機傳輸至外圍從機。定義的tx_buf[]和rx_buf[]則分別表示發送和接收緩存,tx_len表示發送位元組長度,cnt表示延時時間。

這個例子中是針對某個器件而編寫的,首先設置PM5.4=0代表P5.4引腳是對外輸出的,從而引用SET_CS才能產生片選信號。調用SPI啟動函數,調用發送函數發送一個對器件寫入使能的指令WREN,延時一定時間后再調用發送函數將寫入的數據0x00和0xAA寫入器件,延時后再調用發送函數讀出數據。

接下來使用邏輯分析儀軟體模擬SPI波形並分析

打開邏輯分析儀軟體,選擇四個通道,添加SPI協議,同時注意選取CPOL=1以及CPHA=1的方式。

下圖是模擬所採樣的波形,從波形上看,當時鐘信號為高電平時系統不傳輸數據,紅色矩形框的標示代表著數據是在時鐘信號的第二個跳變沿,也就是上升沿開始傳輸數據,黃色橢圓圈表示是八位字長,完全符合我們的設定:

接下來使用邏輯分析儀觀察程序的SPI信號及分析

這是瑞薩mcu板的原理圖,由該原理圖我們可知,應當將本次程序所使用的CSI00中的SCK00,SI00,SO00以及P54連接到相應的通道上,它們的引腳分別為46,45,44,37我們將其與相應的通道連接起來,即分別連接的是CH2,CH1,CH0以及CH3。

這是實物連接示意圖。在邏輯分析儀軟體中,時鐘線要設置觸發條件,下降沿觸發。同樣,當兩條USB線插入到電腦後,我們將程序燒寫下載到板子上,啟動同時選擇運行程序。可以觀察到這樣的波形。我們可以觀察的到,這個分析與我們之前的分析是一致的。

最後,晶元之家祝大家 平安夜快樂!晶元之家

Advertisements

你可能會喜歡