chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RK?平臺?SPI?開發(fā)完全指南(驅(qū)動?+?配置?+?測試?+?優(yōu)化)

jf_44130326 ? 來源:Linux1024 ? 作者:Linux1024 ? 2026-01-30 22:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式Linux開發(fā)中,SPI(串行外設接口)憑借高速同步通信特性,廣泛應用于傳感器、存儲芯片、顯示模塊等外設交互場景。瑞芯微Rockchip)作為主流嵌入式芯片廠商,其Linux平臺SPI驅(qū)動已形成完善的開發(fā)體系,支持Master/Slave雙模式、多速率適配及靈活配置。本文基于Rockchip官方開發(fā)指南,從功能特性、驅(qū)動配置、測試驗證到優(yōu)化方案,全方位拆解RK平臺SPI開發(fā)流程。

wKgZO2l8wsGAc-2qAAA6BBWzM7k065.png

一、RK平臺SPI核心特性速覽

1.基礎支持能力

?協(xié)議兼容:默認采用摩托羅拉SPI協(xié)議,支持4種傳輸模式(CPOL/CPHA組合配置)

?數(shù)據(jù)寬度:支持8/16位傳輸,16位模式可提升DMA傳輸效率

?片選擴展:每個SPI控制器支持1-2個硬件片選,可通過cs-gpios擴展更多片選信號

?內(nèi)核適配:兼容Linux4.4、Linux4.19及以上內(nèi)核(含Linux5.10),新增Slave模式框架支持

2.關(guān)鍵速率參數(shù)(全平臺匯總)

SOC系列

Master模式最高速率

Slave模式最高速率

RK3506/RK3588

50MHz

50MHz/33MHz

RV1103B/RV1106B

50MHz

33MHz

RK3576/RK3562

50MHz

33MHz

RV1126/RV1109

50MHz

16MHz

其他平臺

50MHz

16MHz

注意:表格速率為理論值,實際受PCB走線質(zhì)量、PLL分頻策略影響,需以實測為準;部分平臺需配置100MHz工作時鐘(二分頻后輸出50MHz)。

二、開發(fā)環(huán)境與核心代碼路徑

1.內(nèi)核配置前提

需在Kernel配置中啟用SPI相關(guān)支持,配置路徑如下:

DeviceDrivers ---> [*] SPI support --->  <*> Rockchip SPI controller driver # RK專用SPI控制器驅(qū)動  <*> User mode SPI device driver support # 用戶態(tài)訪問支持(可選)  [*] SPI slave protocol handlers # Slave模式支持(如需從機功能)

2.核心代碼位置

功能模塊

代碼路徑

作用說明

SPI驅(qū)動框架

drivers/spi/spi.c

Linux通用SPI框架實現(xiàn)

RK SPI主控驅(qū)動

drivers/spi/spi-rockchip.c

主控模式核心邏輯、寄存器操作

RK SPI從機驅(qū)動

drivers/spi/spi-rockchip-slave.c

從機模式數(shù)據(jù)傳輸、DMA處理

用戶態(tài)設備節(jié)點驅(qū)動

drivers/spi/spidev.c

創(chuàng)建/dev/spidev設備節(jié)點,支持用戶態(tài)操作

內(nèi)核測試驅(qū)動

drivers/spi/spi-rockchip-test.c

內(nèi)核態(tài)測試工具,需手動添加編譯

用戶態(tài)測試工具

Documentation/spi/spidev_test.c

用戶態(tài)SPI讀寫測試示例程序

三、SPI驅(qū)動配置實戰(zhàn)(Master/Slave雙模式)

1. Master模式配置(RK芯片作為主機)

1DTS節(jié)點配置示例(以SPI0為例)

&spi0 {  status ="okay"; // 可選配置:關(guān)閉DMA僅用IRQ傳輸(默認開啟DMA) // dma-names; // 可選配置:讀采樣延時(單位ns,需根據(jù)外設調(diào)整) // rx-sample-delay-ns = <10>; // 可選配置:Runtime PM休眠延時(優(yōu)化功耗) // rockchip,autosuspend-delay-ms = <500>; spi_test@0{    compatible ="rockchip,spi_test_bus0_cs0"; // 與驅(qū)動匹配名    reg = <0>; // 片選編號(0或1)    spi-cpha; // 配置CPHA=1(默認0)    spi-cpol; // 配置CPOL=1(默認0)    spi-lsb-first; // 小端優(yōu)先傳輸(默認大端)    spi-max-frequency = <24000000>; // 傳輸速率(不超過50MHz)  };};

2)時鐘配置說明

