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è)計的基礎(chǔ),只有詳細(xì)了解了嵌入式芯片的時鐘結(jié)構(gòu),在實際應(yīng)用中才能使芯片發(fā)揮全部的性能,同時,根據(jù)不同的應(yīng)用需求,選擇合適的時鐘源,可以同時兼顧應(yīng)用的性能需求和功耗需求,從而使系統(tǒng)設(shè)計更好的滿足應(yīng)用需求。
主要時鐘源介紹
YTM32B1ME0系列MCU時鐘模塊通過SCU統(tǒng)一管理,芯片支持PLL,F(xiàn)IRC,SIRC,F(xiàn)XOSC以及SXOSC幾種時鐘源,除了SXOSC以外,其余四種時鐘源都可以選擇為系統(tǒng)時鐘源。
- 鎖相環(huán)時鐘(PLL):PLL時鐘源需要參考內(nèi)部FIRC或者外部FXOSC晶振產(chǎn)生時鐘,PLL內(nèi)部VCO振蕩器頻率范圍為200MHz至400MHz,VCO輸出經(jīng)過二分頻后可以作為系統(tǒng)和模塊時鐘源,可配置頻率范圍為100MHz至200MHz。
- FIRC:FIRC為芯片內(nèi)部RC振蕩器,時鐘頻率是96MHz,可以直接作為系統(tǒng)和模塊的時鐘源,同時還可以作為PLL的參考時鐘源,F(xiàn)IRC不需要依賴外部電路,直接由芯片內(nèi)部產(chǎn)生。
- SIRC:SIRC同樣通過內(nèi)部RC振蕩器實現(xiàn),時鐘頻率為12MHz,可以直接作為系統(tǒng)和模塊時鐘源,SIRC支持在所有低功耗模式下工作(有單獨的使能控制位),可以用來作為模塊的低功耗時鐘源和IO/WKU的數(shù)字濾波器時鐘。
- FXOSC:外部晶振振蕩器,F(xiàn)XOSC支持4MHz至40MHz外部晶振,芯片內(nèi)部集成500K反饋電阻,F(xiàn)XOSC輸出時鐘可以直接作為系統(tǒng)和模塊時鐘源,同時還可以作為PLL的參考時鐘,另外,為了滿足CAN模塊對時鐘源的精度要求,CAN模塊可以直接選擇FXOSC作為模塊的時鐘源。
- SXOSC:外部32.768K時鐘晶體振蕩器,SXOSC支持32.768K外部晶振,輸出時鐘可以作為模塊時鐘(不能作為系統(tǒng)時鐘源),SXOSC主要功能是為RTC模塊提供時鐘,另外SXOSC支持在所有低功耗模式下工作,因此也可以為模塊提供低功耗功能時鐘,可以用于IO和WKU的數(shù)字濾波器時鐘源。
系統(tǒng)時鐘架構(gòu)
時鐘模塊低功耗行為
ME系列芯片的時鐘在低功耗模式下都是可以進(jìn)行配置的,當(dāng)在相應(yīng)的低功耗模式下開啟時鐘,會造成該低功耗模式的功耗增加。針對不同時鐘在不同低功耗模式下的具體行為列舉如下:
| 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 |
時鐘監(jiān)測模塊
車規(guī)芯片對于Function Safety是有很高要求的,YTM32 M系列MCU可以滿足ASIL-B的安全等級要求,在時鐘模塊設(shè)計上,為了滿足時鐘的安全性需求,芯片內(nèi)部集成了一個4通道的時鐘監(jiān)測模塊CMU,可以在芯片運行過程中實時監(jiān)測時鐘是否穩(wěn)定可靠。
CMU的基本原理是通過時鐘之間的互相監(jiān)測實現(xiàn)對時鐘工作狀態(tài)的異常監(jiān)測。在CMU的內(nèi)部,每個監(jiān)測通道同時會有兩個計數(shù)器采用兩種不同的時鐘進(jìn)行計數(shù),其中參考時鐘計數(shù)溢出值固定為128,用于可以設(shè)定被監(jiān)測時鐘的異常判定范圍,比如采用12MHz的SIRC對120MHz的PLL輸出進(jìn)行監(jiān)測,如果允許的頻率偏差為正負(fù)2%,那么異常判定的上下限可以通過如下公式計算:

