溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

spi總線注意事項和linux下使用實戰(zhàn)

發(fā)布時間:2020-06-28 00:23:43 來源:網(wǎng)絡(luò) 閱讀:570 作者:GaoNeil 欄目:移動開發(fā)

spi總線注意事項和linux下使用實戰(zhàn)

spi一般是4線(CS、MISO、MOSI、SCK)或者3線(MISO和MOSI線合并),當(dāng)然這里忽略了設(shè)備芯片的電源、地等其他線。
一條spi總線上只有一個master,slave根據(jù)片選情況可以有多個,但同一時間只能有一個工作。通過片選cs信號來區(qū)分。
這里只關(guān)心spi總線的外設(shè),所以不用像spi host controller驅(qū)動及內(nèi)核spi_bus_type那樣關(guān)心很多spi的細節(jié)。
具體協(xié)議參見《SPI_motorola_specification.pdf》

spi總線注意事項和linux下使用實戰(zhàn)

注意圖中CPHA和CPOL表示什么意思,決定了是哪個沿采樣。
需要注意linux對應(yīng)的mode。

一般外設(shè)驅(qū)動涉及的內(nèi)核提供的spi api有:
具體參見include/linux/spi/spi.h
spi_register_driver()、spi_unregister_driver()
struct spi_driver
spi_write()、spi_read()、spi_write_then_read()、spi_sync()、spi_async()、spi_setup()。
struct spi_device
struct spi_message、 spi_message_init()、 spi_message_add_tail()

arm device tree之前的board方式時,spi設(shè)備需要你調(diào)用spi_register_board_info()來注冊。現(xiàn)在的arm device tree,由spi的bus host controller驅(qū)動根據(jù)你在device tree的spi controller節(jié)點中加入的子節(jié)點來生成相應(yīng)的spi設(shè)備(通過spi_register_master()調(diào)用of_register_spi_devices()進而調(diào)用spi_alloc_device()、 spi_add_device ()進行),并注冊進相應(yīng)的spi總線號上(這樣struct spi_device和struct spi_master的父子關(guān)系就確定了)。

隨便搜索其中一個spi函數(shù),即可在驅(qū)動中找到很多spi的設(shè)備驅(qū)動例子。

具體請參考我的免費的linux各種驅(qū)動開發(fā)課程如下:
https://edu.51cto.com/course/17138.html

另外我的相關(guān)培訓(xùn)視頻請看:
歡迎觀看我發(fā)布的各個課程: https://edu.51cto.com/lecturer/8896847.html

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI