SPI OLED裝置除錯記錄

2021-07-25 10:36:28 字數 1510 閱讀 8265

平台:mt6737m

oled ic:ssd1331  有幾種連線方式,我們用的是spi。

知識儲備:

spi匯流排工作方式有四種,由時鐘訊號的極性及相位組合而成,

cpol: 時鐘極性選擇,為0時spi匯流排空閒為低電平,為1時spi匯流排空閒為高電平。

cpha:時鐘相位選擇,為0時在sck第乙個跳變沿取樣,為1時在sck第二個跳變沿取樣。

mtk平台spi的資料傳輸模式有:

1. fifo,支援一次傳輸32bytes。

2. dma,一次最多支援1024b,支援多次傳輸(length=loop*1024,1≤loop≤256)。

3. spi控制器只有乙個片選訊號,故只支援乙個從裝置。

除錯過程及遇到的問題:

1、第一步不免俗,註冊乙個spi裝置,spi驅動。各平台路徑會有差異,這個平台路徑是:\kernel-3.18\drivers\spi\mediatek\mt6735

2、裝置驅動載入成功,初始化按照datasheet power on時序,初始化**傳送,**螢幕是否點亮了。

這裡就涉及到兩個很重要的東西,gpio的設定和spi引數的設定。gpio設定略過,spi引數一般都預設即可。另上面說的乙個spi只支援乙個裝置,不是絕對的,換個思想,gpio模擬spi。。。cs無非就是選中某個裝置而已,對於這個裝置來講就乙個高低電平。

3、螢幕點亮很順利,因為在微控制器上面已經調好了。時代久遠,暫且不表。

4、按照預設配置fifo,spi匯流排速率不高,具體數值忘了。

我們專案是乙個spi介面接兩個spi裝置,輪流切換,要做到同時重新整理的效果,對速度上就要求比較高了。這裡對spi配置就小小的糾結了一番,折騰數小時,最終改1個地方搞定。(dma,一次最多支援1024b,支援多次傳輸(length=loop*1024,1≤loop≤256)。)

spi_par->com_mod = dma_transfer;

static int spi_test_write_byte(struct spi_device *spi, char data) ;

buf[0] = data;

spi_message_init(&msg);

spi_message_add_tail(&xfer, &msg);

return spi_sync(spi, &msg); }

static int spi_test_write_bytes(struct spi_device *spi, const unsigned char *data, int len) ;

spi_message_init(&msg);

spi_message_add_tail(&xfer, &msg);

return spi_sync(spi, &msg); }

dma方式就可以直接用下面的函式,fifo就老實用上面的吧。

5、最後解了乙個bug,跟spi無關,軟體設計的缺陷,還是記錄一下吧。

spi一次性傳送多個資料以防被其他打斷一定要加鎖,互斥鎖,or 全域性變數,互斥鎖的原始做法。

好記性不如爛筆頭。。。

海灣crt除錯 海灣裝置除錯步驟

gst5000 除錯步驟 一 檢查線路 匯流排線路 包括探頭 手報 消火栓按鈕 聲光 模組等等現場裝置的 z1 z2 訊號線 此 線路無極性。首先保證匯流排上兩線不短路,其次保證每一根匯流排對地足夠絕緣 理論上應該大於 兆歐 然後對每組匯流排測量其線間電阻 將萬用表跳到測量通斷的檔位,及 檔,測得值...

chrome除錯建立sq裝置進行除錯

很多時候我們開發只是在手機展示,而在pc端進行除錯,當開發加了這一層限制之後,就會導致有些資料樣式出不來,讓pc端除錯整個就廢掉了。由於這一級限制是通過判斷useragent來確定是否通過手q訪問,那麼,我們就可以有解決辦法,那就是獲取手q內建瀏覽器的useragent,進行模擬就可以了,事實就是如...

linux Linux除錯記錄

剛安裝完 linux 後,在輸入命令或者用 vi 編輯的時候會發出報警的蜂鳴聲,很難受。vi etc inputrc找到裡面的設定 bell style set bell style none將前面的 去掉,讓這個配置生效 set bell style none然後重啟系統就可以去掉蜂鳴聲 rebo...