• 正文
    • 01、修改CS的gpio
    • 02、修改spi設(shè)備節(jié)點(diǎn)
    • 03、增加一個(gè)SPI設(shè)備
    • 總 結(jié) 
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

干貨講解 | OKMX8MQ-C如何在SPI總線上添加設(shè)備

2021/04/26
162
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

SPI接口設(shè)備是一款使用率較高的設(shè)備,在用戶使用OKMX8MQ-C時(shí)可能需要添加新的SPI設(shè)備,或者將現(xiàn)有的SPI設(shè)備從當(dāng)前的總線上更換到別的總線上,或更換片選。

對(duì)于SPI驅(qū)動(dòng)不熟悉的人可能不是很了解在更改時(shí)都需要哪些操作和注意事項(xiàng),下面我就來(lái)給大家介紹下如何修改。

首先,我們先來(lái)了解下OKMX8MQ–C SPI的驅(qū)動(dòng)現(xiàn)狀。

關(guān)于OKMX8MQ –C SPI的驅(qū)動(dòng)現(xiàn)狀

驅(qū)動(dòng)是用bitbang的方式,驅(qū)動(dòng)使用GPIO作為SPI的片選,而不是使用SPI控制器的原生片選。

i.MX8MQ的SPI控制器支持4個(gè)片選,我們可以在一個(gè)SPI總線上添加4個(gè)片選連接4個(gè)設(shè)備。

i.MX8MQ有3個(gè)SPI總線,OKMX8MQ-C使用了2個(gè),SPI1連接了設(shè)備MCP2518FD,SPI2沒(méi)有連接設(shè)備,而是將引腳通過(guò)插座引出,并且片選0的驅(qū)動(dòng)使用了spidev,用戶可以通過(guò)這個(gè)spidev設(shè)備在用戶空間訪問(wèn)cs0所連接的設(shè)備。i.MX8MQ核心板引出了SPI3的引腳,但是在開(kāi)發(fā)板上由于引腳復(fù)用,SPI3的引腳復(fù)用成了其他的功能,所以沒(méi)有作為SPI使用。接下來(lái),我們看下該如何對(duì)SPI驅(qū)動(dòng)做出具體的修改。

01、修改CS的gpio

修改spi2的cs0使用的gpio,由gpio5-13 到gpio3-19,修改設(shè)備樹(shù)OK8MQ-linux-kernel/arch/arm64/boot/dts/freescale/ok8mq-evk.dts,找到節(jié)點(diǎn)&ecspi2,將cs-gpios = <&gpio5 13 0>,修改為cs-gpios = <&gpio3 19 0>。

需要確認(rèn)你使用的gpio3-19這個(gè)引腳的pinmux是GPIO功能,如果不是,則需要將其修改成GPIO。

代碼修改前后對(duì)比:

修改前

修改后

02、修改spi設(shè)備節(jié)點(diǎn)

比如將spi2的cs0從原來(lái)的spidev驅(qū)動(dòng)修改為mcp2518fd驅(qū)動(dòng):修改設(shè)備樹(shù)OK8MQ-linux-kernel/arch/arm64/boot/dts/freescale/ok8mq-evk.dts,找到節(jié)點(diǎn)&ecspi2,將其下spidev@0節(jié)點(diǎn)刪除,添加mcp2518fd@0節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)下需要添加的特性需要根據(jù)這個(gè)設(shè)備的驅(qū)動(dòng)添加,是這個(gè)spi設(shè)備的驅(qū)動(dòng)需要的。代碼修改前后對(duì)比:

修改前

修改后

03、增加一個(gè)SPI設(shè)備

給spi2增加一個(gè)spidev設(shè)備,使用片選gpio3-19:

添加一個(gè)片選:

修改設(shè)備樹(shù)OK8MQ-linux-kernel/arch/arm64/boot/dts/freescale/ok8mq-evk.dts,找到節(jié)點(diǎn)&ecspi2,將cs-gpios = <&gpio5 13 0>,修改為cs-gpios = <&gpio5 13 0>, <&gpio3 19 0>。

添加spidev設(shè)備節(jié)點(diǎn):

