Rev 12 | Rev 14 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 12 | Rev 13 | ||
|---|---|---|---|
| Line 89... | Line 89... | ||
| 89 | static void MX_DMA_Init(void); |
89 | static void MX_DMA_Init(void); |
| 90 | static void MX_ADC_Init(void); |
90 | static void MX_ADC_Init(void); |
| 91 | static void MX_SPI1_Init(void); |
91 | static void MX_SPI1_Init(void); |
| 92 | static void MX_TIM2_Init(void); |
92 | static void MX_TIM2_Init(void); |
| 93 | static void MX_TIM6_Init(void); |
93 | static void MX_TIM6_Init(void); |
| 94 | static void MX_USART1_UART_Init(void); |
- | |
| 95 | static void MX_USART2_UART_Init(void); |
94 | static void MX_USART2_UART_Init(void); |
| 96 | - | ||
| 97 | void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); |
95 | static void MX_USART1_UART_Init(void); |
| 98 | - | ||
| 99 | 96 | ||
| 100 | /* USER CODE BEGIN PFP */ |
97 | /* USER CODE BEGIN PFP */ |
| 101 | /* Private function prototypes -----------------------------------------------*/ |
98 | /* Private function prototypes -----------------------------------------------*/ |
| 102 | 99 | ||
| 103 | /* USER CODE END PFP */ |
100 | /* USER CODE END PFP */ |
| 104 | 101 | ||
| 105 | /* USER CODE BEGIN 0 */ |
102 | /* USER CODE BEGIN 0 */ |
| 106 | 103 | ||
| 107 | void ConfigureDMA(void) { |
- | |
| 108 | hdma_adc.Instance = DMA1_Channel1; |
- | |
| 109 | hdma_adc.Init.Direction = DMA_PERIPH_TO_MEMORY; |
- | |
| 110 | hdma_adc.Init.PeriphInc = DMA_PINC_DISABLE; |
- | |
| 111 | hdma_adc.Init.MemInc = DMA_MINC_ENABLE; |
- | |
| 112 | hdma_adc.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD; |
- | |
| 113 | hdma_adc.Init.MemDataAlignment = DMA_MDATAALIGN_WORD; |
- | |
| 114 | hdma_adc.Init.Mode = DMA_CIRCULAR; // make the DMA loop automatically |
- | |
| 115 | hdma_adc.Init.Priority = DMA_PRIORITY_LOW; |
- | |
| 116 | HAL_DMA_Init(&hdma_adc); |
- | |
| 117 | __HAL_LINKDMA(&hadc, DMA_Handle, hdma_adc); |
- | |
| 118 | - | ||
| 119 | } |
- | |
| 120 | - | ||
| 121 | void plx_sendword(int x) { |
104 | void plx_sendword(int x) { |
| 122 | PutCharSerial(&uc1, ((x) >> 6) & 0x3F); |
105 | PutCharSerial(&uc1, ((x) >> 6) & 0x3F); |
| 123 | PutCharSerial(&uc1, (x) & 0x3F); |
106 | PutCharSerial(&uc1, (x) & 0x3F); |
| 124 | } |
107 | } |
| 125 | 108 | ||
| Line 149... | Line 132... | ||
| 149 | new_time = RPM_Time[next_count]; |
132 | new_time = RPM_Time[next_count]; |
| 150 | RPM_Count_Latch = next_count; |
133 | RPM_Count_Latch = next_count; |
| 151 | if (new_time > base_time) { |
134 | if (new_time > base_time) { |
| 152 | RPM_Pulsewidth = new_time - base_time; // not wrapped |
135 | RPM_Pulsewidth = new_time - base_time; // not wrapped |
| 153 | } else { |
136 | } else { |
| 154 | RPM_Pulsewidth = new_time + (~base_time) + 1; // deal with wrapping |
137 | RPM_Pulsewidth = new_time - base_time + 65536; // deal with wrapping |
| 155 | } |
138 | } |
| 156 | 139 | ||
| 157 | RPM_Diff += RPM_Pulsewidth; |
140 | RPM_Diff += RPM_Pulsewidth; |
| 158 | // need to check if this is a long pulse. If it is, keep the answer |
141 | // need to check if this is a long pulse. If it is, keep the answer |
| 159 | if (RPM_Pulsewidth > BREAKER_MIN) { |
142 | if (RPM_Pulsewidth > BREAKER_MIN) { |
| Line 262... | Line 245... | ||
| 262 | MX_DMA_Init(); |
245 | MX_DMA_Init(); |
| 263 | MX_ADC_Init(); |
246 | MX_ADC_Init(); |
| 264 | MX_SPI1_Init(); |
247 | MX_SPI1_Init(); |
| 265 | MX_TIM2_Init(); |
248 | MX_TIM2_Init(); |
| 266 | MX_TIM6_Init(); |
249 | MX_TIM6_Init(); |
| 267 | MX_USART1_UART_Init(); |
- | |
| 268 | MX_USART2_UART_Init(); |
250 | MX_USART2_UART_Init(); |
| - | 251 | MX_USART1_UART_Init(); |
|
| 269 | 252 | ||
| 270 | /* USER CODE BEGIN 2 */ |
253 | /* USER CODE BEGIN 2 */ |
| - | 254 | HAL_MspInit(); |
|
| 271 | 255 | ||
| 272 | __HAL_RCC_SPI1_CLK_ENABLE() |
- | |
| 273 | ; // Temp sensor port |
256 | // Not using HAL USART code |
| 274 | __HAL_RCC_USART1_CLK_ENABLE() |
257 | __HAL_RCC_USART1_CLK_ENABLE() |
| 275 | ; // PLX comms port |
258 | ; // PLX comms port |
| 276 | __HAL_RCC_USART2_CLK_ENABLE() |
259 | __HAL_RCC_USART2_CLK_ENABLE() |
| 277 | ; // Debug comms port |
260 | ; // Debug comms port |
| 278 | - | ||
| 279 | __HAL_RCC_ADC1_CLK_ENABLE() |
- | |
| 280 | ; // enable the ADC |
- | |
| 281 | - | ||
| 282 | __HAL_RCC_TIM6_CLK_ENABLE() |
- | |
| 283 | ; |
- | |
| 284 | __HAL_RCC_TIM2_CLK_ENABLE(); |
- | |
| 285 | - | ||
| 286 | ConfigureDMA(); |
- | |
| 287 | HAL_ADC_Start_DMA(&hadc, ADC_Samples, 6); |
- | |
| 288 | - | ||
| 289 | /* setup the USART control blocks */ |
261 | /* setup the USART control blocks */ |
| 290 | init_usart_ctl(&uc1, huart1.Instance); |
262 | init_usart_ctl(&uc1, huart1.Instance); |
| 291 | init_usart_ctl(&uc2, huart2.Instance); |
263 | init_usart_ctl(&uc2, huart2.Instance); |
| 292 | 264 | ||
| 293 | EnableSerialRxInterrupt(&uc1); |
265 | EnableSerialRxInterrupt(&uc1); |
| 294 | EnableSerialRxInterrupt(&uc2); |
266 | EnableSerialRxInterrupt(&uc2); |
| 295 | 267 | ||
| - | 268 | ||
| - | 269 | HAL_SPI_MspInit(&hspi1); |
|
| - | 270 | ||
| - | 271 | HAL_ADC_MspInit(&hadc); |
|
| - | 272 | HAL_ADC_Start_DMA(&hadc, ADC_Samples, 6); |
|
| - | 273 | ||
| - | 274 | ||
| - | 275 | ||
| - | 276 | HAL_TIM_Base_MspInit(&htim6); |
|
| 296 | HAL_TIM_Base_Start_IT(&htim6); |
277 | HAL_TIM_Base_Start_IT(&htim6); |
| 297 | HAL_TIM_Base_Start(&htim2); |
- | |
| 298 | 278 | ||
| - | 279 | // initialise all the STMCubeMX stuff |
|
| - | 280 | HAL_TIM_Base_MspInit(&htim2); |
|
| - | 281 | // Start the counter |
|
| - | 282 | HAL_TIM_Base_Start(&htim2); |
|
| - | 283 | // Start the input capture and the interrupt |
|
| 299 | __HAL_TIM_ENABLE_IT(&htim2, TIM_IT_CC1); |
284 | HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1); |
| 300 | 285 | ||
| 301 | 286 | ||
| 302 | /* USER CODE END 2 */ |
287 | /* USER CODE END 2 */ |
| 303 | 288 | ||
| 304 | /* Infinite loop */ |
289 | /* Infinite loop */ |
| Line 336... | Line 321... | ||
| 336 | if (send) |
321 | if (send) |
| 337 | { |
322 | { |
| 338 | send = 0; |
323 | send = 0; |
| 339 | 324 | ||
| 340 | uint16_t val; |
325 | uint16_t val; |
| 341 | val = __HAL_TIM_GET_COUNTER(&htim2); |
326 | val = __HAL_TIM_GET_COMPARE(&htim2,TIM_CHANNEL_1); |
| 342 | PutCharSerial(&uc2,(val&31) + 32); |
327 | PutCharSerial(&uc2,(val&31) + 32); |
| 343 | 328 | ||
| - | 329 | ||
| - | 330 | ||
| 344 | // send the observations |
331 | // send the observations |
| 345 | ProcessRPM(0); |
332 | ProcessRPM(0); |
| 346 | ProcessCHT(0); |
333 | ProcessCHT(0); |
| 347 | ProcessBatteryVoltage(0); |
334 | // ProcessBatteryVoltage(0); |
| 348 | ProcessBatteryVoltage(1); |
335 | // ProcessBatteryVoltage(1); |
| 349 | 336 | ||
| 350 | PutCharSerial(&uc1,PLX_Stop); |
337 | PutCharSerial(&uc1,PLX_Stop); |
| 351 | } |
338 | } |
| 352 | 339 | ||
| 353 | } |
340 | } |
| Line 511... | Line 498... | ||
| 511 | { |
498 | { |
| 512 | 499 | ||
| 513 | TIM_ClockConfigTypeDef sClockSourceConfig; |
500 | TIM_ClockConfigTypeDef sClockSourceConfig; |
| 514 | TIM_MasterConfigTypeDef sMasterConfig; |
501 | TIM_MasterConfigTypeDef sMasterConfig; |
| 515 | TIM_IC_InitTypeDef sConfigIC; |
502 | TIM_IC_InitTypeDef sConfigIC; |
| 516 | TIM_OC_InitTypeDef sConfigOC; |
- | |
| 517 | 503 | ||
| 518 | htim2.Instance = TIM2; |
504 | htim2.Instance = TIM2; |
| 519 | htim2.Init.Prescaler = 320; |
505 | htim2.Init.Prescaler = 320; |
| 520 | htim2.Init.CounterMode = TIM_COUNTERMODE_UP; |
506 | htim2.Init.CounterMode = TIM_COUNTERMODE_UP; |
| 521 | htim2.Init.Period = 0xFFFF; |
507 | htim2.Init.Period = 65535; |
| 522 | htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; |
508 | htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; |
| 523 | if (HAL_TIM_Base_Init(&htim2) != HAL_OK) |
509 | if (HAL_TIM_Base_Init(&htim2) != HAL_OK) |
| 524 | { |
510 | { |
| 525 | Error_Handler(); |
511 | Error_Handler(); |
| 526 | } |
512 | } |
| Line 534... | Line 520... | ||
| 534 | if (HAL_TIM_IC_Init(&htim2) != HAL_OK) |
520 | if (HAL_TIM_IC_Init(&htim2) != HAL_OK) |
| 535 | { |
521 | { |
| 536 | Error_Handler(); |
522 | Error_Handler(); |
| 537 | } |
523 | } |
| 538 | 524 | ||
| 539 | if (HAL_TIM_OC_Init(&htim2) != HAL_OK) |
- | |
| 540 | { |
- | |
| 541 | Error_Handler(); |
- | |
| 542 | } |
- | |
| 543 | - | ||
| 544 | if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) |
- | |
| 545 | { |
- | |
| 546 | Error_Handler(); |
- | |
| 547 | } |
- | |
| 548 | - | ||
| 549 | sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; |
525 | sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE; |
| 550 | sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; |
526 | sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; |
| 551 | if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) |
527 | if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) |
| 552 | { |
528 | { |
| 553 | Error_Handler(); |
529 | Error_Handler(); |
| 554 | } |
530 | } |
| Line 560... | Line 536... | ||
| 560 | if (HAL_TIM_IC_ConfigChannel(&htim2, &sConfigIC, TIM_CHANNEL_1) != HAL_OK) |
536 | if (HAL_TIM_IC_ConfigChannel(&htim2, &sConfigIC, TIM_CHANNEL_1) != HAL_OK) |
| 561 | { |
537 | { |
| 562 | Error_Handler(); |
538 | Error_Handler(); |
| 563 | } |
539 | } |
| 564 | 540 | ||
| 565 | if (HAL_TIM_IC_ConfigChannel(&htim2, &sConfigIC, TIM_CHANNEL_2) != HAL_OK) |
- | |
| 566 | { |
- | |
| 567 | Error_Handler(); |
- | |
| 568 | } |
- | |
| 569 | - | ||
| 570 | sConfigOC.OCMode = TIM_OCMODE_TIMING; |
- | |
| 571 | sConfigOC.Pulse = 0; |
- | |
| 572 | sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; |
- | |
| 573 | sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; |
- | |
| 574 | if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) |
- | |
| 575 | { |
- | |
| 576 | Error_Handler(); |
- | |
| 577 | } |
- | |
| 578 | - | ||
| 579 | sConfigOC.OCMode = TIM_OCMODE_PWM1; |
- | |
| 580 | if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) |
- | |
| 581 | { |
- | |
| 582 | Error_Handler(); |
- | |
| 583 | } |
- | |
| 584 | - | ||
| 585 | HAL_TIM_MspPostInit(&htim2); |
- | |
| 586 | - | ||
| 587 | } |
541 | } |
| 588 | 542 | ||
| 589 | /* TIM6 init function */ |
543 | /* TIM6 init function */ |
| 590 | static void MX_TIM6_Init(void) |
544 | static void MX_TIM6_Init(void) |
| 591 | { |
545 | { |
| 592 | 546 | ||
| 593 | TIM_MasterConfigTypeDef sMasterConfig; |
547 | TIM_MasterConfigTypeDef sMasterConfig; |
| 594 | 548 | ||
| 595 | htim6.Instance = TIM6; |
549 | htim6.Instance = TIM6; |
| 596 | htim6.Init.Prescaler = 3200; |
550 | htim6.Init.Prescaler = 320; |
| 597 | htim6.Init.CounterMode = TIM_COUNTERMODE_UP; |
551 | htim6.Init.CounterMode = TIM_COUNTERMODE_UP; |
| 598 | htim6.Init.Period = 1000; |
552 | htim6.Init.Period = 9999; |
| 599 | if (HAL_TIM_Base_Init(&htim6) != HAL_OK) |
553 | if (HAL_TIM_Base_Init(&htim6) != HAL_OK) |
| 600 | { |
554 | { |
| 601 | Error_Handler(); |
555 | Error_Handler(); |
| 602 | } |
556 | } |
| 603 | 557 | ||
| Line 727... | Line 681... | ||
| 727 | GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
681 | GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
| 728 | GPIO_InitStruct.Pull = GPIO_NOPULL; |
682 | GPIO_InitStruct.Pull = GPIO_NOPULL; |
| 729 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
683 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
| 730 | HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
684 | HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
| 731 | 685 | ||
| 732 | /*Configure GPIO pins : PB2 PB12 PB13 PB14 |
686 | /*Configure GPIO pins : PB2 PB10 PB11 PB12 |
| 733 | PB15 PB4 PB5 PB6 |
687 | PB13 PB14 PB15 PB3 |
| - | 688 | PB4 PB5 PB6 PB7 |
|
| 734 | PB7 PB8 PB9 */ |
689 | PB8 PB9 */ |
| 735 | GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14 |
690 | GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12 |
| 736 | |GPIO_PIN_15|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6 |
691 | |GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_3 |
| - | 692 | |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7 |
|
| 737 | |GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9; |
693 | |GPIO_PIN_8|GPIO_PIN_9; |
| 738 | GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; |
694 | GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; |
| 739 | GPIO_InitStruct.Pull = GPIO_NOPULL; |
695 | GPIO_InitStruct.Pull = GPIO_NOPULL; |
| 740 | HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
696 | HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
| 741 | 697 | ||
| 742 | /*Configure GPIO pin : PD2 */ |
698 | /*Configure GPIO pin : PD2 */ |