Skip to content

Commit 973c7d4

Browse files
authored
Merge pull request hathach#2149 from hathach/fix-etm-trace-h7
fix etm trace clock with stm32h743eval board
2 parents 2bab947 + 2cd0b9e commit 973c7d4

File tree

4 files changed

+67
-82
lines changed

4 files changed

+67
-82
lines changed

.idea/cmake.xml

Lines changed: 5 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

hw/bsp/lpc18/boards/mcb1800/board.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ static inline void board_lpc18_pinmux(void) {
7171

7272
// USB0
7373
{ 0x6, 3, SCU_MODE_PULLUP | SCU_MODE_INBUFF_EN | SCU_MODE_FUNC1 }, // P6_3 USB0_PWR_EN, USB0 VBus function
74-
7574
{ 0x9, 5, SCU_MODE_PULLUP | SCU_MODE_INBUFF_EN | SCU_MODE_FUNC2 }, // P9_5 USB1_VBUS_EN, USB1 VBus function
7675
{ 0x2, 5, SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC2 }, // P2_5 USB1_VBUS, MUST CONFIGURE THIS SIGNAL FOR USB1 NORMAL OPERATION
7776
};

hw/bsp/stm32h7/boards/stm32h743eval/board.h

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,7 @@
6161
//--------------------------------------------------------------------+
6262
// RCC Clock
6363
//--------------------------------------------------------------------+
64-
static inline void board_stm32h7_clock_init(void)
65-
{
64+
static inline void board_stm32h7_clock_init(void) {
6665
RCC_ClkInitTypeDef RCC_ClkInitStruct = { 0 };
6766
RCC_OscInitTypeDef RCC_OscInitStruct = { 0 };
6867
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 };
@@ -75,7 +74,7 @@ static inline void board_stm32h7_clock_init(void)
7574
regarding system frequency refer to product datasheet. */
7675
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
7776

78-
while ((PWR->D3CR & (PWR_D3CR_VOSRDY)) != PWR_D3CR_VOSRDY) {}
77+
while ( (PWR->D3CR & (PWR_D3CR_VOSRDY)) != PWR_D3CR_VOSRDY ) {}
7978

8079
/* Enable HSE Oscillator and activate PLL with HSE as source */
8180
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
@@ -85,40 +84,23 @@ static inline void board_stm32h7_clock_init(void)
8584
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
8685
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
8786

88-
// PLL1 for System Clock
89-
#ifdef TRACE_ETM
90-
// From H743 eval board manual
91-
// - ETM can only work at 50 MHz clock by default because ETM signals are shared with other peripherals. If better
92-
// performance of ETM is required (84 MHz/98 MHz), R217, R230, R231, R234, R236, SB2, SB5, SB8, SB11,
93-
// SB42, SB57 must be removed to reduce the stub on ETM signals. In this configuration SAI and PDM are not
94-
// functional and NOR Flash and the address of SRAM are limited on A18.
95-
// - ETM trace function would be abnormal as SAI_SDB share the same pins with TRACE_D0, and TRACE_D0
96-
// would be forced high by SAI_SDB. When using ETM trace it is necessary to set ADCDAT1 pin (SAI_SDB signal
97-
// of the STM32) of audio codec WM8994ECS/R (U22) by software to be tri-state.
98-
99-
// Since Trace CLK = PLL1 / 3 --> max PLL1 clock is 150Mhz
100-
RCC_OscInitStruct.PLL.PLLM = 2;
101-
RCC_OscInitStruct.PLL.PLLN = 24;
102-
RCC_OscInitStruct.PLL.PLLP = 2;
103-
RCC_OscInitStruct.PLL.PLLQ = 4;
104-
RCC_OscInitStruct.PLL.PLLR = 2;
105-
RCC_OscInitStruct.PLL.PLLFRACN = 0;
106-
#else
107-
// Set PLL1 to 400Mhz
87+
// PLL1 for System Clock (400Mhz)
88+
// From H743 eval manual ETM can only work at 50 MHz clock by default because ETM signals
89+
// are shared with other peripherals. Trace CLK = PLL1R.
10890
RCC_OscInitStruct.PLL.PLLM = 5;
10991
RCC_OscInitStruct.PLL.PLLN = 160;
11092
RCC_OscInitStruct.PLL.PLLP = 2;
111-
RCC_OscInitStruct.PLL.PLLR = 2;
11293
RCC_OscInitStruct.PLL.PLLQ = 4;
113-
#endif
94+
RCC_OscInitStruct.PLL.PLLR = 6; // Trace clock is 400/6 = 66.67 MHz (larger than 50 MHz but work well)
11495
RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOMEDIUM;
96+
RCC_OscInitStruct.PLL.PLLFRACN = 0;
11597
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2;
11698
HAL_RCC_OscConfig(&RCC_OscInitStruct);
11799

118100

119101
/* Select PLL as system clock source and configure bus clocks dividers */
120102
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 |
121-
RCC_CLOCKTYPE_PCLK2 | RCC_CLOCKTYPE_D1PCLK1 | RCC_CLOCKTYPE_D3PCLK1;
103+
RCC_CLOCKTYPE_PCLK2 | RCC_CLOCKTYPE_D1PCLK1 | RCC_CLOCKTYPE_D3PCLK1;
122104

123105
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
124106
RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
@@ -141,10 +123,10 @@ static inline void board_stm32h7_clock_init(void)
141123
HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);
142124

