在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

瑞芯微RK3506核心板/開發板SPI Slave從設備開發攻略

觸覺智能 ? 2025-06-26 11:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

內核SPI Slave軟件簡介

SPI主從之間傳輸通常遵循特定協議,如SPI Nor 兼容 JEDEC SDFP 協議,瑞芯微RK SPI slave 作為設備端傳輸也應遵循特定的協議,由于協議無范式,所以RK提供自定義的傳輸協議和設備驅動以供客戶參考。

Linux SPI slave驅動框架限制:使用傳輸隊列,雖然隊列喚醒后的線程優先級較高,但受調度影響不能完全保證實時性。

瑞芯微RK SPI slavemode限制:每次傳輸需重新發起SPI控制器配置,因此為確保SPImaster能夠獲知RK SPI slave完成傳輸配置從而發起數據傳輸,RKSPIslave端需增加side-band信號做ready狀態位。

本文基于

觸覺智能RK3506星閃開發板

演示SPI Slave從設備開發,其配套RK3506核心板(3核A7+M0多核異構),100%全國產,峰值功耗低至0.65W。

瑞芯微RK SPI slave 傳輸協議


  • RK SPI Slave 傳輸基本流程

數據傳輸要求指定ready-gpios來通知SPI master分為5個部分:

(1)Slave 主動發起 spi_syncstep(2)Slave ready,使能 GPIO_SlV_READY 信號(3)master 確認 Slave ready 后發起傳輸(4)Slave 接收來自 master 發出的足夠的 clk 后完成傳輸(5)Slave idle,釋放 GPIO_SlV_READY 信號

wKgZPGhcwAOAcdgyAAEMUJS08yo074.png


  • 定義兩種包類型

包括ctrl packet:2B cmd,2B addr(RK slave 定義的 application buffer 偏移地址),4B data(通常用于指定之后 data 包的傳輸長度)和data packet。


  • 定義兩種傳輸類型

ctrl 傳輸(僅包含 1 ctrl packet),以及data 傳輸(包含1 ctrl packet 和 1 data packet 的兩筆 SPI 傳輸)。


  • spidev_rkslv 支持 SPI_OBJ_APP_RAM_SIZE 長度的 application buffer 用于緩存傳輸數據,SPI master發起的 data 傳輸 1 ctrl packet 2B addr 指向該緩存偏移地址
  • 設備驅動

驅動源碼:

drivers/spi/spidev-rkslv.c drivers/spi/spidev-rkmst.c


源碼簡介:

static int spidev_rkslv_ctrl_receiver_thread(void *p) //建立線 程,線程內重復發起傳輸 { while (1) spidev_rkslv_xfer(spidev); drivers/spi/spidev-rkmst.c: 實現業務 } static int spidev_rkslv_xfer(struct spidev_rkslv_data *spidev) //傳輸入口 { spidev_slv_read(spidev, spidev->ctrlbuf, SPI_OBJ_CTRL_MSG_SIZE); //1 ctrl packet,獲取并解析傳輸類型 switch (ctrl->cmd) { //1 data packet,根據傳輸類型,定義 data packet 并完成收發 case SPI_OBJ_CTRL_CMD_INIT: /* to-do */ case SPI_OBJ_CTRL_CMD_READ: /* to-do */ case SPI_OBJ_CTRL_CMD_WRITE: /* to-do */ case SPI_OBJ_CTRL_CMD_DUPLEX: /* to-do */ } } static const struct file_operations spidev_rkslv_misc_fops = {} //注冊 misc device 測試接口


drivers/spi/spidev-rkmst.c說明:

static int spidev_rkmst_xfer(struct spidev_rkmst_data *spidev, void *tx, void *rx, u16 addr, u32 len) //傳輸入口 { spidev_rkmst_ctrl(spidev, cmd, addr, len); //1 ctrl packet,定義傳輸類型 switch (cmd) { //1 data packet,根據傳輸類型,定義 data packet 并完成收發 case SPI_OBJ_CTRL_CMD_READ: /* to-do */ case SPI_OBJ_CTRL_CMD_WRITE: /* to-do */ case SPI_OBJ_CTRL_CMD_DUPLEX: /* to-do */ } } static const struct file_operations spidev_rkmst_misc_fops = {} //注冊 misc device 測試接口


  • 業務實現形式
