|
@@ -150,6 +150,8 @@ void taskSnapRunner(void *argument);
|
|
|
void taskAIRunner(void *argument);
|
|
void taskAIRunner(void *argument);
|
|
|
void taskImcTest(void *argument);
|
|
void taskImcTest(void *argument);
|
|
|
|
|
|
|
|
|
|
+static void MPU_RegionConfig(void);
|
|
|
|
|
+
|
|
|
/* USER CODE BEGIN PFP */
|
|
/* USER CODE BEGIN PFP */
|
|
|
/* USER CODE END PFP */
|
|
/* USER CODE END PFP */
|
|
|
|
|
|
|
@@ -241,6 +243,7 @@ int main(void)
|
|
|
#if (imcUSE_IMC_KERNEL == 1)
|
|
#if (imcUSE_IMC_KERNEL == 1)
|
|
|
HAL_ADCEx_Calibration_Start(&hadc1, ADC_SINGLE_ENDED);
|
|
HAL_ADCEx_Calibration_Start(&hadc1, ADC_SINGLE_ENDED);
|
|
|
imcInit();
|
|
imcInit();
|
|
|
|
|
+ MPU_RegionConfig();
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
// printf("\r\n\r\n\r\n");
|
|
// printf("\r\n\r\n\r\n");
|
|
@@ -432,8 +435,9 @@ static void MX_ADC1_Init(void)
|
|
|
*/
|
|
*/
|
|
|
sConfig.Channel = ADC_CHANNEL_1;
|
|
sConfig.Channel = ADC_CHANNEL_1;
|
|
|
sConfig.Rank = ADC_REGULAR_RANK_1;
|
|
sConfig.Rank = ADC_REGULAR_RANK_1;
|
|
|
- // sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
|
|
|
|
|
- sConfig.SamplingTime = ADC_SAMPLETIME_12CYCLES_5;
|
|
|
|
|
|
|
+ sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
|
|
|
|
|
+ // sConfig.SamplingTime = ADC_SAMPLETIME_6CYCLES_5;
|
|
|
|
|
+ // sConfig.SamplingTime = ADC_SAMPLETIME_24CYCLES_5;
|
|
|
sConfig.SingleDiff = ADC_SINGLE_ENDED;
|
|
sConfig.SingleDiff = ADC_SINGLE_ENDED;
|
|
|
sConfig.OffsetNumber = ADC_OFFSET_NONE;
|
|
sConfig.OffsetNumber = ADC_OFFSET_NONE;
|
|
|
sConfig.Offset = 0;
|
|
sConfig.Offset = 0;
|
|
@@ -1023,6 +1027,7 @@ static void MX_FMC_Init(void)
|
|
|
/* USER CODE END FMC_Init 0 */
|
|
/* USER CODE END FMC_Init 0 */
|
|
|
|
|
|
|
|
FMC_NORSRAM_TimingTypeDef Timing = {0};
|
|
FMC_NORSRAM_TimingTypeDef Timing = {0};
|
|
|
|
|
+ FMC_NORSRAM_TimingTypeDef ExtTiming = {0};
|
|
|
|
|
|
|
|
/* USER CODE BEGIN FMC_Init 1 */
|
|
/* USER CODE BEGIN FMC_Init 1 */
|
|
|
|
|
|
|
@@ -1050,21 +1055,21 @@ static void MX_FMC_Init(void)
|
|
|
hsram1.Init.NBLSetupTime = 0;
|
|
hsram1.Init.NBLSetupTime = 0;
|
|
|
hsram1.Init.PageSize = FMC_PAGE_SIZE_NONE;
|
|
hsram1.Init.PageSize = FMC_PAGE_SIZE_NONE;
|
|
|
hsram1.Init.MaxChipSelectPulse = DISABLE;
|
|
hsram1.Init.MaxChipSelectPulse = DISABLE;
|
|
|
- /* Timing */
|
|
|
|
|
- Timing.AddressSetupTime = 15;
|
|
|
|
|
- Timing.AddressHoldTime = 15;
|
|
|
|
|
- Timing.DataSetupTime = 30;
|
|
|
|
|
- Timing.DataHoldTime = 0;
|
|
|
|
|
- Timing.BusTurnAroundDuration = 2;
|
|
|
|
|
- Timing.CLKDivision = 16;
|
|
|
|
|
- Timing.DataLatency = 17;
|
|
|
|
|
- Timing.AccessMode = FMC_ACCESS_MODE_A;
|
|
|
|
|
|
|
+ // /* Timing */
|
|
|
|
|
+ // Timing.AddressSetupTime = 15;
|
|
|
|
|
+ // Timing.AddressHoldTime = 15;
|
|
|
|
|
+ // Timing.DataSetupTime = 30;
|
|
|
|
|
+ // Timing.DataHoldTime = 0;
|
|
|
|
|
+ // Timing.BusTurnAroundDuration = 2;
|
|
|
|
|
+ // Timing.CLKDivision = 16;
|
|
|
|
|
+ // Timing.DataLatency = 17;
|
|
|
|
|
+ // Timing.AccessMode = FMC_ACCESS_MODE_A;
|
|
|
/* ExtTiming */
|
|
/* ExtTiming */
|
|
|
|
|
|
|
|
- if (HAL_SRAM_Init(&hsram1, &Timing, NULL) != HAL_OK)
|
|
|
|
|
- {
|
|
|
|
|
- Error_Handler( );
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // if (HAL_SRAM_Init(&hsram1, &Timing, NULL) != HAL_OK)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // Error_Handler( );
|
|
|
|
|
+ // }
|
|
|
|
|
|
|
|
/** Perform the SRAM2 memory initialization sequence
|
|
/** Perform the SRAM2 memory initialization sequence
|
|
|
*/
|
|
*/
|
|
@@ -1080,26 +1085,48 @@ static void MX_FMC_Init(void)
|
|
|
hsram2.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS;
|
|
hsram2.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS;
|
|
|
hsram2.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
|
|
hsram2.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
|
|
|
hsram2.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE;
|
|
hsram2.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE;
|
|
|
- hsram2.Init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE;
|
|
|
|
|
|
|
+ // hsram2.Init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE;
|
|
|
|
|
+ hsram2.Init.ExtendedMode = FMC_EXTENDED_MODE_ENABLE;
|
|
|
hsram2.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE;
|
|
hsram2.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE;
|
|
|
hsram2.Init.WriteBurst = FMC_WRITE_BURST_DISABLE;
|
|
hsram2.Init.WriteBurst = FMC_WRITE_BURST_DISABLE;
|
|
|
hsram2.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY;
|
|
hsram2.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY;
|
|
|
- hsram2.Init.WriteFifo = FMC_WRITE_FIFO_ENABLE;
|
|
|
|
|
|
|
+ // hsram2.Init.WriteFifo = FMC_WRITE_FIFO_ENABLE;
|
|
|
|
|
+ hsram2.Init.WriteFifo = FMC_WRITE_FIFO_DISABLE;
|
|
|
hsram2.Init.NBLSetupTime = 0;
|
|
hsram2.Init.NBLSetupTime = 0;
|
|
|
hsram2.Init.PageSize = FMC_PAGE_SIZE_NONE;
|
|
hsram2.Init.PageSize = FMC_PAGE_SIZE_NONE;
|
|
|
hsram2.Init.MaxChipSelectPulse = DISABLE;
|
|
hsram2.Init.MaxChipSelectPulse = DISABLE;
|
|
|
/* Timing */
|
|
/* Timing */
|
|
|
- Timing.AddressSetupTime = 15;
|
|
|
|
|
- Timing.AddressHoldTime = 15;
|
|
|
|
|
- Timing.DataSetupTime = 30;
|
|
|
|
|
- Timing.DataHoldTime = 0;
|
|
|
|
|
- Timing.BusTurnAroundDuration = 2;
|
|
|
|
|
|
|
+ // Timing.AddressSetupTime = 15;
|
|
|
|
|
+ // Timing.AddressHoldTime = 15;
|
|
|
|
|
+ // Timing.DataSetupTime = 30;
|
|
|
|
|
+ // Timing.DataHoldTime = 0;
|
|
|
|
|
+ // Timing.BusTurnAroundDuration = 2;
|
|
|
|
|
+ // Timing.CLKDivision = 16;
|
|
|
|
|
+ // Timing.DataLatency = 17;
|
|
|
|
|
+ // Timing.AccessMode = FMC_ACCESS_MODE_A;
|
|
|
|
|
+ Timing.AddressSetupTime = 6;
|
|
|
|
|
+ Timing.AddressHoldTime = 11;
|
|
|
|
|
+ Timing.DataSetupTime = 3;
|
|
|
|
|
+ Timing.DataHoldTime = 3;
|
|
|
|
|
+ Timing.BusTurnAroundDuration = 1;
|
|
|
Timing.CLKDivision = 16;
|
|
Timing.CLKDivision = 16;
|
|
|
Timing.DataLatency = 17;
|
|
Timing.DataLatency = 17;
|
|
|
Timing.AccessMode = FMC_ACCESS_MODE_A;
|
|
Timing.AccessMode = FMC_ACCESS_MODE_A;
|
|
|
/* ExtTiming */
|
|
/* ExtTiming */
|
|
|
-
|
|
|
|
|
- if (HAL_SRAM_Init(&hsram2, &Timing, NULL) != HAL_OK)
|
|
|
|
|
|
|
+ ExtTiming.AddressSetupTime = 3;
|
|
|
|
|
+ ExtTiming.AddressHoldTime = 11;
|
|
|
|
|
+ ExtTiming.DataSetupTime = 3;
|
|
|
|
|
+ ExtTiming.BusTurnAroundDuration = 2;
|
|
|
|
|
+ ExtTiming.CLKDivision = 16;
|
|
|
|
|
+ ExtTiming.DataLatency = 17;
|
|
|
|
|
+ ExtTiming.AccessMode = FMC_ACCESS_MODE_A;
|
|
|
|
|
+
|
|
|
|
|
+ // if (HAL_SRAM_Init(&hsram2, &Timing, NULL) != HAL_OK)
|
|
|
|
|
+ // if (HAL_SRAM_Init(&hsram1, &Timing, &ExtTiming) != HAL_OK)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // Error_Handler( );
|
|
|
|
|
+ // }
|
|
|
|
|
+ if (HAL_SRAM_Init(&hsram2, &Timing, &ExtTiming) != HAL_OK)
|
|
|
{
|
|
{
|
|
|
Error_Handler( );
|
|
Error_Handler( );
|
|
|
}
|
|
}
|
|
@@ -1119,25 +1146,35 @@ static void MX_FMC_Init(void)
|
|
|
hsram3.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
|
|
hsram3.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
|
|
|
hsram3.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE;
|
|
hsram3.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE;
|
|
|
hsram3.Init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE;
|
|
hsram3.Init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE;
|
|
|
|
|
+ // hsram3.Init.ExtendedMode = FMC_EXTENDED_MODE_ENABLE;
|
|
|
hsram3.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE;
|
|
hsram3.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE;
|
|
|
hsram3.Init.WriteBurst = FMC_WRITE_BURST_DISABLE;
|
|
hsram3.Init.WriteBurst = FMC_WRITE_BURST_DISABLE;
|
|
|
hsram3.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY;
|
|
hsram3.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY;
|
|
|
- hsram3.Init.WriteFifo = FMC_WRITE_FIFO_ENABLE;
|
|
|
|
|
|
|
+ // hsram3.Init.WriteFifo = FMC_WRITE_FIFO_ENABLE;
|
|
|
|
|
+ hsram3.Init.WriteFifo = FMC_WRITE_FIFO_DISABLE;
|
|
|
hsram3.Init.NBLSetupTime = 0;
|
|
hsram3.Init.NBLSetupTime = 0;
|
|
|
hsram3.Init.PageSize = FMC_PAGE_SIZE_NONE;
|
|
hsram3.Init.PageSize = FMC_PAGE_SIZE_NONE;
|
|
|
hsram3.Init.MaxChipSelectPulse = DISABLE;
|
|
hsram3.Init.MaxChipSelectPulse = DISABLE;
|
|
|
/* Timing */
|
|
/* Timing */
|
|
|
Timing.AddressSetupTime = 15;
|
|
Timing.AddressSetupTime = 15;
|
|
|
Timing.AddressHoldTime = 15;
|
|
Timing.AddressHoldTime = 15;
|
|
|
- Timing.DataSetupTime = 30;
|
|
|
|
|
- Timing.DataHoldTime = 0;
|
|
|
|
|
- Timing.BusTurnAroundDuration = 2;
|
|
|
|
|
|
|
+ Timing.DataSetupTime = 10;
|
|
|
|
|
+ Timing.DataHoldTime = 3;
|
|
|
|
|
+ Timing.BusTurnAroundDuration = 15;
|
|
|
Timing.CLKDivision = 16;
|
|
Timing.CLKDivision = 16;
|
|
|
Timing.DataLatency = 17;
|
|
Timing.DataLatency = 17;
|
|
|
Timing.AccessMode = FMC_ACCESS_MODE_A;
|
|
Timing.AccessMode = FMC_ACCESS_MODE_A;
|
|
|
/* ExtTiming */
|
|
/* ExtTiming */
|
|
|
-
|
|
|
|
|
- if (HAL_SRAM_Init(&hsram3, &Timing, NULL) != HAL_OK)
|
|
|
|
|
|
|
+ ExtTiming.AddressSetupTime = 15;
|
|
|
|
|
+ ExtTiming.AddressHoldTime = 15;
|
|
|
|
|
+ ExtTiming.DataSetupTime = 30;
|
|
|
|
|
+ ExtTiming.DataHoldTime = 0;
|
|
|
|
|
+ ExtTiming.BusTurnAroundDuration = 2;
|
|
|
|
|
+ ExtTiming.CLKDivision = 16;
|
|
|
|
|
+ ExtTiming.DataLatency = 17;
|
|
|
|
|
+ ExtTiming.AccessMode = FMC_ACCESS_MODE_A;
|
|
|
|
|
+
|
|
|
|
|
+ if (HAL_SRAM_Init(&hsram3, &Timing, &ExtTiming) != HAL_OK)
|
|
|
{
|
|
{
|
|
|
Error_Handler( );
|
|
Error_Handler( );
|
|
|
}
|
|
}
|
|
@@ -1175,10 +1212,10 @@ static void MX_FMC_Init(void)
|
|
|
Timing.AccessMode = FMC_ACCESS_MODE_A;
|
|
Timing.AccessMode = FMC_ACCESS_MODE_A;
|
|
|
/* ExtTiming */
|
|
/* ExtTiming */
|
|
|
|
|
|
|
|
- if (HAL_SRAM_Init(&hsram4, &Timing, NULL) != HAL_OK)
|
|
|
|
|
- {
|
|
|
|
|
- Error_Handler( );
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // if (HAL_SRAM_Init(&hsram4, &Timing, NULL) != HAL_OK)
|
|
|
|
|
+ // {
|
|
|
|
|
+ // Error_Handler( );
|
|
|
|
|
+ // }
|
|
|
|
|
|
|
|
/* USER CODE BEGIN FMC_Init 2 */
|
|
/* USER CODE BEGIN FMC_Init 2 */
|
|
|
|
|
|
|
@@ -1299,6 +1336,32 @@ static void MX_GPIO_Init(void)
|
|
|
/* USER CODE END MX_GPIO_Init_2 */
|
|
/* USER CODE END MX_GPIO_Init_2 */
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+void MPU_RegionConfig(void)
|
|
|
|
|
+{
|
|
|
|
|
+ MPU_Region_InitTypeDef MPU_InitStruct;
|
|
|
|
|
+ /* Disable MPU */
|
|
|
|
|
+ HAL_MPU_Disable();
|
|
|
|
|
+ /* Configure RAM region as Region N°0, 8kB of size and R/W region */
|
|
|
|
|
+ MPU_InitStruct.Enable = MPU_REGION_ENABLE;
|
|
|
|
|
+ MPU_InitStruct.Number = MPU_REGION_NUMBER0;
|
|
|
|
|
+ MPU_InitStruct.BaseAddress = 0x68000000;
|
|
|
|
|
+ MPU_InitStruct.LimitAddress = 0x68100000;
|
|
|
|
|
+ MPU_InitStruct.AccessPermission = MPU_REGION_ALL_RW;
|
|
|
|
|
+
|
|
|
|
|
+ // MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
|
|
|
|
|
+ // MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
|
|
|
|
|
+ MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
|
|
|
|
|
+ // MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
|
|
|
|
|
+ MPU_InitStruct.AttributesIndex = MPU_ATTRIBUTES_NUMBER5;
|
|
|
|
|
+
|
|
|
|
|
+ MPU_InitStruct.Number = MPU_REGION_NUMBER0;
|
|
|
|
|
+ // MPU_InitStruct.SubRegionDisable = 0x00;
|
|
|
|
|
+ MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE;
|
|
|
|
|
+ HAL_MPU_ConfigRegion(&MPU_InitStruct);
|
|
|
|
|
+ /* Enable MPU */
|
|
|
|
|
+ HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
/* USER CODE BEGIN 4 */
|
|
/* USER CODE BEGIN 4 */
|
|
|
|
|
|
|
|
/* USER CODE END 4 */
|
|
/* USER CODE END 4 */
|