繼續(xù)修改剛才的節(jié)點(diǎn),在節(jié)點(diǎn)下添加spidev節(jié)點(diǎn),節(jié)點(diǎn)的reg值為1

測(cè)試:

使用spidev_test程序,spidev_test -D /dev/spidev1.0 測(cè)試片選0,spidev_test -D /dev/spidev1.1測(cè)試片選1,測(cè)試時(shí)是用示波器測(cè)量片選對(duì)應(yīng)的GPIO,GPIO會(huì)保持一定時(shí)間的低電平,表明該片選被選通。

代碼修改前后對(duì)比:

修改前

修改后

我們上面只是描述了如何將已有的SPI設(shè)備驅(qū)動(dòng)添加到SPI總線上的方法,并不是SPI設(shè)備自身的驅(qū)動(dòng)的修改方法。

有的SPI設(shè)備功能非常簡(jiǎn)單,只需要實(shí)現(xiàn)幾個(gè)操作就行,有的SPI設(shè)備功能實(shí)現(xiàn)非常復(fù)雜,對(duì)接了Linux的驅(qū)動(dòng)接口后,需要非常多的spi操作才能實(shí)現(xiàn)功能。如果是復(fù)雜的設(shè)備,驅(qū)動(dòng)只能是由芯片廠商來(lái)提供了。例如mcp2518fd設(shè)備節(jié)點(diǎn)。當(dāng)我們?cè)谔砑舆@個(gè)節(jié)點(diǎn)的時(shí)候,肯定是已經(jīng)有了2518fd的驅(qū)動(dòng),添加節(jié)點(diǎn)只需要根據(jù)硬件原理上的連接方法,將其添加到對(duì)應(yīng)的片選上,而其內(nèi)的屬性在芯片提供的驅(qū)動(dòng)例程上都有對(duì)應(yīng)的例子,只需要添加到節(jié)點(diǎn)內(nèi)即可。

總 結(jié) 

在面對(duì)一個(gè)復(fù)雜設(shè)備時(shí),如果你沒(méi)有驅(qū)動(dòng),首先需要做的就是找驅(qū)動(dòng)、添加驅(qū)動(dòng),然后在spi總線上添加該設(shè)備,編譯鏡像調(diào)試這個(gè)設(shè)備。對(duì)于功能簡(jiǎn)單的spi設(shè)備,只需要些簡(jiǎn)單的spi操作,就可以使用spidev驅(qū)動(dòng)在用戶層完成操作,不需要專門的驅(qū)動(dòng)。例如一個(gè)SPI接口的ADC芯片,只需要1次SPI讀寫操作就能使ADC完成轉(zhuǎn)化并讀取轉(zhuǎn)化值的操作,用戶層打開(kāi)spidev設(shè)備節(jié)點(diǎn),配置完成后,讀取ADC值的時(shí)候,按照ADC的手冊(cè),執(zhí)行一次SPI傳輸操作即可。關(guān)聯(lián)閱讀linux spi驅(qū)動(dòng)開(kāi)發(fā)學(xué)習(xí)-----spidev.c和spi test app

飛凌嵌入式

飛凌嵌入式

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn)的高新技術(shù)企業(yè),是國(guó)內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過(guò)十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊(duì),在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國(guó)家和地區(qū)擁有國(guó)際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺(tái)廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測(cè)等諸多領(lǐng)域。

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn)的高新技術(shù)企業(yè),是國(guó)內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過(guò)十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊(duì),在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國(guó)家和地區(qū)擁有國(guó)際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺(tái)廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測(cè)等諸多領(lǐng)域。收起

查看更多

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

秉承專業(yè)態(tài)度,專注智能設(shè)備核心平臺(tái)研發(fā)與制造,以技術(shù)研發(fā)創(chuàng)新為主導(dǎo),以客戶實(shí)用化,產(chǎn)品化為目標(biāo),把握嵌入式行業(yè)的前沿發(fā)展需求,利用核心技術(shù)為客戶提供穩(wěn)定、可靠、功能優(yōu)異的高品質(zhì)產(chǎn)品。合作聯(lián)系:17713286011