143125
/*activate CSI clock mondatory for I/O Compensation Cell*/
144-
__HAL_RCC_CSI_ENABLE() ;
126+
__HAL_RCC_CSI_ENABLE();
145127

146128
/* Enable SYSCFG clock mondatory for I/O Compensation Cell */
147-
__HAL_RCC_SYSCFG_CLK_ENABLE() ;
129+
__HAL_RCC_SYSCFG_CLK_ENABLE();
148130

149131
/* Enables the I/O Compensation Cell */
150132
HAL_EnableCompensationCell();

hw/bsp/stm32h7/boards/stm32h743eval/cubemx/stm32h743eval.ioc

Lines changed: 52 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -892,93 +892,95 @@ ProjectManager.ProjectStructure=
892892
ProjectManager.RegisterCallBack=
893893
ProjectManager.StackSize=0x400
894894
ProjectManager.TargetToolchain=Makefile
895-
ProjectManager.ToolChainLocation=Src
895+
ProjectManager.ToolChainLocation=Src/
896896
ProjectManager.UnderRoot=false
897897
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USB_OTG_FS_PCD_Init-USB_OTG_FS-false-HAL-true,4-MX_USB_OTG_HS_PCD_Init-USB_OTG_HS-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
898898
RCC.ADCFreq_Value=50390625
899-
RCC.AHB12Freq_Value=150000000
900-
RCC.AHB4Freq_Value=150000000
901-
RCC.APB1Freq_Value=75000000
902-
RCC.APB2Freq_Value=75000000
903-
RCC.APB3Freq_Value=75000000
904-
RCC.APB4Freq_Value=75000000
905-
RCC.AXIClockFreq_Value=150000000
899+
RCC.AHB12Freq_Value=200000000
900+
RCC.AHB4Freq_Value=200000000
901+
RCC.APB1Freq_Value=100000000
902+
RCC.APB2Freq_Value=100000000
903+
RCC.APB3Freq_Value=100000000
904+
RCC.APB4Freq_Value=100000000
905+
RCC.AXIClockFreq_Value=200000000
906906
RCC.CECFreq_Value=32000
907907
RCC.CKPERFreq_Value=64000000
908-
RCC.CortexFreq_Value=150000000
909-
RCC.CpuClockFreq_Value=150000000
910-
RCC.D1CPREFreq_Value=150000000
908+
RCC.CortexFreq_Value=400000000
909+
RCC.CpuClockFreq_Value=400000000
910+
RCC.D1CPREFreq_Value=400000000
911911
RCC.D1PPRE=RCC_APB3_DIV2
912912
RCC.D2PPRE1=RCC_APB1_DIV2
913913
RCC.D2PPRE2=RCC_APB2_DIV2
914914
RCC.D3PPRE=RCC_APB4_DIV2
915-
RCC.DFSDMACLkFreq_Value=75000000
916-
RCC.DFSDMFreq_Value=75000000
917-
RCC.DIVM1=2
915+
RCC.DFSDMACLkFreq_Value=200000000
916+
RCC.DFSDMFreq_Value=100000000
917+
RCC.DIVM1=5
918918
RCC.DIVM3=25
919-
RCC.DIVN1=24
919+
RCC.DIVN1=160
920920
RCC.DIVN3=336
921-
RCC.DIVP1Freq_Value=150000000
921+
RCC.DIVP1Freq_Value=400000000
922922
RCC.DIVP2Freq_Value=50390625
923923
RCC.DIVP3Freq_Value=168000000
924924
RCC.DIVQ1=4
925-
RCC.DIVQ1Freq_Value=75000000
925+
RCC.DIVQ1Freq_Value=200000000
926926
RCC.DIVQ2Freq_Value=50390625
927927
RCC.DIVQ3=7
928928
RCC.DIVQ3Freq_Value=48000000
929-
RCC.DIVR1Freq_Value=150000000
929+
RCC.DIVR1=6
930+
RCC.DIVR1Freq_Value=133333333.33333333
930931
RCC.DIVR2Freq_Value=50390625
931932
RCC.DIVR3Freq_Value=168000000
932933
RCC.EnbaleCSS=true
933-
RCC.FDCANFreq_Value=75000000
934-
RCC.FMCFreq_Value=150000000
934+
RCC.FDCANFreq_Value=200000000
935+
RCC.FMCFreq_Value=200000000
935936
RCC.FamilyName=M
936-
RCC.HCLK3ClockFreq_Value=150000000
937-
RCC.HCLKFreq_Value=150000000
937+
RCC.HCLK3ClockFreq_Value=200000000
938+
RCC.HCLKFreq_Value=200000000
939+
RCC.HPRE=RCC_HCLK_DIV2
938940
RCC.HPREFreq_Value=64000000
939-
RCC.HRTIMFreq_Value=150000000
941+
RCC.HRTIMFreq_Value=200000000
940942
RCC.HSICalibrationValue=32
941-
RCC.I2C123Freq_Value=75000000
942-
RCC.I2C4Freq_Value=75000000
943-
RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,D1PPRE,D2PPRE1,D2PPRE2,D3PPRE,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM3,DIVN1,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1,DIVQ1Freq_Value,DIVQ2Freq_Value,DIVQ3,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3Freq_Value,EnbaleCSS,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HPREFreq_Value,HRTIMFreq_Value,HSICalibrationValue,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLL3FRACN,PLLFRACN,PLLSourceVirtual,PWR_Regulator_Voltage_Scale,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI23Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578Freq_Value,USBCLockSelection,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
944-
RCC.LPTIM1Freq_Value=75000000
945-
RCC.LPTIM2Freq_Value=75000000
946-
RCC.LPTIM345Freq_Value=75000000
947-
RCC.LPUART1Freq_Value=75000000
943+
RCC.I2C123Freq_Value=100000000
944+
RCC.I2C4Freq_Value=100000000
945+
RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,D1PPRE,D2PPRE1,D2PPRE2,D3PPRE,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM3,DIVN1,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1,DIVQ1Freq_Value,DIVQ2Freq_Value,DIVQ3,DIVQ3Freq_Value,DIVR1,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3Freq_Value,EnbaleCSS,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HPRE,HPREFreq_Value,HRTIMFreq_Value,HSICalibrationValue,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLL3FRACN,PLLFRACN,PLLSourceVirtual,PWR_Regulator_Voltage_Scale,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI23Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578Freq_Value,USBCLockSelection,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
946+
RCC.LPTIM1Freq_Value=100000000
947+
RCC.LPTIM2Freq_Value=100000000
948+
RCC.LPTIM345Freq_Value=100000000
949+
RCC.LPUART1Freq_Value=100000000
948950
RCC.LTDCFreq_Value=168000000
949951
RCC.MCO1PinFreq_Value=64000000
950-
RCC.MCO2PinFreq_Value=150000000
952+
RCC.MCO2PinFreq_Value=400000000
951953
RCC.PLL2FRACN=0
952954
RCC.PLL3FRACN=0
953955
RCC.PLLFRACN=0
954956
RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
955957
RCC.PWR_Regulator_Voltage_Scale=PWR_REGULATOR_VOLTAGE_SCALE1
956-
RCC.QSPIFreq_Value=150000000
958+
RCC.QSPIFreq_Value=200000000
957959
RCC.RNGFreq_Value=48000000
958960
RCC.RTCFreq_Value=32000
959-
RCC.SAI1Freq_Value=75000000
960-
RCC.SAI23Freq_Value=75000000
961-
RCC.SAI4AFreq_Value=75000000
962-
RCC.SAI4BFreq_Value=75000000
963-
RCC.SDMMCFreq_Value=75000000
964-
RCC.SPDIFRXFreq_Value=75000000
965-
RCC.SPI123Freq_Value=75000000
966-
RCC.SPI45Freq_Value=75000000
967-
RCC.SPI6Freq_Value=75000000
968-
RCC.SWPMI1Freq_Value=75000000
969-
RCC.SYSCLKFreq_VALUE=150000000
961+
RCC.SAI1Freq_Value=200000000
962+
RCC.SAI23Freq_Value=200000000
963+
RCC.SAI4AFreq_Value=200000000
964+
RCC.SAI4BFreq_Value=200000000
965+
RCC.SDMMCFreq_Value=200000000
966+
RCC.SPDIFRXFreq_Value=200000000
967+
RCC.SPI123Freq_Value=200000000
968+
RCC.SPI45Freq_Value=100000000
969+
RCC.SPI6Freq_Value=100000000
970+
RCC.SWPMI1Freq_Value=100000000
971+
RCC.SYSCLKFreq_VALUE=400000000
970972
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
971-
RCC.Tim1OutputFreq_Value=150000000
972-
RCC.Tim2OutputFreq_Value=150000000
973-
RCC.TraceFreq_Value=150000000
974-
RCC.USART16Freq_Value=75000000
975-
RCC.USART234578Freq_Value=75000000
973+
RCC.Tim1OutputFreq_Value=200000000
974+
RCC.Tim2OutputFreq_Value=200000000
975+
RCC.TraceFreq_Value=133333333.33333333
976+
RCC.USART16Freq_Value=100000000
977+
RCC.USART234578Freq_Value=100000000
976978
RCC.USBCLockSelection=RCC_USBCLKSOURCE_PLL3
977979
RCC.USBFreq_Value=48000000
978-
RCC.VCO1OutputFreq_Value=300000000
980+
RCC.VCO1OutputFreq_Value=800000000
979981
RCC.VCO2OutputFreq_Value=100781250
980982
RCC.VCO3OutputFreq_Value=336000000
981-
RCC.VCOInput1Freq_Value=12500000
983+
RCC.VCOInput1Freq_Value=5000000
982984
RCC.VCOInput2Freq_Value=781250
983985
RCC.VCOInput3Freq_Value=1000000
984986
SH.ADCx_INN1.0=ADC1_INN1

0 commit comments

Comments
 (0)