wKgZPGhcwCqADNV2AAGkpvG_PAA508.png

SPI Slave 測試設備配置


  • SPI master 發起單包數據傳輸測 :

echocmd addr length > /dev/spidev_rkmst_misc

說明:cmd :支持 read/write/duplex;addr:為對端 slave application buffer 偏移,單位 Bytes,僅支持 10 進制輸入;length:為 data packet 長度,單位 Bytes,僅支持 10 進制輸入;

實例如下:

echo write 128 128 > /dev/spidev_rkmst_misc echo read 128 128 > /dev/spidev_rkmst_misc echo duplex 128 128 > /dev/spidev_rkmst_misc

  • SPI master 發起自動化測試 :

echoautotest length loops compare > /dev/spidev_rkmst_misc

說明:autotest:固定輸入,先測試全雙工數據傳輸,再測試讀寫數據傳輸,并輸出速率結果;測試默認使用對端 slave application buffer 偏移地址 0;

length:為 data packet 長度,單位 Bytes,僅支持 10 進制輸入;loops:設定壓測循環次數;

compare:1 - 開啟數據校驗;0 - 關閉數據校驗(支持特定場景,如持續輸出數據進行信號測試);

實例如下:

echoautotest1024641> /dev/spidev_rkmst_misc

  • SPI master 發起自動化測試 :

echo appmem 0 256 > ./dev/spidev_rkslv_misc #打印 application buffer 數據 echo verbose 1 > ./dev/spidev_rkslv_misc #開啟傳輸傳輸過程 debug log,echo verbose 0 關閉打印

SPI Slave常見問題

  • SPI 無信號

調試前確認驅動有跑起來;確保 SPI 4個引腳的IOMUX配置無誤;

確認TX 引腳有正常的波形,CLK有正常的 CLOCK 信號,CS信號有拉低;

如果clk頻率較高,可以考慮提高驅動強度來改善信號;

如何簡單判斷SPI DMA 是否使能,串口打印如無以下關鍵字,則DMA 使能成功:

[ 0.457137]Failedtorequest TX DMA channel [ 0.457237] Failed to request RX DMA channel


  • 延時采樣時鐘配置方案

對于 SPI io 速率較高的情形,正常 SPI mode 可能依舊無法匹配外接器件輸出延時,RK SPI master read 可能無法采到有效數據,需要啟用 SPI rsd 邏輯來延遲采樣時鐘。


  • SPI 傳輸方式說明

(1)默認傳輸模式

master mode 支持 IRQ、DMA 和 CPU 傳輸,slave mode 支持 IRQ 和 DMA 傳輸,默認都為 IRQ/DMA 組合傳輸方式:

當傳輸長度 < fifo 深度時,使用 IRQ 傳輸,默認使用 4.19 及以上內核版本的SOC,fifo 深度為64;

當傳輸長度 >= fifo 深度時,使用DMA傳輸;


(2)修改傳輸模式

master mode支持:

默認IRQ/DMA 組合傳輸方式;

參考 ”關閉 DMA 支持,僅支持 IRQ 傳輸;“ 說明,關閉 DMA,配置后僅支持IRQ 傳輸;

參考”rockchip,poll-only“ 說明,配置后僅支持CPU傳輸;

slave mode 不支持修改傳輸模式。


(3)IRQ傳輸特性

當數據 < fifo 深度時,一次傳觸發 1 個中斷,當數據 >= fifo 深度且使用 IRQ 傳輸時,fifo 水線設置為半 fifo,通常為 32 item,一次傳輸大致上觸發 items / 32 次中斷。


(4)DMA 傳輸特性

不觸發 spi 控制器中斷,使用 DMA 傳輸 finished call back 回調



  • SPI 傳輸速率及 CPU 占用率高優化方向

