YTM32 M系列芯片基于32位車規(guī)級ARM Cortex-M33內(nèi)核,CPU全溫域主頻高達(dá)120MHz,提供1.25MB嵌入式閃存,符合ISO26262的ASIL-B等級要求,可靠性滿足AEC-Q100、Grade1標(biāo)準(zhǔn),信息安全方面支持AES、SHA以及國密SM4等多種加密算法,并提供符合AUTOSAR標(biāo)準(zhǔn)的MCAL。
時(shí)鐘模塊是嵌入式軟件設(shè)計(jì)的基礎(chǔ),只有詳細(xì)了解了嵌入式芯片的時(shí)鐘結(jié)構(gòu),在實(shí)際應(yīng)用中才能使芯片發(fā)揮全部的性能,同時(shí),根據(jù)不同的應(yīng)用需求,選擇合適的時(shí)鐘源,可以同時(shí)兼顧應(yīng)用的性能需求和功耗需求,從而使系統(tǒng)設(shè)計(jì)更好的滿足應(yīng)用需求。
主要時(shí)鐘源介紹
YTM32B1ME0系列MCU時(shí)鐘模塊通過SCU統(tǒng)一管理,芯片支持PLL,F(xiàn)IRC,SIRC,F(xiàn)XOSC以及SXOSC幾種時(shí)鐘源,除了SXOSC以外,其余四種時(shí)鐘源都可以選擇為系統(tǒng)時(shí)鐘源。
- 鎖相環(huán)時(shí)鐘(PLL):PLL時(shí)鐘源需要參考內(nèi)部FIRC或者外部FXOSC晶振產(chǎn)生時(shí)鐘,PLL內(nèi)部VCO振蕩器頻率范圍為200MHz至400MHz,VCO輸出經(jīng)過二分頻后可以作為系統(tǒng)和模塊時(shí)鐘源,可配置頻率范圍為100MHz至200MHz。
- FIRC:FIRC為芯片內(nèi)部RC振蕩器,時(shí)鐘頻率是96MHz,可以直接作為系統(tǒng)和模塊的時(shí)鐘源,同時(shí)還可以作為PLL的參考時(shí)鐘源,F(xiàn)IRC不需要依賴外部電路,直接由芯片內(nèi)部產(chǎn)生。
- SIRC:SIRC同樣通過內(nèi)部RC振蕩器實(shí)現(xiàn),時(shí)鐘頻率為12MHz,可以直接作為系統(tǒng)和模塊時(shí)鐘源,SIRC支持在所有低功耗模式下工作(有單獨(dú)的使能控制位),可以用來作為模塊的低功耗時(shí)鐘源和IO/WKU的數(shù)字濾波器時(shí)鐘。
- FXOSC:外部晶振振蕩器,F(xiàn)XOSC支持4MHz至40MHz外部晶振,芯片內(nèi)部集成500K反饋電阻,F(xiàn)XOSC輸出時(shí)鐘可以直接作為系統(tǒng)和模塊時(shí)鐘源,同時(shí)還可以作為PLL的參考時(shí)鐘,另外,為了滿足CAN模塊對時(shí)鐘源的精度要求,CAN模塊可以直接選擇FXOSC作為模塊的時(shí)鐘源。
- SXOSC:外部32.768K時(shí)鐘晶體振蕩器,SXOSC支持32.768K外部晶振,輸出時(shí)鐘可以作為模塊時(shí)鐘(不能作為系統(tǒng)時(shí)鐘源),SXOSC主要功能是為RTC模塊提供時(shí)鐘,另外SXOSC支持在所有低功耗模式下工作,因此也可以為模塊提供低功耗功能時(shí)鐘,可以用于IO和WKU的數(shù)字濾波器時(shí)鐘源。
系統(tǒng)時(shí)鐘架構(gòu)
時(shí)鐘模塊低功耗行為
ME系列芯片的時(shí)鐘在低功耗模式下都是可以進(jìn)行配置的,當(dāng)在相應(yīng)的低功耗模式下開啟時(shí)鐘,會造成該低功耗模式的功耗增加。針對不同時(shí)鐘在不同低功耗模式下的具體行為列舉如下:
Run | Sleep | Deep Sleep | Standby | Power Down | |
---|---|---|---|---|---|
FIRC | Optional | Optional | Optional | OFF | OFF |
SIRC | ON | ON | Optional | Optional | Optional |
FXOSC | Optional | Optional | Optional | OFF | OFF |
SXOSC | Optional | Optional | Optional | Optional | Optional |
PLL | Optional | Optional | Optional | OFF | OFF |
時(shí)鐘監(jiān)測模塊
車規(guī)芯片對于Function Safety是有很高要求的,YTM32 M系列MCU可以滿足ASIL-B的安全等級要求,在時(shí)鐘模塊設(shè)計(jì)上,為了滿足時(shí)鐘的安全性需求,芯片內(nèi)部集成了一個(gè)4通道的時(shí)鐘監(jiān)測模塊CMU,可以在芯片運(yùn)行過程中實(shí)時(shí)監(jiān)測時(shí)鐘是否穩(wěn)定可靠。
CMU的基本原理是通過時(shí)鐘之間的互相監(jiān)測實(shí)現(xiàn)對時(shí)鐘工作狀態(tài)的異常監(jiān)測。在CMU的內(nèi)部,每個(gè)監(jiān)測通道同時(shí)會有兩個(gè)計(jì)數(shù)器采用兩種不同的時(shí)鐘進(jìn)行計(jì)數(shù),其中參考時(shí)鐘計(jì)數(shù)溢出值固定為128,用于可以設(shè)定被監(jiān)測時(shí)鐘的異常判定范圍,比如采用12MHz的SIRC對120MHz的PLL輸出進(jìn)行監(jiān)測,如果允許的頻率偏差為正負(fù)2%,那么異常判定的上下限可以通過如下公式計(jì)算:
系統(tǒng)外設(shè)時(shí)鐘管理
YTM32 M系列模塊時(shí)鐘主要有以下三種類型:
- 模塊只需要寄存器訪問時(shí)鐘,這種情況下用戶只需要打開IPC中模塊的寄存器時(shí)鐘即可正常使用模塊,對于這些模塊的功能時(shí)鐘選擇是無效的。比如使用DMA的時(shí)候,只需要打開訪問時(shí)鐘就可以正常使用了。
- 模塊支持功能時(shí)鐘,這種情況下,用戶需要開啟IPC中的模塊時(shí)鐘,同時(shí)根據(jù)需要選擇合適的功能時(shí)鐘,二者同時(shí)打開之后模塊方可正常工作。比如使用SPI模塊的時(shí)候,應(yīng)用還需要選擇合適的功能時(shí)鐘,并且SPI的波特率計(jì)算也都是通過功能時(shí)鐘頻率來進(jìn)行計(jì)算的。
- 模塊支持額外的外部時(shí)鐘輸入,或者模塊內(nèi)部集成時(shí)鐘選擇,對于這些模塊,應(yīng)用中除了IPC中進(jìn)行合適的功能時(shí)鐘選擇之外,還可以根據(jù)需要在模塊內(nèi)部進(jìn)行進(jìn)一步的時(shí)鐘選擇。比如lpTMR模塊,除了可以在IPC中進(jìn)行功能時(shí)鐘選擇以外,還可以在模塊內(nèi)部選擇時(shí)鐘來自IPC還是直接選擇SIRC或者SXOSC,對于lpTMR,額外的時(shí)鐘選擇可以讓lpTMR在power down模式下繼續(xù)工作,因?yàn)閜ower down模式下IPC掉電,無法繼續(xù)提供時(shí)鐘。
模塊時(shí)鐘列表:
No. | Module | Bus | Gate | Function |
---|---|---|---|---|
0 | - | - | - | - |
1 | - | - | - | - |
2 | - | - | - | - |
3 | - | - | - | - |
4 | - | - | - | - |
5 | - | - | - | - |
6 | - | - | - | - |
7 | - | - | - | - |
8 | DMA | SYS_CLK | YES | - |
9 | - | - | - | - |
10 | - | - | - | - |
11 | - | - | - | - |
12 | - | - | - | - |
13 | - | - | - | - |
14 | - | - | - | - |
15 | TRACE | - | - | - |
16 | EFM | SLOW_BUS_CLK | YES(1) | - |
17 | GPIO | SYS_CLK | YES | YES |
18 | PCTRLA | SLOW_BUS_CLK | - | - |
19 | PCTRLB | SLOW_BUS_CLK | - | - |
20 | PCTRLC | SLOW_BUS_CLK | - | - |
21 | PCTRLD | SLOW_BUS_CLK | - | - |
22 | PCTRLE | SLOW_BUS_CLK | - | - |
23 | - | - | - | - |
24 | - | - | - | - |
25 | - | - | - | - |
26 | - | - | - | - |
27 | LINFlexD0 | SLOW_BUS_CLK | YES | - |
28 | LINFlexD1 | SLOW_BUS_CLK | YES | - |
29 | LINFlexD2 | SLOW_BUS_CLK | YES | - |
30 | LINFlexD3 | SLOW_BUS_CLK | YES | - |
31 | LINFlexD4 | SLOW_BUS_CLK | YES | - |
32 | LINFlexD5 | SLOW_BUS_CLK | YES | - |
33 | - | - | - | - |
34 | - | - | - | - |
35 | I2C0 | SLOW_BUS_CLK | YES | YES |
36 | I2C1 | SLOW_BUS_CLK | YES | YES |
37 | I2C2 | SLOW_BUS_CLK | YES | YES |
38 | - | - | - | - |
39 | - | - | - | - |
40 | - | - | - | - |
41 | - | - | - | - |
42 | SPI0 | SLOW_BUS_CLK | YES | YES |
43 | SPI1 | SLOW_BUS_CLK | YES | YES |
44 | SPI2 | SLOW_BUS_CLK | YES | YES |
45 | SPI3 | SLOW_BUS_CLK | YES | YES |
46 | SPI4 | SLOW_BUS_CLK | YES | YES |
47 | SPI5 | - | - | - |
48 | FlexCAN0 | FAST_BUS_CLK | YES | - |
49 | - | - | - | - |
50 | - | - | - | - |
51 | - | - | - | - |
52 | FlexCAN1 | FAST_BUS_CLK | YES | - |
53 | - | - | - | - |
54 | - | - | - | - |
55 | - | - | - | - |
56 | FlexCAN2 | FAST_BUS_CLK | YES | - |
57 | - | - | - | - |
58 | - | - | - | - |
59 | - | - | - | - |
60 | FlexCAN3 | FAST_BUS_CLK | YES | - |
61 | FlexCAN4 | FAST_BUS_CLK | YES | - |
62 | FlexCAN5 | FAST_BUS_CLK | YES | - |
63 | - | - | - | - |
64 | ADC0 | SLOW_BUS_CLK | YES | YES |
65 | ADC1 | SLOW_BUS_CLK | YES | YES |
66 | - | - | - | - |
67 | ACMP0 | SLOW_BUS_CLK | YES | YES |
68 | - | - | - | - |
69 | - | - | - | - |
70 | PTU0 | FAST_BUS_CLK | YES | - |
71 | PTU1 | FAST_BUS_CLK | YES | - |
72 | TMU | SLOW_BUS_CLK | - | - |
73 | eTMR0 | FAST_BUS_CLK | YES | - |
74 | eTMR1 | FAST_BUS_CLK | YES | - |
75 | eTMR2 | FAST_BUS_CLK | YES | - |
76 | eTMR3 | FAST_BUS_CLK | YES | - |
77 | eTMR4 | FAST_BUS_CLK | YES | - |
78 | eTMR5 | FAST_BUS_CLK | YES | - |
79 | - | - | - | - |
80 | - | - | - | - |
81 | - | - | - | - |
82 | - | - | - | - |
83 | - | - | - | - |
84 | TMR0 | SLOW_BUS_CLK | YES | - |
85 | - | - | - | - |
86 | - | - | - | - |
87 | - | - | - | - |
88 | - | - | - | - |
89 | - | - | - | - |
90 | pTMR0 | SLOW_BUS_CLK | YES | - |
91 | - | - | - | - |
92 | - | - | - | - |
93 | lpTMR0 | SLOW_BUS_CLK | YES | YES |
94 | - | - | - | - |
95 | - | - | - | - |
96 | RTC | SLOW_BUS_CLK | YES | - |
97 | REGFILE | - | - | - |
98 | WKU | - | - | - |
99 | - | - | - | - |
100 | - | - | - | - |
101 | CRC | SYS_CLK | YES | - |
102 | TRNG | SLOW_BUS_CLK | YES | - |
103 | HCU | SYS_CLK | YES | - |
104 | - | - | - | - |
105 | - | - | - | - |
106 | WDG | SLOW_BUS_CLK | YES(1) | - |
107 | EWDG | - | - | - |
108 | - | - | - | - |
109 | - | - | - | - |
110 | - | - | - | - |
111 | - | - | - | - |
112 | - | - | - | - |
113 | INTM | SLOW_BUS_CLK | YES | - |
114 | EMU | FAST_BUS_CLK | YES | - |
115 | - | - | - | - |
116 | - | - | - | - |
117 | - | - | - | - |
118 | - | - | - | - |
119 | STU | SLOW_BUS_CLK | YES | - |
120 | - | - | - | - |
121 | - | - | - | - |
122 | - | - | - | - |
123 | CIM | - | - | - |
124 | SCU | SLOW_BUS_CLK | YES(1) | - |
125 | - | - | - | - |
126 | PCU | SLOW_BUS_CLK | YES(1) | - |
127 | RCU | SLOW_BUS_CLK | YES(1) | - |
上表是YTM32B1ME0的時(shí)鐘配置,第三列的BUS代表當(dāng)前模塊所屬的BUS時(shí)鐘域,不同的bus時(shí)鐘域主要是時(shí)鐘頻率有差異,這個(gè)時(shí)鐘域的配置用于不能更改,應(yīng)用上也只需要做頻率的區(qū)分就可以了,Gate代表模塊支持通過IPC關(guān)閉時(shí)鐘,YES(1)表示模塊時(shí)鐘在芯片復(fù)位之后默認(rèn)開啟。Function列表示模塊是否支持功能時(shí)鐘選擇,可以看到只有部分模塊支持功能時(shí)鐘,對于其他不支持功能時(shí)鐘選擇的模塊,對應(yīng)的IPC時(shí)鐘選擇寄存器域是無法寫入的。Addition列代表模塊的其他時(shí)鐘源,這些模塊的詳細(xì)配置如下:
- LINFlexD模塊波特率時(shí)鐘來自
FAST_BUS_CLK
,當(dāng)計(jì)算LINFlexD模塊波特率的時(shí)候,需要依據(jù)FAST_BUS_CLK
的頻率來進(jìn)行計(jì)算(MD1中LINFlexD已經(jīng)支持功能時(shí)鐘) - FlexCAN模塊的時(shí)鐘可以選擇
FAST_BUS_CLK
或者FXOSC_CLK
,這部分的選擇是在FlexCAN模塊內(nèi)部實(shí)現(xiàn)的。 - eTMR默認(rèn)時(shí)鐘來自FAST_BUS_CLK,用戶也可以根據(jù)需要從外部TCLK輸入時(shí)鐘來作為eTMR的時(shí)鐘,注意外部輸入時(shí)鐘的時(shí)鐘頻率不能超過FAST_BUS_CLK的一半。
- lpTMR支持IPC管理時(shí)鐘,同樣也支持模塊內(nèi)部時(shí)鐘源選擇,這么做的原因是PowerDown模式IPC模塊會斷電,無法為lpTMR提供工作時(shí)鐘,如果希望lpTMR在PowerDown模式繼續(xù)工作,那么就需要將lpTMR的時(shí)鐘源在模塊內(nèi)部選成SIRC或者SXOSC時(shí)鐘。
- RTC不支持IPC時(shí)鐘源,RTC的時(shí)鐘源默認(rèn)在模塊內(nèi)部選擇,這么做可以保證RTC在所有功耗模式下都可以正常工作。
- WDG也不支持IPC時(shí)鐘源,WDG的時(shí)鐘源也是在模塊內(nèi)部選擇,支持SIRC和SXOSC兩種時(shí)鐘源。
- RCU模塊因?yàn)樯婕癛eset引腳的數(shù)字濾波器功能,如果數(shù)字濾波器開啟,RCU需要使用SIRC時(shí)鐘來實(shí)現(xiàn)對引腳的數(shù)字濾波。
評論
查看更多