91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

3天內不再提示

AUTOSAR中的IIC如何實現(xiàn)和配置

嵌入式軟件實戰(zhàn)派 ? 來源:嵌入式軟件實戰(zhàn)派 ? 作者:嵌入式軟件實戰(zhàn)派 ? 2022-12-12 09:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

IIC不是AUTOSAR MCAL的標準模塊,本文探討IIC的MCAL實現(xiàn)方式,以及Vector AUTOSAR IIC的配置方法和步驟。

文末提供限時PDF版分享,敬請關注。

1. IIC在AUTOSAR中的“地位” 首先,我們看看AUTOSAR層次結構,綠色部分是MCAL。

f734d73a-79b8-11ed-8abf-dac502259ad0.png

按理說,IIC屬于MCU的驅動層,應該在MCAL里面,但是AUTOSAR的標準模塊里面并沒有包含這個IIC。

f76be1c6-79b8-11ed-8abf-dac502259ad0.png

f7aaad0c-79b8-11ed-8abf-dac502259ad0.png

如果非要按層次分,IIC只能安放在Complex Driver

f7c4b2ba-79b8-11ed-8abf-dac502259ad0.png

也許你會很好奇,為啥?MCAL和CDD有啥不一樣?如果你是初學者,建議你先把這問題放一放,看我下面的講解。

2. IIC的MCAL實現(xiàn)方式

實際上IIC也可以按照MCAL的方式來實現(xiàn),Vector就給出了直接的解決方案,就把IIC當MCAL來實現(xiàn)了。 下文,只針對AUTOSAR如何使用和配置IIC做講解,不詳細講解IIC的底層通信原理,但可能會提到一些概念,如果對IIC的通信原理感興趣,請在網上搜索學習。 AUTOSAR標準里面有很多MCAL的實現(xiàn)規(guī)范,其實IIC也可以參考其方式來實現(xiàn),例如SPI。 傳送門:點擊鏈接查看《MCAL SPI Module原理和配置詳解》 AUTOSAR的SPI規(guī)范中提出了Channel和Sequence的概念。

f7d564de-79b8-11ed-8abf-dac502259ad0.png

同時在傳輸數(shù)據(jù)用的接口是這幾個:Spi_SetupEB,然后Spi_AsyncTransmit 那么IIC也可以做這樣的Channel和Sequence,也可以按照SPI的方法做I2c_SetupEB和I2c_AsyncTransmit這樣的接口。

I2c_SetupEB

I2c_SetupEBDynamic

I2c_Asynctransmit

I2c_GetResult

I2c_GetStatus

I2c_Cancel

I2c_SequenceEndNotification

如果你沒詳細研究過這些概念或者接口,你肯定是一頭霧水。

接下來簡單講解下。 Channel是IIC總線上的最小數(shù)據(jù)單位,這些創(chuàng)建好的Channels是用于各種用途的。 我們做IIC應用軟件時,通常會用一個buffer存儲數(shù)據(jù)然后發(fā)給IIC設備,而大部分IIC設備一般需要在傳輸data前,需要傳輸register或者address這樣的內容,那么像這樣的address和data就可以做成兩個不同的channel。 理解channel的概念后,這樣還可以拓展下另一個概念Channel lists,channel list是多個channel的組合,例如往IIC設備寫數(shù)據(jù),得先發(fā)address然后跟著數(shù)據(jù),這是有順序的一系列傳輸,即可以把這address和data兩個channel組合起來成為一個Channel list。 怎么發(fā)送這個Channel lists呢,這就需要一個叫Sequence的東西了。 Sequence是IIC總線上傳輸?shù)淖钚≡訂挝唬磗equence里面包含的channel list內容是不希望被打斷的。 能理解嗎?有點繞?以IIC設備EEPROM講解下可能更容易理解點。

Eep_WriteSequence

I2cChannelWriteCmd

I2cChannelWriteData (chained)

Eep_ReadSequence

I2cChannelReadCmd

I2cChannelReadData

Eep_AckSequence

I2cChannelAck

上面,怎么給EEPROM寫數(shù)據(jù)呢?I2cChannelWriteCmd首先將EEPROM的address發(fā)過去,這個地址就是你想寫數(shù)據(jù)的地址哈,接著再通過I2cChannelWriteData發(fā)想寫入的data。(咦?上面的chained是啥玩意?等等別急。) 有那么一點點概念了吧。 接著,你又會問I2c_SetupEB和I2c_AsyncTransmit怎么跟這些Channel和Sequence扯上關系呢? 那就再拿出幾個栗子來看看吧,手把手教到你懂。 以下按7-bit地址講解。

例子1:給0x20地址設備發(fā)送10個字節(jié)的數(shù)據(jù)。

I2c_SetupEB(Channel,Buffer,NULL_PTR,10)
I2c_AsyncTransmit(Sequence)

這個很簡單,就是直接理解為IIC直接將address和data一起發(fā)出去。

f7f6b6c0-79b8-11ed-8abf-dac502259ad0.png

*注:途中的S表示IIC的Start,RS表示ReStart,P表示Stop,下同

例子2:由兩個不同Channel組成的Sequence,給0x20地址設備發(fā)送2和8個字節(jié)的數(shù)據(jù)。

I2c_SetupEB(CH01,Buffer0,NULL_PTR,2)
I2c_SetupEB(CH02, Buffer1, NULL_PTR, 8)
I2c_AsyncTransmit(Sequence)

這個也很簡單,不帶Chain特性的,IIC會重新發(fā)起Start,即restart。

f8222652-79b8-11ed-8abf-dac502259ad0.png

例子3:由三個不同Channel組成的Sequence,給0x20地址設備發(fā)送2、8和4個字節(jié)的數(shù)據(jù)。其中CH03這個Channel是帶Chain的。

I2c_SetupEB(CH01, Buffer0, NULL_PTR, 2)
I2c_SetupEB(CH02, Buffer1, NULL_PTR, 8)
I2c_SetupEB(CH03,Buffer2,NULL_PTR,4)
I2c_AsyncTransmit(Sequence)

因為CH03帶Chain,所以是接著CH02發(fā)的,沒有restart。

f83815de-79b8-11ed-8abf-dac502259ad0.png

Chain的特性就可以簡單理解為,是跟上一個Channel鏈起來的,所以Chain是不可以在第一個Channel的。這個要注意。

上面講的都是基于7-bit地址的,似乎都上send或者write數(shù)據(jù)的情況。 下面講解8-bit地址,讀數(shù)據(jù)回來的情景。 其實7-bit地址和8-bit地址沒多大差別,看數(shù)值好像就是移了一位而已。

例子4:同樣給0x20地址設備發(fā)送2、8個字節(jié)的數(shù)據(jù)。其中CH02這個Channel的方向發(fā)生了變化。

I2c_SetupEB(CH01,Buffer0,NULL_PTR,2)(mastertransmitter)
I2c_SetupEB(CH02,NULL_PTR,Buffer1,8)(masterreceiver)
I2c_AsyncTransmit(Sequence)

注意上面代碼的buffer參數(shù)位置變了,即通信方向變了,下面的那個Channel CH02方向發(fā)生了改變,即IIC會重新發(fā)起start,即restart。

f84df12e-79b8-11ed-8abf-dac502259ad0.png

以上的例子應該很清晰了,我想你也應該理解了吧。 可以粗略總結下:

如果沒有Chain的話,這個Channel在發(fā)送時,IIC會Restart;

如果幾個不同Channel發(fā)送時,Channel的方向發(fā)生了變化,IIC也會Restart;

如果Channel帶Chain,那么這個IIC是不會Restart的。

這里有個問題,如果兩個Channel對應兩個不同地址,后面的Channel帶Chain,會發(fā)生什么情況呢?

例子5:Channel CH01地址是0x20,CH02地址是0x22,同時CH02是Chain的。

I2c_SetupEB(CH01, Buffer0, NULL_PTR, 2) (master transmitter)
I2c_SetupEB(CH02,Buffer1,NULL_PTR,8)(mastertransmitter)
I2c_AsyncTransmit(Sequence)

