前言
MCAL的作用是隔離硬件,對(duì)上提供統(tǒng)一的標(biāo)準(zhǔn)接口。前面的MCAL_ADC文章<<AUTOSAR-MCAL--ADC模塊詳解>>已經(jīng)基于RenesasRH850芯片詳細(xì)介紹過(guò)ADC模塊了,由于最近開(kāi)始使用Infineon TC3xx芯片,在配置ADC模塊的時(shí)候發(fā)現(xiàn)ADC模塊對(duì)上提供的標(biāo)準(zhǔn)接口是一樣的,在切換芯片的時(shí)候,IoHwAb_ADC模塊基本不用修改,但是對(duì)于具體ADC模塊的配置,和芯片特性強(qiáng)相關(guān)的地方還是有很多地方(AUTOSAR MCAL標(biāo)準(zhǔn)定義的配置項(xiàng)都是一樣的),本文將詳細(xì)介紹基于Infineon TC3xx芯片MCAL_ADC模塊特有的一些配置功能。
正文
1.TC377芯片ADC硬件資源
在配置一個(gè)MCAL模塊的時(shí)候主要關(guān)注這個(gè)模塊的三個(gè)特性:
1)ADC硬件單元:ADC模塊有多少個(gè)ADC硬件單元Unit,每個(gè)Unit有多少個(gè)通道Channel,這樣我們就可以知道這個(gè)ADC模塊最大可以配置多少路ADC數(shù)據(jù)了。
2) ADC時(shí)鐘源:知道ADC時(shí)鐘源和可以使用的分頻系數(shù)就可以知道ADC模塊最大/小的使用時(shí)鐘頻率了(時(shí)鐘頻率在ADC模塊作用不是特別明顯,在配置PWM/ICU模塊的時(shí)候就非常重要)。
3) ADC中斷源:使用ADC轉(zhuǎn)換完成中斷的話(huà)就需要知道使用的中斷源,也就是每個(gè)Unit/Group的中斷號(hào),這個(gè)中斷號(hào)在配置OS的ISR的時(shí)候需要用到。
Note: 如果是新手的話(huà),查看TC3xx系列芯片共有的特性應(yīng)該查看下圖的文檔:
查看TC37x具體芯片的硬件資源情況需要查看下圖的另一份文檔:
兩份文檔需要結(jié)合起來(lái)看,才能找到自己想要的東西。
1.1ADC硬件單元
TC37xx有8組ADC采集單元,Group0-8是Primary Groups,Group8-11是Secondary Groups,每組Primary Group有8個(gè)Channels,每組Secondary Group有18個(gè)Channels,總共可以同時(shí)采集8*4 + 16*4 = 96路ADC值。
1.2.ADC時(shí)鐘源
ADC模塊使用fADC作息模塊參考時(shí)鐘,fADC的具體配置在MCU模塊(后面分析TC3xxMCU模塊的時(shí)候再具體分析)。
1.3ADC中斷源
Group0-3的ISR中斷地址計(jì)算公式為:0x670 + x*0x10 + y*0x4,其中x為Group號(hào),也就是0/1/2/3,y是選擇那一路Service Request輸出。
那這個(gè)y值怎么確定?-- 見(jiàn)下文分析
Group 0可以配置使用G0SR0-3中的一路作為中斷輸入請(qǐng)求信號(hào)。
通過(guò)配置GxSEVNP寄存器的SEViNP位域可以選擇使用那一路Service Request Line。
不過(guò)需要注意的是在EB的MCAL_ADC配置項(xiàng)里面沒(méi)有關(guān)于每個(gè)Group的Service Request的配置項(xiàng),所以GxSEVNP寄存器的SEViNP位域?yàn)槟J(rèn)值0。
綜上所訴,我們得出Group0使用的中斷服務(wù)的地址為:
Group0的ISR中斷地址:0x670 + 0*0x10 + 0*0x4 = 0x670,其他Group使用的中斷服務(wù)的地址以此類(lèi)推。
2. TC3XX MCAL特有的配置
2.1 External Multiplexer Control
在TC3xx的ADC模塊的General配置屬性里面有關(guān)于Emux相關(guān)的配置選項(xiàng),這些配置參數(shù)不是AUTOSAR_MCAL標(biāo)準(zhǔn)定義的,是TC3xx芯片特有的。
從上文可以 得知TC37x總共可以同時(shí)采集96路ADC,如果項(xiàng)目中采集的ADC超過(guò)96路(芯片引腳又足夠用)該怎么辦?-- 換更多Pin腳的芯片顯然不劃算,那就可以考慮TC3xx的EVADC模塊硬件實(shí)現(xiàn)的外部多路復(fù)用器的功能,簡(jiǎn)單的來(lái)講,就是使用一路ADC通道可以采集最多八路的ADC信號(hào),具體由Emux相關(guān)寄存器配置實(shí)現(xiàn)。
一般情況,ADC通道足夠,在配置MCAL_ADC的時(shí)候不用配置EMUX,了解有這個(gè)特性即可。
2.2 Input Class Register
在ADC 模塊的頂層配置容器里面有一個(gè)全局(Global)的配置容器ADCGlobalInputClass。
在AdcHwUnit配置容易下面有一個(gè)AdcHwUnitInputClass的子配置。
AdcChannel配置容器下的每一路Channel都會(huì)引用一個(gè)AdcInputClass,可以選擇Globl的InputClass,也可以選擇每一個(gè)HwUinit下的Input Class。
那這個(gè)Input Class 到底是什么了? -- 查看芯片手冊(cè)
配置InputClass其實(shí)就是配置GxlCLASSi和GLOBICLASSi系列寄存器。
翻譯過(guò)來(lái)就是:全局輸入類(lèi)寄存器為通過(guò)其通道控制寄存器GxCHCTRy中的位字段ICLSEL選擇它們的相應(yīng)組的每個(gè)通道定義采樣時(shí)間和數(shù)據(jù)轉(zhuǎn)換模式。
翻譯過(guò)來(lái):特定于組的輸入類(lèi)寄存器為通過(guò)其通道控制寄存器GxCHCTRy中的位字段ICLSEL選擇它們的任何組的每個(gè)通道定義采樣時(shí)間和數(shù)據(jù)轉(zhuǎn)換模式。
也就是說(shuō)Input Class在配置每個(gè)AdcChannel的采樣時(shí)間、轉(zhuǎn)換模式(具體哪些模式可以參考芯片手冊(cè))、預(yù)充電時(shí)間等輸入屬性,個(gè)人覺(jué)得如果沒(méi)有特殊性能要求的話(huà),這些可選屬性維持默認(rèn)配置就可以了。
3.總結(jié)
現(xiàn)在的芯片手冊(cè)基本都快上萬(wàn)頁(yè)了,在接觸一塊新的芯片的時(shí)候先把芯片手冊(cè)看完,基本是不可能的,就算看完也記不住,所有只有等需要解決疑惑的時(shí)候帶著問(wèn)題的查手冊(cè),才是比較合適的學(xué)習(xí)方法。
-
模塊
+關(guān)注
關(guān)注
7文章
2714瀏覽量
47508 -
接口
+關(guān)注
關(guān)注
33文章
8611瀏覽量
151247 -
adc
+關(guān)注
關(guān)注
98文章
6501瀏覽量
544771 -
AUTOSAR
+關(guān)注
關(guān)注
10文章
362瀏覽量
21608 -
Infineon
+關(guān)注
關(guān)注
2文章
92瀏覽量
29091
原文標(biāo)題:AUTOSAR MCAL-基于Infineon TC3xx芯片的ADC模塊
文章出處:【微信號(hào):汽車(chē)電子嵌入式,微信公眾號(hào):汽車(chē)電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論