YTM32 M系列芯片基于32位車規級ARM Cortex-M33內核,CPU全溫域主頻高達120MHz,提供1.25MB嵌入式閃存,符合ISO26262的ASIL-B等級要求,可靠性滿足AEC-Q100、Grade1標準,信息安全方面支持AES、SHA以及國密SM4等多種加密算法,并提供符合AUTOSAR標準的MCAL。
時鐘模塊是嵌入式軟件設計的基礎,只有詳細了解了嵌入式芯片的時鐘結構,在實際應用中才能使芯片發揮全部的性能,同時,根據不同的應用需求,選擇合適的時鐘源,可以同時兼顧應用的性能需求和功耗需求,從而使系統設計更好的滿足應用需求。
主要時鐘源介紹
YTM32B1ME0系列MCU時鐘模塊通過SCU統一管理,芯片支持PLL,FIRC,SIRC,FXOSC以及SXOSC幾種時鐘源,除了SXOSC以外,其余四種時鐘源都可以選擇為系統時鐘源。
- 鎖相環時鐘(PLL):PLL時鐘源需要參考內部FIRC或者外部FXOSC晶振產生時鐘,PLL內部VCO振蕩器頻率范圍為200MHz至400MHz,VCO輸出經過二分頻后可以作為系統和模塊時鐘源,可配置頻率范圍為100MHz至200MHz。
- FIRC:FIRC為芯片內部RC振蕩器,時鐘頻率是96MHz,可以直接作為系統和模塊的時鐘源,同時還可以作為PLL的參考時鐘源,FIRC不需要依賴外部電路,直接由芯片內部產生。
- SIRC:SIRC同樣通過內部RC振蕩器實現,時鐘頻率為12MHz,可以直接作為系統和模塊時鐘源,SIRC支持在所有低功耗模式下工作(有單獨的使能控制位),可以用來作為模塊的低功耗時鐘源和IO/WKU的數字濾波器時鐘。
- FXOSC:外部晶振振蕩器,FXOSC支持4MHz至40MHz外部晶振,芯片內部集成500K反饋電阻,FXOSC輸出時鐘可以直接作為系統和模塊時鐘源,同時還可以作為PLL的參考時鐘,另外,為了滿足CAN模塊對時鐘源的精度要求,CAN模塊可以直接選擇FXOSC作為模塊的時鐘源。
- SXOSC:外部32.768K時鐘晶體振蕩器,SXOSC支持32.768K外部晶振,輸出時鐘可以作為模塊時鐘(不能作為系統時鐘源),SXOSC主要功能是為RTC模塊提供時鐘,另外SXOSC支持在所有低功耗模式下工作,因此也可以為模塊提供低功耗功能時鐘,可以用于IO和WKU的數字濾波器時鐘源。
系統時鐘架構
時鐘模塊低功耗行為
ME系列芯片的時鐘在低功耗模式下都是可以進行配置的,當在相應的低功耗模式下開啟時鐘,會造成該低功耗模式的功耗增加。針對不同時鐘在不同低功耗模式下的具體行為列舉如下:
| 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 |
時鐘監測模塊
車規芯片對于Function Safety是有很高要求的,YTM32 M系列MCU可以滿足ASIL-B的安全等級要求,在時鐘模塊設計上,為了滿足時鐘的安全性需求,芯片內部集成了一個4通道的時鐘監測模塊CMU,可以在芯片運行過程中實時監測時鐘是否穩定可靠。
CMU的基本原理是通過時鐘之間的互相監測實現對時鐘工作狀態的異常監測。在CMU的內部,每個監測通道同時會有兩個計數器采用兩種不同的時鐘進行計數,其中參考時鐘計數溢出值固定為128,用于可以設定被監測時鐘的異常判定范圍,比如采用12MHz的SIRC對120MHz的PLL輸出進行監測,如果允許的頻率偏差為正負2%,那么異常判定的上下限可以通過如下公式計算:

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

























評論