?SPI輸出時鐘(spi-max-frequency)由工作時鐘(assigned-clock-rates)分頻得到

?約束關(guān)系:assigned-clock-rates ≥ 2×spi-max-frequency(內(nèi)部分頻為偶數(shù))

?示例:需50MHz傳輸速率時,配置assigned-clock-rates = <100000000>

2. Slave模式配置(RK芯片作為從機)

1)關(guān)鍵依賴

需先確認SDK包含Slave驅(qū)動補?。?/span>commit 10cbf3c2),無補丁可通過瑞芯微Redmine獲取。

2DTS節(jié)點配置示例(以SPI1為例)

&spi1 {  compatible ="rockchip,spi-slave"; // 從機模式標識  status ="okay";  ready-gpios = <&gpio1 RK_PD3 GPIO_ACTIVE_LOW>; // 就緒信號(下降沿有效) // 可選配置:屏蔽CS釋放檢測(適用于長時序場景) // rockchip,cs-inactive-disable; slave@0{    compatible ="rockchip,spi_test_bus1_cs0";    reg = <0>; // 從機僅支持片選0    spi-cpha;    spi-cpol;    spi-lsb-first;    max-frequency = <33000000>; // 遵循對應SOC的Slave速率限制  };};

3)從機模式關(guān)鍵須知

?傳輸順序:Slave需先啟動讀寫操作,Master再發(fā)起傳輸(避免數(shù)據(jù)丟失)

?DMA建議:Slave模式默認啟用DMA,不建議關(guān)閉(大長度傳輸需依賴DMA避免緩存溢出)

?性能模式:Master速率>5MHz8位)/10MHz16位)時,需開啟performance模式

3. cs-gpios片選擴展(Linux4.19+

當硬件片選不足時,可通過GPIO模擬片選,配置步驟如下:

// 1. 定義GPIO引腳功能&pinctrl {  spi1 {    spi1_cs2n: spi1-cs2n {      rockchip,pins = <0RK_PC4 RK_FUNC_GPIO &pcfg_pull_up_drv_level_0>;    };  };};// 2. SPI節(jié)點引用擴展片選&spi1 {  status ="okay";  cs-gpios = <&gpio0 RK_PC2 GPIO_ACTIVE_LOW>, // 原有片選0       <&gpio0 RK_PC3 GPIO_ACTIVE_LOW>, // 原有片選1       <&gpio0 RK_PC4 GPIO_ACTIVE_LOW>; // 擴展片選2};

四、驅(qū)動開發(fā)與測試驗證

1.內(nèi)核態(tài)驅(qū)動開發(fā)示例

核心實現(xiàn)probe函數(shù)(設備匹配與初始化)和讀寫接口,參考代碼:

#includestaticintspi_test_probe(structspi_device *spi){ intret; if(!spi)return-ENOMEM;
  spi->bits_per_word =8; // 設置數(shù)據(jù)寬度  ret =spi_setup(spi);  // 初始化SPI配置 if(ret 0) {   dev_err(&spi->dev,"SPI配置失敗n");   returnret;  } return0;}// 設備樹匹配表staticconststructof_device_idspi_test_dt_match[] = {  {.compatible ="rockchip,spi_test_bus0_cs0"},  {.compatible ="rockchip,spi_test_bus1_cs0"},  {},};MODULE_DEVICE_TABLE(of, spi_test_dt_match);// SPI驅(qū)動結(jié)構(gòu)體staticstructspi_driverspi_test_driver = {  .driver = {    .name ="spi_test",    .of_match_table =of_match_ptr(spi_test_dt_match),  },  .probe = spi_test_probe,  .remove = spi_test_remove,};module_init(spi_test_init); // 驅(qū)動注冊module_exit(spi_test_exit); // 驅(qū)動卸載

2.測試驗證步驟

1)內(nèi)核態(tài)測試(使用spi-rockchip-test驅(qū)動)

1.編譯驅(qū)動:在drivers/spi/Makefile中添加obj-y += spi-rockchip-test.o

2.加載驅(qū)動后,執(zhí)行測試命令:

