瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工藝,搭載一顆四核Cortex-A55處理器和Mali G52 2EE 圖形處理器。RK3568 支持4K 解碼和 1080P 編碼,支持SATA/PCIE/USB3.0 外圍接口。RK3568內(nèi)置獨(dú)立NPU,可用于輕量級(jí)人工智能應(yīng)用。RK3568 支持安卓 11 和 linux 系統(tǒng),主要面向物聯(lián)網(wǎng)網(wǎng)關(guān)、NVR 存儲(chǔ)、工控平板、工業(yè)檢測(cè)、工控盒、卡拉 OK、云終端、車載中控等行業(yè)。
第194章 如何在Linux中使用模擬SPI
在講解SPI基礎(chǔ)的時(shí)候提到過(guò)SPI可以分為硬件SPI和軟件SPI,在前面的章節(jié)中使用的都是硬件SPI,當(dāng)硬件SPI不夠用時(shí),可以使用GPIO來(lái)模擬SPI,在本節(jié)課將對(duì)軟件SPI進(jìn)行講解。
與I2C協(xié)議相比,SPI通信協(xié)議比較簡(jiǎn)單,沒(méi)有起始信號(hào)、應(yīng)答信號(hào)和終止信號(hào),所以不會(huì)從零編寫(xiě)模擬SPI的驅(qū)動(dòng)代碼,直接使用Linux源碼中已經(jīng)寫(xiě)好的驅(qū)動(dòng)程序即可。
194.1 內(nèi)核和設(shè)備樹(shù)配置
首先將模擬SPI驅(qū)動(dòng)編譯進(jìn)內(nèi)核,在make menuconfig圖形化配置界面中選中如下選項(xiàng)
Device Drivers --->
[*]SPI support -->
<*> GPIO-based bitbanging SPI Master //選中


軟件SPI選定的引腳為開(kāi)發(fā)板背面的4個(gè)GPIO,具體引腳功能圖如下所示:


設(shè)備樹(shù)修改步驟如下所示:
首先對(duì)rk3568-evb1-ddr4-v10.dtsi設(shè)備樹(shù)進(jìn)行修改,在根節(jié)點(diǎn)添加SPI5節(jié)點(diǎn),具體內(nèi)容如下所示:
spi5: spi@gpiol {
compatible = "spi-gpio";
#address-cells = <1>;
gpio-sck = <&gpio0 RK_PB0_GPIO_ACTIVE_LOW>;
gpio-miso = <&gpio1 RK_PB0_GPIO_ACTIVE_LOW>;
gpio-mosi = <&gpio1 RK_PB1_GPIO_ACTIVE_LOW>;
cs-gpios = <&gpio1 RK_PB2_GPIO_ACTIVE_LOW>;
num-chipselects = <1>;
pinctrl-names = "default";
pinctrl-0 = <&spi5_gpios>;
status = "disabled";
};


然后對(duì)pinctrl節(jié)點(diǎn)進(jìn)行追加,追加內(nèi)容如下所示:


spi5_gpios: gpios {
rockchip,pins = <0 RK_PB0 0 &pcfg_pull_none>,
<1 RK_PB0 0 &pcfg_pull_none>,
<1 RK_PB1 0 &pcfg_pull_none>,
<1 RK_PB2 0 &pcfg_pull_none>,
>;
};
最后修改之前編寫(xiě)的mcp2515節(jié)點(diǎn),修改之后的內(nèi)容如下所示:
&spi5 {
status = "okay";
mcp2515:mcp2515@0 {
compatible = "rockchip,spidev";
reg = <0>;
spi-max-frequency = <10000000>;
status = "okay";
};
};


修改完成之后保存,然后重新編譯內(nèi)核鏡像,編譯完成的內(nèi)核鏡像存放路徑為“iTOP-3568開(kāi)發(fā)板\03_【iTOP-RK3568開(kāi)發(fā)板】指南教程\02_Linux驅(qū)動(dòng)配套資料\04_Linux驅(qū)動(dòng)程序\120_soft_spi\01_修改好的內(nèi)核”。
194.2 運(yùn)行測(cè)試
首先要確保燒寫(xiě)的是上一小節(jié)編譯出來(lái)的內(nèi)核,燒寫(xiě)完成開(kāi)發(fā)板啟動(dòng)之后,使用“l(fā)s /dev/spidev5.0”查看是否存在spidev5.0節(jié)點(diǎn),如下圖所示:


修改完成之后保存,然后重新編譯內(nèi)核鏡像,編譯完成的內(nèi)核鏡像存放路徑為“iTOP-3568開(kāi)發(fā)板\03_【iTOP-RK3568開(kāi)發(fā)板】指南教程\02_Linux驅(qū)動(dòng)配套資料\04_Linux驅(qū)動(dòng)程序\120_soft_spi\01_修改好的內(nèi)核”。
194.2 運(yùn)行測(cè)試
首先要確保燒寫(xiě)的是上一小節(jié)編譯出來(lái)的內(nèi)核,燒寫(xiě)完成開(kāi)發(fā)板啟動(dòng)之后,使用“l(fā)s /dev/spidev5.0”查看是否存在spidev5.0節(jié)點(diǎn),如下圖所示:


可以看到TX和RX收發(fā)的數(shù)據(jù)是一樣,證明SPI回環(huán)成功,至此模擬SPI測(cè)試就完成了。
-
Linux
+關(guān)注
關(guān)注
88文章
11576瀏覽量
216657 -
SPI
+關(guān)注
關(guān)注
17文章
1835瀏覽量
98659 -
RK3568
+關(guān)注
關(guān)注
5文章
609瀏覽量
7250 -
迅為電子
+關(guān)注
關(guān)注
0文章
72瀏覽量
274
發(fā)布評(píng)論請(qǐng)先 登錄
迅為RK3568開(kāi)發(fā)板驅(qū)動(dòng)指南Linux中通用SPI設(shè)備驅(qū)動(dòng)

北京迅為RK3568開(kāi)發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)

迅為RK3568驅(qū)動(dòng)指南GPIO子系統(tǒng)實(shí)戰(zhàn):實(shí)現(xiàn)動(dòng)態(tài)切換引腳復(fù)用功能

迅為RK3568開(kāi)發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)三級(jí)節(jié)點(diǎn)操作函數(shù)實(shí)驗(yàn)

迅為基于RK3568開(kāi)發(fā)板的嵌入式學(xué)習(xí)之Linux驅(qū)動(dòng)視頻

迅為RK3568開(kāi)發(fā)板驅(qū)動(dòng)開(kāi)發(fā)指南-輸入子系統(tǒng)

北京迅為RK3568開(kāi)發(fā)板嵌入式學(xué)習(xí)之Linux驅(qū)動(dòng)全新更新-CAN+

混合部署 | 在RK3568上同時(shí)部署RT-Thread和Linux系統(tǒng)-迅為電子

迅為RK3568開(kāi)發(fā)板SPI驅(qū)動(dòng)指南-mcp2515驅(qū)動(dòng)編寫(xiě):讀寄存器函數(shù)

【北京迅為】iTOP-RK3568OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)GPIO基礎(chǔ)知識(shí)

迅為RK3568驅(qū)動(dòng)指南GPIO子系統(tǒng) GPIO操作函數(shù)實(shí)驗(yàn)

迅為RK3568開(kāi)發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入

技術(shù)分享 | 迅為RK3568開(kāi)發(fā)板如何將 Linux 板卡虛擬成U盤(pán)

評(píng)論