從上面的推論,CH01到CH02切換時,方向沒改變,而且是Chain的,所以波形是這樣的。

f86b1574-79b8-11ed-8abf-dac502259ad0.png

這里的CH02的地址被忽略了!可以跟上面的案例一起對比理解下。

3. IIC的AUTOSAR配置

講了這么多原理特點,那么這玩意在AUTOSAR是怎么配置使用的呢?總不能光說不練嘛!

審核編輯 :李倩

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

    關注

    7

    文章

    2837

    瀏覽量

    53277
  • IIC
    IIC
    +關注

    關注

    11

    文章

    309

    瀏覽量

    40628
  • AUTOSAR
    +關注

    關注

    10

    文章

    398

    瀏覽量

    23643

原文標題:AUTOSAR中的IIC如何實現(xiàn)和配置

文章出處:【微信號:embedded_sw,微信公眾號:嵌入式軟件實戰(zhàn)派】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【瑞薩RA × Zephyr開發(fā)板評測】+模擬IIC實現(xiàn)OLED輸出(與硬件IIC輸出的失敗經驗)

    ,進行如下配置,第一步配置時鐘(使用內部時鐘,嘗試使用XTAL,還是使能了對應引腳, 總是停在監(jiān)測時鐘指令上): 第二步設置IIC功能,注意是7位地址模式,地址為0x3C: 生成代碼,要注意定義上圖
    發(fā)表于 01-19 22:23

    RA MCU眾測寶典 | IIC之【RA2E1】IIC通信的OLED顯示

    “RAMCU眾測寶典”IIC專題上線啦!這次,瑞薩嵌入式小百科將和大家一起聚焦【瑞薩RA2E1】開發(fā)板,一步步玩轉IIC通信的OLED顯示。從IIC協(xié)議的核心原理、FSPI2CMas
    的頭像 發(fā)表于 01-01 10:04 ?1771次閱讀
    RA MCU眾測寶典 | <b class='flag-5'>IIC</b>之【RA2E1】<b class='flag-5'>IIC</b>通信的OLED顯示

    光庭信息榮獲AUTOSAR中國中心2025年度優(yōu)秀貢獻獎

    12月18日,“AUTOSAR中國中心2025年度獎項頒獎典禮暨答謝晚宴”在上海成功舉辦。繼去年榮獲“2024年度特別貢獻獎”后,光庭信息憑借在AUTOSAR組織及中國區(qū)域發(fā)展的持續(xù)深耕與突出貢獻
    的頭像 發(fā)表于 12-26 13:43 ?421次閱讀

    通信協(xié)議IIC與SPI最全對比分析

    第一點上看,IIC是明顯的大贏家。 數(shù)據(jù)吞吐傳輸速度 如果應用必須使用高速數(shù)據(jù)傳輸,那么SPI是必然的選擇。因為SPI是全雙工,IIC的不是。SPI沒有定義速度限制,一般的實現(xiàn)通常
    發(fā)表于 12-10 06:04

    基于hbirdv2-sdk的iic 0.96寸lcd調試

    , 讀寫數(shù)據(jù)函數(shù), lcd初始化, lcd顯示封裝函數(shù) iic.c: 硬件iic接口相關的定義 iic.h: iic硬件IO配置 #defi
    發(fā)表于 10-30 06:20

    如何實現(xiàn) RoCE 配置的自動同步(基礎篇) - DCBX協(xié)議

    DCBX(Data Center Bridging Exchange)協(xié)議是實現(xiàn)數(shù)據(jù)中心網絡自動化配置的核心技術,能夠顯著降低運維負擔,減少因人工配置錯誤導致的網絡故障。DCBX 為大規(guī)模組網
    的頭像 發(fā)表于 10-09 14:27 ?965次閱讀
    如何<b class='flag-5'>實現(xiàn)</b> RoCE <b class='flag-5'>配置</b>的自動同步(基礎篇) - DCBX協(xié)議

    iic只設置了時鐘和數(shù)據(jù)引腳沒有配置那個端口,rtt是怎么知道在那個端口上進行iic通信的?

    用的5.2.0版本配置iic的時鐘和數(shù)據(jù)引腳沒有配置端口,系統(tǒng)是怎么判斷使用的那個端口的那個引腳開始了通信呢?在rt——thread需要us的延時么?那個大佬解答一下啊,剛接觸這個
    發(fā)表于 09-26 07:26

    如何實現(xiàn)安全的AUTOSAR通信棧

    。未經保護的通信鏈路可能面臨數(shù)據(jù)篡改、重放攻擊及冒充攻擊等風險,危及車輛功能的正確性和用戶安全。因此,在AUTOSAR架構建立完備的通信安全機制,已成為行業(yè)共識與技術剛需。
    的頭像 發(fā)表于 09-08 16:43 ?1236次閱讀

    RT-Thread睿賽德正式加入AUTOSAR 組織,成為開發(fā)合作伙伴!

    近日,AUTOSAR宣布RT-Thread睿賽德已正式加入AUTOSAR組織成為開發(fā)合作伙伴!AUTOSAR組織AUTOSAR組織的本質是一個開發(fā)合作伙伴關系。作為全球汽車開放式系統(tǒng)架
    的頭像 發(fā)表于 09-04 17:07 ?1303次閱讀
    RT-Thread睿賽德正式加入<b class='flag-5'>AUTOSAR</b> 組織,成為開發(fā)合作伙伴!

    從手寫代碼到AUTOSAR工具鏈:J1939Tp應用篇

    J1939Tp是我學習AUTOSAR CP諸多BSW模塊的起點,其分層架構完美體現(xiàn)了AUTOSAR規(guī)范的精髓,掌握J1939Tp有助于深入理解通信(COM)相關模塊的程序執(zhí)行過程。
    的頭像 發(fā)表于 07-10 16:37 ?5154次閱讀
    從手寫代碼到<b class='flag-5'>AUTOSAR</b>工具鏈:J1939Tp應用篇

    揭秘RT-Thread上的AUTOSAR CP系統(tǒng)

    本文探討了RT-Thread與AUTOSARCP的融合,解決車載ECU開發(fā)實時性、安全性與靈活性的平衡問題。通過分層安全內核(rt-safetyos/autoos)和工具鏈整合,兼容AUTOSAR
    的頭像 發(fā)表于 06-23 20:22 ?3215次閱讀
    揭秘RT-Thread上的<b class='flag-5'>AUTOSAR</b> CP系統(tǒng)

    東軟睿馳亮相第16屆AUTOSAR開放大會

    此前,5月27日-28日,第16屆AUTOSAR開放大會(16th AUTOSAR Open Conference)在比利時布魯日成功召開,本屆大會以“AUTOSAR solutions
    的頭像 發(fā)表于 06-06 16:07 ?1619次閱讀

    光庭信息亮相第16屆AUTOSAR開放大會

    此前,當?shù)貢r間5月27日至28日,第16屆AUTOSAR開放大會 (AUTOSAR Open Conference)在比利時布魯日會議中心隆重舉行。
    的頭像 發(fā)表于 05-30 15:09 ?958次閱讀

    ZYNQ FPGA的PS端IIC設備接口使用

    zynq系列的FPGA,都會自帶兩個iic設備,我們直接調用其接口函數(shù)即可運用。使用xilinx官方提供的庫函數(shù),開發(fā)起來方便快捷。
    的頭像 發(fā)表于 04-17 11:26 ?2128次閱讀
    ZYNQ FPGA的PS端<b class='flag-5'>IIC</b>設備接口使用

    RT-Thread睿賽德正式成為AUTOSAR組織合作伙伴,攜手推動智能汽車技術新發(fā)展| 新聞速遞

    近日,上海睿賽德電子科技有限公司正式成為AUTOSAR(AUTomotiveOpenSystemARchitecture)組織的合作伙伴。RT-Thread睿賽德將與核心開發(fā)伙伴緊密合作,參與制
    的頭像 發(fā)表于 04-10 21:26 ?1258次閱讀
    RT-Thread睿賽德正式成為<b class='flag-5'>AUTOSAR</b>組織合作伙伴,攜手推動智能汽車技術新發(fā)展| 新聞速遞