# 寫測試:向ID=0的設備寫入10次,每次255字節(jié)echowrite010255> /dev/spi_misc_test# 讀測試:從ID=0的設備讀取10次,每次255字節(jié)echoread010255> /dev/spi_misc_test# 速率設置:將ID=0的設備速率設為1MHzechosetspeed01000000> /dev/spi_misc_test

2)用戶態(tài)測試(使用spidev設備節(jié)點)

1.編譯測試工具:make CROSS_COMPILE=xxx-linux-gnu- -C linux-src M=Documentation/spi

2.運行測試程序:

# 讀取spidev1.1設備,傳輸1024字節(jié)./spidev_test -D /dev/spidev1.1 -s 24000000 -r -n 1024

3Slave模式專項測試

1.Slave端啟動寫操作:echo write 0 1 16 > /dev/spi_misc_test

2.Master端啟動讀操作:echo read 0 1 16 > /dev/spi_misc_test

3.自動化壓測(Master端):echo autotest 1024 64 1 > /dev/spidev_rkmst_misc1024字節(jié)×64次,開啟校驗)

五、常見問題與優(yōu)化方案

1.高頻問題排查

1SPI無信號輸出

?檢查驅(qū)動加載狀態(tài):lsmod | grep spi_rockchip

?確認引腳配置:驗證IOMUX是否正確映射為SPI功能

?排查DMA使能:串口無"Failed to request TX/RX DMA channel"DMA正常

?增強驅(qū)動強度:高頻場景下提高GPIO驅(qū)動能力改善信號質(zhì)量

2)傳輸數(shù)據(jù)錯誤

?速率匹配:確認Master/Slave速率不超過對應SOC的限制

?采樣延時:高速傳輸時添加rx-sample-delay-ns配置(如10ns

?模式一致性:MasterSlaveCPOL/CPHA配置必須一致

2.性能優(yōu)化方向

1)降低CPU占用率

?開啟Runtime PMdts添加rockchip,autosuspend-delay-ms = <500>

?調(diào)整傳輸模式:小數(shù)據(jù)量場景改用IRQ傳輸(關(guān)閉DMA

?優(yōu)化DMA水線:修改TX DMA水線值(如設為11)減少回調(diào)等待時間

2)提升傳輸速率

?啟用16位數(shù)據(jù)寬度:最大化FIFO利用率,加速DMA傳輸

?開啟performance模式:避免DRAM變頻導致緩存溢出(參考如下代碼)

// 傳輸前開啟性能模式rockchip_set_system_status(SYS_STATUS_PERFORMANCE);// 執(zhí)行SPI傳輸spi_read_slt(id, rxbuf, size);// 傳輸后關(guān)閉性能模式rockchip_clear_system_status(SYS_STATUS_PERFORMANCE);

?減少傳輸次數(shù):合并小數(shù)據(jù)包,降低調(diào)度開銷