通常 SPI 傳輸速率慢、IO 高負載下 CPU 占用率高的原因是因為:SPI 傳輸粒度小,且傳輸次數多,頻繁發起傳輸從而涉及較多的調度。建議優化方向:

1. 開啟 auto runtime,延時設置為 500ms,具體值以實測為準,修改點為 dts 節點添加rockchip,autosuspend-delay-ms 屬性;

2. 降低 CPU 負載:改用 IRQ 傳輸,相對 DMA 可能會有優勢,補丁參考 “改為 IRQ 傳輸” 小節;

3. 降低 CPU 負載:如為 DMA 傳輸,可修改 TX DMA 水線來降低 CPU 在 DMA 回調函數中等待 fifo傳輸完成的時間,補丁參考 “修改 SPI 水線。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 瑞芯微
    +關注

    關注

    25

    文章

    560

    瀏覽量

    52298
  • 觸覺智能
    +關注

    關注

    1

    文章

    55

    瀏覽量

    549
  • RK3506
    +關注

    關注

    0

    文章

    35

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    如何用RK3506核心板自研一款嵌入式工業網關?

    飛凌嵌入式RK3506核心板做工業網關
    的頭像 發表于 03-19 16:32 ?1090次閱讀
    如何用<b class='flag-5'>RK3506</b><b class='flag-5'>核心板</b>自研一款嵌入式工業網關?

    米爾多核異構低功耗RK3506核心板重磅發布

    近日,米爾電子發布MYC-YR3506核心板開發板,基于國產新一代入門級工業處理器
    發表于 05-16 17:20

    RK3568核心板/評估/開發板/工控用戶手冊

    最新版本RK3568核心板/評估/開發板/工
    發表于 08-01 14:00 ?75次下載

    RK3506各型號該怎么選?全新工業芯片介紹 觸覺智能出品

    RK3506各型號該怎么選?全新工業芯片介紹,還將推出與星閃技術相結合的RK3506星閃網關開發板
    的頭像 發表于 12-25 10:27 ?1345次閱讀
    <b class='flag-5'>RK3506</b>各型號該怎么選?<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>全新工業芯片介紹 觸覺智能出品

    RK3506到底有多香?搶先看核心板詳細參數配置

    RK3506到底有多香?觸覺智能已推出RK3506核心板,搶先了解核心板詳細參數配置!
    的頭像 發表于 01-18 11:33 ?1574次閱讀
    <b class='flag-5'>RK3506</b>到底有多香?搶先看<b class='flag-5'>核心板</b>詳細參數配置

    性價比天花?觸覺智能發布RK3506核心板(寬溫級RK3506 工業級RK3506J)

    深圳觸覺智能SOM3506核心板現已上市,搭載RK3506B/J超低功耗處理器(1.5GH
    的頭像 發表于 03-07 10:35 ?732次閱讀
    性價比天花<b class='flag-5'>板</b>?觸覺智能發布<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b><b class='flag-5'>核心板</b>(寬溫級<b class='flag-5'>RK3506</b> 工業級<b class='flag-5'>RK3506</b>J)

    【技術簡析】觸覺智能RK3506 Linux星閃網關開發板有什么奧妙?

    在工業智能化與物聯網深度融合的今天,深圳觸覺智能推出首款搭載RK3506芯片的Linux星閃網關開發板,以“多核異構架構+星閃無線通信
    的頭像 發表于 03-21 11:58 ?608次閱讀
    【技術簡析】觸覺智能<b class='flag-5'>RK3506</b> Linux星閃網關<b class='flag-5'>開發板</b>有什么奧妙?

    觸覺智能RK3506核心板,工業應用之RK3506 RT-Linux實時性測試

    觸覺智能RK3506核心板,工業應用方案分享之RT-Linux實時性測試
    的頭像 發表于 04-27 19:27 ?359次閱讀
    觸覺智能<b class='flag-5'>RK3506</b><b class='flag-5'>核心板</b>,工業應用之<b class='flag-5'>RK3506</b> RT-Linux實時性測試

    RK3506開發板必備之LVGL應用開發手冊,深圳觸覺智能出品

    SDL送顯。目前RK3506平臺可支持SDL送顯。本文基于觸覺智能RK3506星閃開發板進行演示,配套RK3506核心板(3核A7@1.5G
    的頭像 發表于 04-27 19:31 ?354次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b><b class='flag-5'>開發板</b>必備之LVGL應用<b class='flag-5'>開發</b>手冊,深圳觸覺智能出品

    RK3506開發板之Qt應用開發手冊(上) 深圳觸覺智能出品,嵌入式方案商

    RK3506開發板必備攻略之Qt應用開發手冊(
    的頭像 發表于 04-28 17:16 ?455次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b><b class='flag-5'>開發板</b>之Qt應用<b class='flag-5'>開發</b>手冊(上) 深圳觸覺智能出品,嵌入式方案商

    RK3506開發板Ethercat主站適配開發詳細攻略,實測微秒級抖動延遲!

    RK3506開發板Ethercat主站適配開發詳細攻略
    的頭像 發表于 05-09 15:57 ?638次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b><b class='flag-5'>開發板</b>Ethercat主站適配<b class='flag-5'>開發</b>詳細<b class='flag-5'>攻略</b>,實測微秒級抖動延遲!

    米爾基于RK3506核心板開發板

    MYC-YR3506核心板開發板新一代入門級國產工業處理器RK3506,3核A7+單核M0多核異構RK3506B:3*Cortex-A7@
    發表于 05-15 16:00 ?3次下載

    有獎丨米爾 RK3506開發板免費試用

    米爾與合作發布的新品基于RK3506應用
    的頭像 發表于 06-19 08:04 ?209次閱讀
    有獎丨米爾 <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b><b class='flag-5'>開發板</b>免費試用

    RK3506 vs NXP i.MX6ULL

    在關鍵技術國產化浪潮中,國產芯片正以更高性能、更優成本及自主可控優勢實現對海外方案的成功替代。今天觸覺智能拿出自家新品RK3506核心板
    的頭像 發表于 06-19 16:26 ?354次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b> vs NXP i.MX6ULL

    RK3506開發板必備攻略之Qt應用開發手冊(下),觸覺智能工控嵌入式方案商

    本文基于觸覺智能RK3506星閃開發板Buildroot系統進行演示,配套RK3506核心板(3核A7+M0多核異構)寬溫級59元/工業級68元BuildrootSDK安裝與環境搭建S
    的頭像 發表于 06-19 17:49 ?191次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3506</b><b class='flag-5'>開發板</b>必備<b class='flag-5'>攻略</b>之Qt應用<b class='flag-5'>開發</b>手冊(下),觸覺智能工控嵌入式方案商
    主站蜘蛛池模板: 日韩高清特级特黄毛片 | 成人小视频在线 | 成年女人毛片免费视频 | 欧美成人性高清观看 | 美女网站色在线观看 | 一级做a爰片久久毛片一 | 人人天天夜夜 | 女人张开腿等男人桶免费视频 | 久久精品伊人波多野结 | 精品国产自在在线在线观看 | 91学院派女神| 天天插天天透 | 特黄日韩免费一区二区三区 | 国产三及 | 色婷婷久久免费网站 | 亚洲爱爱网站 | 欧美成人eee在线 | 四虎在线观看免费永久 | 一区二区亚洲视频 | 很黄很暴力 很污秽的小说 很黄很黄叫声床戏免费视频 | www一级毛片 | 6969精品视频在线观看 | 国模谢心2013.05.06私拍 | 成人精品视频一区二区三区 | 五月天婷婷免费视频观看 | 日本有色视频 | 天堂8在线天堂资源在线 | 亚洲涩综合 | 天堂成人在线观看 | 亚洲日本免费 | 亚洲国产女人aaa毛片在线 | 手机视频在线播放 | 亚洲一区二区精品推荐 | 男啪女色黄无遮挡免费观看 | 一区卡二区卡三区卡视频 | 激情有码 | 婷婷资源| 91色在线视频 | 全免费一级午夜毛片 | 日韩一级欧美一级在线观看 | 天天爽夜夜春 |