spi介面有四種不同的資料傳輸時序,取決於cpol和cphl這兩位的組合。圖1中表現了這四種時序,
時序與cpol、cphl的關係也可以從圖中看出。
圖1cpol是用來決定sck時鐘訊號空閒時的電平,cpol=0,空閒電平為低電平,cpol=1時,
空閒電平為高電平。cpha是用來決定取樣時刻的,cpha=0,在每個週期的第乙個時鐘沿取樣,
cpha=1,在每個週期的第二個時鐘沿取樣。
經由上面我們就可以比對實際裝置的時序來對spi的mode進行配置了。
找到標頭檔案裡的spi mode的一定義如下:
#define spi_cpha 0x01 /* clock phase */
#define spi_cpol 0x02 /* clock polarity */
#define spi_mode_0 (0|0) /* (original microwire) */
#define spi_mode_1 (0|spi_cpha)
#define spi_mode_2 (spi_cpol|0)
#define spi_mode_3 (spi_cpol|spi_cpha)
大家很容易可以分析出spi四種模式的配置了吧,後面的速率,位元組數就都很好配置了。
int spi0mode = spi_mode_2; //配置模式
ioctl(spi0handle, spi_ioc_wr_mode, &spi0mode);
ioctl(spi0handle, spi_ioc_rd_mode, &spi0mode);
struct spi_ioc_transfer sspi0tr;
sspi0tr.speed_hz = 6000000; //配置速率6m
ioctl(spi0handle, spi_ioc_wr_max_speed_hz, &sspi0tr.speed_hz);
ioctl(spi0handle, spi_ioc_rd_max_speed_hz, &sspi0tr.speed_hz);
sspi0tr.bits_per_word =16; //配置位元組數
sspi0tr.len = 2;
ioctl(spi0handle, spi_ioc_wr_bits_per_word, &sspi0tr.bits_per_word);
ioctl(spi0handle, spi_ioc_rd_bits_per_word, &sspi0tr.bits_per_word);
配置好了後,就是讀寫了,讀寫需要注意的引數有兩個地方:
1, tx_buf,rx_buf這兩個引數決定了spi的讀寫,如果唯讀或只寫的情況下,就把另乙個不用的引數=null。
2,spi_ioc_message(
n)這裡的n決定了spi操作的次數,如果你想連線讀寫幾次spi就改變n就是了
Am335x之u boot LOGO的增加
am335x下增加u boot的logo比較簡單,詳細步驟如下 2,安裝 3,找到安裝後的目錄 tools bmptoraster,裝它拷貝到linux系統下 4,標頭檔案裡遮蔽 define compress,然後make它,生成a.out 5,自己做乙個24位的點陣圖,拷貝到a.out目錄下 6...
Am335x 啟動過程
啟動順序 針對ti oma3 evm linux一般的啟動順序是 上電的時候,omap裝置最開始的boot是從cpu內部的boot rom起來,這部分的 是出廠的時候固化的,不能被改變的。boot rom通過讀取外部boot pin的配置來尋找第乙個外部bootloader。可以尋找的裝置有nand...
Am335X編譯除錯環境搭建
am335x編譯除錯環境搭建 可以參考 1,配置伺服器端的編譯環境,參見sitara linuxsdk sdg 05.04.01.00.pdf p239 sitara linux sdk gcc toolchain 這裡由於是同事已經搭好環境,所以沒法確認細節問題 2,寫一段測試c include ...