解釋MTK平臺SPI總線參數的含義
文件kernel-3.10/drivers/misc/mediatek/spi/mt6795/spi.c是MTK的spi控制器的驅動,具體參數的設定是在chip_config文件中。
chip_config就是從設備spi_device。對應的時間就是:設定的數值×9.6ns。如low_time = 10*9.6ns =96ns.,
mt_spi_setup的函數中的chip_config變量的內容
chip_config->setuptime = 7,//15,cs cs 建立時間 看上圖 7*9.6ns=67.2ns
chip_config->holdtime = 7,//15, cs cs 保持時間 看上圖
chip_config->high_time = 16,//6 sck clk 高電平時間 看上圖
chip_config->low_time = 17,//6 sck clk 低電平時間 看上圖
chip_config->cs_idletime = 3,//20, cs 休眠時間 看上圖
chip_config->cpol = 0, // cpol:時鐘極性選擇,爲0時SPI總線空閒爲低電平,爲1時SPI總線空閒爲高電平
chip_config->cpha = 0, // cpha: 時鐘相位選擇,爲0時在SCK第一個跳變沿採樣,爲1時在SCK第二個跳變沿採樣
chip_config->rx_mlsb = 1, // rx_mlsb & tx_mlsb:傳輸數據時,先從低bit發送還是高bit發送,1時代表先從低bit發送
chip_config->tx_mlsb = 1,
chip_config->tx_endian = 0, // 傳輸數據時,以大端模式傳輸或者小端模式傳輸,只對DMA傳輸有效,0時,代表小端模式傳輸; fifo mode爲小端模式。
chip_config->rx_endian = 0,
chip_config->com_mod = DMA_TRANSFER, // DMA或者fifo 傳輸
時鐘極性和相位看下圖
工作方式1:
當CPHA=0、CPOL=0時SPI總線工作在方式1。MISO引腳上的數據在第一個SPSCK沿跳變之前已經上線了,而 爲了保證正確傳輸,MOSI引腳的MSB位必須與SPSCK的第一個邊沿同步,在SPI傳輸過程中,首先將數據上線,然後在同步時鐘信號的上升沿 時,SPI的接收方捕捉位信號,在時鐘信號的一個週期結束時(下降沿),下一位數據信號上線,再重複上述過程,直到一個字節的8位信號傳輸結束。
工作方式2:
當CPHA=0、CPOL=1時SPI總線工作在方式2。與前者唯一不同之處只是在同步時鐘信號的下降沿時捕捉位信號,上升沿時下一位數據上線。
工作方式3:
當CPHA=1、CPOL=0時SPI總線工作在方式3。MISO引腳和MOSI引腳上的數據的MSB位必須與SPSCK的 第一個邊沿同步,在SPI傳輸過程中,在同步時鐘信號週期開始時(上升沿)數據上線,然後在同步時鐘信號的下降沿時,SPI的接收方捕捉位信號,在時鐘信 號的一個週期結束時(上升沿),下一位數據信號上線,再重複上述過程,直到一個字節的8位信號傳輸結束。
工作方式4:
當CPHA=1、CPOL=1時SPI總線工作在方式4。與前者唯一不同之處只是在同步時鐘信號的上升沿時捕捉位信號,下降沿時下一位數據上線。
---------------------
作者:香雨亭榭
來源:CSDN
原文:https://blog.csdn.net/hpu11/article/details/83345649
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!