RK平臺SPI開發(fā)的核心在于掌握DTS配置規(guī)范、模式匹配要點及性能優(yōu)化技巧。通過本文的步驟拆解,無論是快速搭建基礎通信鏈路,還是深度優(yōu)化傳輸性能,都能找到對應的實現(xiàn)方案。建議開發(fā)過程中結(jié)合具體SOC的速率限制和外設需求,靈活調(diào)整配置參數(shù),確保SPI通信穩(wěn)定可靠。


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5208

    文章

    20620

    瀏覽量

    336718
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11806

    瀏覽量

    219503
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    RK3562 單板機多媒體開發(fā)完全手冊:視頻輸入輸出與 GStreamer 案例詳解(二)

    800x480@60fps 視頻解碼與 LVDS 顯示。文檔詳解 GStreamer 元件配置、管道鏈接及測試步驟,明確關(guān)鍵代碼邏輯。創(chuàng)龍科技通過硬件能力解析與實操案例,幫助開發(fā)者高效掌握視頻解碼技術(shù),適用于智能終端、工業(yè)可視
    的頭像 發(fā)表于 03-17 09:49 ?173次閱讀
    <b class='flag-5'>RK</b>3562 單板機多媒體<b class='flag-5'>開發(fā)完全</b>手冊:視頻輸入輸出與 GStreamer 案例詳解(二)

    瑞芯微RK3506 Flexbus技術(shù)開發(fā)指南,從原理、內(nèi)核配置測試的完整攻略

    基于觸覺智能的RK3506核心板/開發(fā)板,介紹FlexBus總線的技術(shù)架構(gòu)、設備樹配置、驅(qū)動實現(xiàn)與測試方法,為嵌入式
    的頭像 發(fā)表于 03-14 07:24 ?499次閱讀
    瑞芯微<b class='flag-5'>RK</b>3506 Flexbus技術(shù)<b class='flag-5'>開發(fā)指南</b>,從原理、內(nèi)核<b class='flag-5'>配置</b>到<b class='flag-5'>測試</b>的完整攻略

    RK3562 單板機圖形用戶界面開發(fā)完全手冊:Qt Creator 配置與 LVGL 案例詳解(二)

    本節(jié)為創(chuàng)龍科技RK3562 單板機 Qt 開發(fā)指南,核心包含開發(fā)環(huán)境配置、工程編譯、網(wǎng)絡調(diào)試及實戰(zhàn)案例。詳細說明 Qt Creator 交叉編譯工具鏈、Debuggers、Kits
    的頭像 發(fā)表于 02-27 10:42 ?6240次閱讀
    <b class='flag-5'>RK</b>3562 單板機圖形用戶界面<b class='flag-5'>開發(fā)完全</b>手冊:Qt Creator <b class='flag-5'>配置</b>與 LVGL 案例詳解(二)

    RK3562 單板機圖形用戶界面開發(fā)完全手冊:Qt Creator 配置與 LVGL 案例詳解(一)

    本節(jié)為創(chuàng)龍科技RK3562 單板機 Qt 開發(fā)指南,核心包含開發(fā)環(huán)境配置、工程編譯、網(wǎng)絡調(diào)試及實戰(zhàn)案例。詳細說明 Qt Creator 交叉編譯工具鏈、Debuggers、Kits
    的頭像 發(fā)表于 02-26 11:41 ?1506次閱讀
    <b class='flag-5'>RK</b>3562 單板機圖形用戶界面<b class='flag-5'>開發(fā)完全</b>手冊:Qt Creator <b class='flag-5'>配置</b>與 LVGL 案例詳解(一)

    RK3562 單板機 Linux-RT 系統(tǒng)開發(fā)指南:內(nèi)核配置、實時性優(yōu)化與案例詳解

    本文為創(chuàng)龍科技RK3562 單板機 Linux-RT 開發(fā)指南,核心聚焦實時內(nèi)核的性能測試開發(fā)應用。內(nèi)容包括 Linux 與 Linux-RT 實時性對比、CPU 負載
    的頭像 發(fā)表于 02-10 11:49 ?1.8w次閱讀
    <b class='flag-5'>RK</b>3562 單板機 Linux-RT 系統(tǒng)<b class='flag-5'>開發(fā)指南</b>:內(nèi)核<b class='flag-5'>配置</b>、實時性<b class='flag-5'>優(yōu)化</b>與案例詳解

    RK平臺新聲卡添加與驅(qū)動調(diào)試指南

    在瑞芯微(RK平臺的嵌入式系統(tǒng)開發(fā)中,音頻功能的實現(xiàn)核心依賴于 Sound Card(聲卡)的正確配置驅(qū)動調(diào)試。
    的頭像 發(fā)表于 02-09 16:42 ?979次閱讀
    <b class='flag-5'>RK</b><b class='flag-5'>平臺</b>新聲卡添加與<b class='flag-5'>驅(qū)動</b>調(diào)試<b class='flag-5'>指南</b>

    RK3562 單板機系統(tǒng)開發(fā)完全手冊:U-Boot/Kernel/Rootfs 開發(fā)與性能優(yōu)化

    本文為創(chuàng)龍科技RK3562 單板機 Linux 系統(tǒng)開發(fā)指南,核心包含 SDK 配置、內(nèi)核與文件系統(tǒng)開發(fā)、分區(qū)配置及 CPU/GPU/NPU
    的頭像 發(fā)表于 02-05 17:20 ?500次閱讀
    <b class='flag-5'>RK</b>3562 單板機系統(tǒng)<b class='flag-5'>開發(fā)完全</b>手冊:U-Boot/Kernel/Rootfs <b class='flag-5'>開發(fā)</b>與性能<b class='flag-5'>優(yōu)化</b>

    RK平臺UART開發(fā)!從驅(qū)動配置測試全流程

    完善的 UART 開發(fā)支持,本文將結(jié)合官方開發(fā)指南,從功能特點、驅(qū)動配置、測試驗證三個維度,帶大家快速掌握
    的頭像 發(fā)表于 02-04 17:44 ?2071次閱讀
    <b class='flag-5'>RK</b><b class='flag-5'>平臺</b>UART<b class='flag-5'>開發(fā)</b>!從<b class='flag-5'>驅(qū)動</b><b class='flag-5'>配置</b>到<b class='flag-5'>測試</b>全流程

    RK?平臺升級開發(fā):全場景方案與實踐指南,覆蓋常規(guī)系統(tǒng)和ab系統(tǒng)

    ? ? ? ? ? ? 在嵌入式 Linux 開發(fā)領(lǐng)域,瑞芯微( Rockchip )平臺憑借其穩(wěn)定的性能和豐富的生態(tài)支持,被廣泛應用于各類智能設備中。而設備的升級功能作為保障產(chǎn)品生命周期、優(yōu)化
    的頭像 發(fā)表于 01-13 15:35 ?1433次閱讀
    <b class='flag-5'>RK</b>?<b class='flag-5'>平臺</b>升級<b class='flag-5'>開發(fā)</b>:全場景方案與實踐<b class='flag-5'>指南</b>,覆蓋常規(guī)系統(tǒng)和ab系統(tǒng)

    實戰(zhàn)復盤:RK3588 SPI+PCIe3x4方案啟動修復,從節(jié)點配置驅(qū)動適配全解析

    ? ? ? 在 RK3588 嵌入式項目中, “ 接口配置不匹配 ” 是高頻踩坑點 —— 近期 基于 linux6.1 內(nèi)核 調(diào)試 SPI 閃存 +PCIe3x4 外設 方案時,就遇到了 “eMMC
    的頭像 發(fā)表于 01-08 10:24 ?688次閱讀
    實戰(zhàn)復盤:<b class='flag-5'>RK</b>3588 <b class='flag-5'>SPI</b>+PCIe3x4方案啟動修復,從節(jié)點<b class='flag-5'>配置</b>到<b class='flag-5'>驅(qū)動</b>適配全解析

    釋放多屏潛能:迅為RK3588開發(fā)板Android多屏同顯開發(fā)完全指南

    釋放多屏潛能:迅為RK3588開發(fā)板Android多屏同顯開發(fā)完全指南
    的頭像 發(fā)表于 12-16 16:11 ?1039次閱讀
    釋放多屏潛能:迅為<b class='flag-5'>RK</b>3588<b class='flag-5'>開發(fā)</b>板Android多屏同顯<b class='flag-5'>開發(fā)完全</b><b class='flag-5'>指南</b>

    避坑指南!RK3568開發(fā)板選型,這5點沒看清千萬別下手!(附迅為驅(qū)動開發(fā)指南資源)

    避坑指南!RK3568開發(fā)板選型,這5點沒看清千萬別下手!(附迅為驅(qū)動開發(fā)指南資源)
    的頭像 發(fā)表于 10-30 15:49 ?1045次閱讀
    避坑<b class='flag-5'>指南</b>!<b class='flag-5'>RK</b>3568<b class='flag-5'>開發(fā)</b>板選型,這5點沒看清千萬別下手!(附迅為<b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)指南</b>資源)

    迅為RK3568?重制版RK3568驅(qū)動指南全面升級

    迅為RK3568 重制版RK3568驅(qū)動指南全面升級
    的頭像 發(fā)表于 07-28 15:25 ?3462次閱讀
    迅為<b class='flag-5'>RK</b>3568?重制版<b class='flag-5'>RK</b>3568<b class='flag-5'>驅(qū)動</b><b class='flag-5'>指南</b>全面升級

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

    迅為RK3568開發(fā)驅(qū)動指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入
    的頭像 發(fā)表于 05-29 14:05 ?1154次閱讀
    迅為<b class='flag-5'>RK</b>3568<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>驅(qū)動</b><b class='flag-5'>指南</b>GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入

    迅為RK3568開發(fā)驅(qū)動指南GPIO子系統(tǒng)三級節(jié)點操作函數(shù)實驗

    迅為RK3568開發(fā)驅(qū)動指南GPIO子系統(tǒng)三級節(jié)點操作函數(shù)實驗
    的頭像 發(fā)表于 05-26 15:39 ?1654次閱讀
    迅為<b class='flag-5'>RK</b>3568<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>驅(qū)動</b><b class='flag-5'>指南</b>GPIO子系統(tǒng)三級節(jié)點操作函數(shù)實驗