系統(tǒng)外設(shè)時鐘管理
YTM32 M系列模塊時鐘主要有以下三種類型:
- 模塊只需要寄存器訪問時鐘,這種情況下用戶只需要打開IPC中模塊的寄存器時鐘即可正常使用模塊,對于這些模塊的功能時鐘選擇是無效的。比如使用DMA的時候,只需要打開訪問時鐘就可以正常使用了。
- 模塊支持功能時鐘,這種情況下,用戶需要開啟IPC中的模塊時鐘,同時根據(jù)需要選擇合適的功能時鐘,二者同時打開之后模塊方可正常工作。比如使用SPI模塊的時候,應(yīng)用還需要選擇合適的功能時鐘,并且SPI的波特率計算也都是通過功能時鐘頻率來進(jìn)行計算的。
- 模塊支持額外的外部時鐘輸入,或者模塊內(nèi)部集成時鐘選擇,對于這些模塊,應(yīng)用中除了IPC中進(jìn)行合適的功能時鐘選擇之外,還可以根據(jù)需要在模塊內(nèi)部進(jìn)行進(jìn)一步的時鐘選擇。比如lpTMR模塊,除了可以在IPC中進(jìn)行功能時鐘選擇以外,還可以在模塊內(nèi)部選擇時鐘來自IPC還是直接選擇SIRC或者SXOSC,對于lpTMR,額外的時鐘選擇可以讓lpTMR在power down模式下繼續(xù)工作,因為power down模式下IPC掉電,無法繼續(xù)提供時鐘。
模塊時鐘列表:
| 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的時鐘配置,第三列的BUS代表當(dāng)前模塊所屬的BUS時鐘域,不同的bus時鐘域主要是時鐘頻率有差異,這個時鐘域的配置用于不能更改,應(yīng)用上也只需要做頻率的區(qū)分就可以了,Gate代表模塊支持通過IPC關(guān)閉時鐘,YES(1)表示模塊時鐘在芯片復(fù)位之后默認(rèn)開啟。Function列表示模塊是否支持功能時鐘選擇,可以看到只有部分模塊支持功能時鐘,對于其他不支持功能時鐘選擇的模塊,對應(yīng)的IPC時鐘選擇寄存器域是無法寫入的。Addition列代表模塊的其他時鐘源,這些模塊的詳細(xì)配置如下:
- LINFlexD模塊波特率時鐘來自
FAST_BUS_CLK,當(dāng)計算LINFlexD模塊波特率的時候,需要依據(jù)FAST_BUS_CLK的頻率來進(jìn)行計算(MD1中LINFlexD已經(jīng)支持功能時鐘) - FlexCAN模塊的時鐘可以選擇
FAST_BUS_CLK或者FXOSC_CLK,這部分的選擇是在FlexCAN模塊內(nèi)部實現(xiàn)的。 - eTMR默認(rèn)時鐘來自FAST_BUS_CLK,用戶也可以根據(jù)需要從外部TCLK輸入時鐘來作為eTMR的時鐘,注意外部輸入時鐘的時鐘頻率不能超過FAST_BUS_CLK的一半。
- lpTMR支持IPC管理時鐘,同樣也支持模塊內(nèi)部時鐘源選擇,這么做的原因是PowerDown模式IPC模塊會斷電,無法為lpTMR提供工作時鐘,如果希望lpTMR在PowerDown模式繼續(xù)工作,那么就需要將lpTMR的時鐘源在模塊內(nèi)部選成SIRC或者SXOSC時鐘。
- RTC不支持IPC時鐘源,RTC的時鐘源默認(rèn)在模塊內(nèi)部選擇,這么做可以保證RTC在所有功耗模式下都可以正常工作。
- WDG也不支持IPC時鐘源,WDG的時鐘源也是在模塊內(nèi)部選擇,支持SIRC和SXOSC兩種時鐘源。
- RCU模塊因為涉及Reset引腳的數(shù)字濾波器功能,如果數(shù)字濾波器開啟,RCU需要使用SIRC時鐘來實現(xiàn)對引腳的數(shù)字濾波。
電子發(fā)燒友App
























評論