Subversion Repositories AFRtranscoder

Rev

Rev 2 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 3
Line 22... Line 22...
22
/* Private includes ----------------------------------------------------------*/
22
/* Private includes ----------------------------------------------------------*/
23
/* USER CODE BEGIN Includes */
23
/* USER CODE BEGIN Includes */
24
#include "libSerial/serial.h"
24
#include "libSerial/serial.h"
25
#include "libPLX/commsLib.h"
25
#include "libPLX/commsLib.h"
26
#include "libTinyWB/tinyWB.h"
26
#include "libTinyWB/tinyWB.h"
-
 
27
 
-
 
28
// Semihosting enable : see
-
 
29
// https://community.st.com/t5/stm32-mcus/how-to-use-semihosting-with-stm32cubeide-and-stm32/ta-p/49742
-
 
30
/// #include <stdio.h>
-
 
31
// extern void initialise_monitor_handles(void);
27
/* USER CODE END Includes */
32
/* USER CODE END Includes */
28
 
33
 
29
/* Private typedef -----------------------------------------------------------*/
34
/* Private typedef -----------------------------------------------------------*/
30
/* USER CODE BEGIN PTD */
35
/* USER CODE BEGIN PTD */
31
 
36
 
Line 42... Line 47...
42
/* USER CODE END PM */
47
/* USER CODE END PM */
43
 
48
 
44
/* Private variables ---------------------------------------------------------*/
49
/* Private variables ---------------------------------------------------------*/
45
CAN_HandleTypeDef hcan;
50
CAN_HandleTypeDef hcan;
46
 
51
 
-
 
52
IWDG_HandleTypeDef hiwdg;
-
 
53
 
47
SPI_HandleTypeDef hspi1;
54
SPI_HandleTypeDef hspi1;
48
 
55
 
49
UART_HandleTypeDef huart1;
56
UART_HandleTypeDef huart1;
50
UART_HandleTypeDef huart2;
57
UART_HandleTypeDef huart2;
51
 
58
 
Line 73... Line 80...
73
static void MX_GPIO_Init(void);
80
static void MX_GPIO_Init(void);
74
static void MX_CAN_Init(void);
81
static void MX_CAN_Init(void);
75
static void MX_SPI1_Init(void);
82
static void MX_SPI1_Init(void);
76
static void MX_USART1_UART_Init(void);
83
static void MX_USART1_UART_Init(void);
77
static void MX_USART2_UART_Init(void);
84
static void MX_USART2_UART_Init(void);
-
 
85
static void MX_IWDG_Init(void);
78
/* USER CODE BEGIN PFP */
86
/* USER CODE BEGIN PFP */
79
 
87
 
80
// user provided callback symbol
88
// user provided callback symbol
81
void libPLXcallbackSendUserData()
89
void libPLXcallbackSendUserData()
82
{
90
{
83
 
91
 
84
  if (heaterEnable)
-
 
85
    HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
92
  HAL_GPIO_TogglePin(YELLOW_LED_GPIO_Port, YELLOW_LED_Pin);
86
  else
-
 
87
    HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin,GPIO_PIN_RESET);
-
 
88
  // send AFR
93
  // send AFR
89
 
-
 
90
  PLX_SensorInfo info;
94
  PLX_SensorInfo info;
91
  ConvToPLXInstance(libPLXgetNextInstance(PLX_AFR), &info);
95
  ConvToPLXInstance(libPLXgetNextInstance(PLX_AFR), &info);
92
  ConvToPLXAddr(PLX_AFR, &info);
96
  ConvToPLXAddr(PLX_AFR, &info);
93
  ConvToPLXReading(ConveriMFDData2Raw(PLX_AFR, AFR_Gasoline, AFRValue), &info);
97
  ConvToPLXReading(ConveriMFDData2Raw(PLX_AFR, AFR_Gasoline, AFRValue), &info);
94
  sendInfo(&uc2, &info);
98
  sendInfo(&uc2, &info);
Line 114... Line 118...
114
{
118
{
115
 
119
 
116
  heaterEnable = (HAL_GetTick() - timeValue) > MIN_RPM_TIME_ACTIVE;
120
  heaterEnable = (HAL_GetTick() - timeValue) > MIN_RPM_TIME_ACTIVE;
117
  // Active low pin to enable AFR if RPM has exceeded minimum for at least the active time
121
  // Active low pin to enable AFR if RPM has exceeded minimum for at least the active time
118
  HAL_GPIO_WritePin(enableAFRN_GPIO_Port, enableAFRN_Pin, heaterEnable ? GPIO_PIN_RESET : GPIO_PIN_SET);
122
  HAL_GPIO_WritePin(enableAFRN_GPIO_Port, enableAFRN_Pin, heaterEnable ? GPIO_PIN_RESET : GPIO_PIN_SET);
-
 
123
 
-
 
124
  HAL_GPIO_WritePin(GREEN_LED_GPIO_Port, GREEN_LED_Pin, heaterEnable);
-
 
125
}
-
 
126
 
-
 
127
// refresh watchdog timer
-
 
128
void watchdogWrite()
-
 
129
{
-
 
130
  HAL_IWDG_Refresh(&hiwdg);
119
}
131
}
120
 
132
 
121
/* USER CODE END PFP */
133
/* USER CODE END PFP */
122
 
134
 
123
/* Private user code ---------------------------------------------------------*/
135
/* Private user code ---------------------------------------------------------*/
Line 130... Line 142...
130
 * @retval int
142
 * @retval int
131
 */
143
 */
132
int main(void)
144
int main(void)
133
{
145
{
134
  /* USER CODE BEGIN 1 */
146
  /* USER CODE BEGIN 1 */
-
 
147
  //  initialise_monitor_handles();
135
 
148
 
136
  /* USER CODE END 1 */
149
  /* USER CODE END 1 */
137
 
150
 
138
  /* MCU Configuration--------------------------------------------------------*/
151
  /* MCU Configuration--------------------------------------------------------*/
139
 
152
 
Line 155... Line 168...
155
  MX_GPIO_Init();
168
  MX_GPIO_Init();
156
  MX_CAN_Init();
169
  MX_CAN_Init();
157
  MX_SPI1_Init();
170
  MX_SPI1_Init();
158
  MX_USART1_UART_Init();
171
  MX_USART1_UART_Init();
159
  MX_USART2_UART_Init();
172
  MX_USART2_UART_Init();
-
 
173
  MX_IWDG_Init();
160
  /* USER CODE BEGIN 2 */
174
  /* USER CODE BEGIN 2 */
161
  init_usart_ctl(&uc1, &huart1, tx1Buffer, rx1Buffer, TX_USART_BUFF_SIZ, RX_USART_BUFF_SIZ);
175
  init_usart_ctl(&uc1, &huart1, tx1Buffer, rx1Buffer, TX_USART_BUFF_SIZ, RX_USART_BUFF_SIZ);
162
  init_usart_ctl(&uc2, &huart2, tx2Buffer, rx2Buffer, TX_USART_BUFF_SIZ, RX_USART_BUFF_SIZ);
176
  init_usart_ctl(&uc2, &huart2, tx2Buffer, rx2Buffer, TX_USART_BUFF_SIZ, RX_USART_BUFF_SIZ);
163
 
177
 
164
  ResetRxBuffer(&uc1);
178
  ResetRxBuffer(&uc1);
Line 176... Line 190...
176
    pollTinyWB(&uc1, &AFRValue, &temperature);
190
    pollTinyWB(&uc1, &AFRValue, &temperature);
177
    // Handle PLX
191
    // Handle PLX
178
    libPLXpollData(&uc2);
192
    libPLXpollData(&uc2);
179
 
193
 
180
    checkHeaterEnable();
194
    checkHeaterEnable();
-
 
195
    watchdogWrite();
-
 
196
 
-
 
197
    HAL_Delay(10);
181
    /* USER CODE END WHILE */
198
    /* USER CODE END WHILE */
182
 
199
 
183
    /* USER CODE BEGIN 3 */
200
    /* USER CODE BEGIN 3 */
184
  }
201
  }
185
  /* USER CODE END 3 */
202
  /* USER CODE END 3 */
Line 195... Line 212...
195
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
212
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
196
 
213
 
197
  /** Initializes the RCC Oscillators according to the specified parameters
214
  /** Initializes the RCC Oscillators according to the specified parameters
198
   * in the RCC_OscInitTypeDef structure.
215
   * in the RCC_OscInitTypeDef structure.
199
   */
216
   */
200
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
217
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_HSE;
201
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
218
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
202
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
219
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
203
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
220
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
-
 
221
  RCC_OscInitStruct.LSIState = RCC_LSI_ON;
204
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
222
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
205
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
223
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
206
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL8;
224
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL8;
207
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
225
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
208
  {
226
  {
Line 258... Line 276...
258
 
276
 
259
  /* USER CODE END CAN_Init 2 */
277
  /* USER CODE END CAN_Init 2 */
260
}
278
}
261
 
279
 
262
/**
280
/**
-
 
281
 * @brief IWDG Initialization Function
-
 
282
 * @param None
-
 
283
 * @retval None
-
 
284
 */
-
 
285
static void MX_IWDG_Init(void)
-
 
286
{
-
 
287
 
-
 
288
  /* USER CODE BEGIN IWDG_Init 0 */
-
 
289
 
-
 
290
  /* USER CODE END IWDG_Init 0 */
-
 
291
 
-
 
292
  /* USER CODE BEGIN IWDG_Init 1 */
-
 
293
 
-
 
294
  /* USER CODE END IWDG_Init 1 */
-
 
295
  hiwdg.Instance = IWDG;
-
 
296
  hiwdg.Init.Prescaler = IWDG_PRESCALER_32;
-
 
297
  hiwdg.Init.Reload = 4095;
-
 
298
  if (HAL_IWDG_Init(&hiwdg) != HAL_OK)
-
 
299
  {
-
 
300
    Error_Handler();
-
 
301
  }
-
 
302
  /* USER CODE BEGIN IWDG_Init 2 */
-
 
303
 
-
 
304
  /* USER CODE END IWDG_Init 2 */
-
 
305
}
-
 
306
 
-
 
307
/**
263
 * @brief SPI1 Initialization Function
308
 * @brief SPI1 Initialization Function
264
 * @param None
309
 * @param None
265
 * @retval None
310
 * @retval None
266
 */
311
 */
267
static void MX_SPI1_Init(void)
312
static void MX_SPI1_Init(void)
Line 379... Line 424...
379
 
424
 
380
  /*Configure GPIO pin Output Level */
425
  /*Configure GPIO pin Output Level */
381
  HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
426
  HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
382
 
427
 
383
  /*Configure GPIO pin Output Level */
428
  /*Configure GPIO pin Output Level */
384
  HAL_GPIO_WritePin(GPIOA, SPI_CD_Pin | SPI_NSS_Pin, GPIO_PIN_RESET);
429
  HAL_GPIO_WritePin(GPIOA, GREEN_LED_Pin | YELLOW_LED_Pin | SPI_CD_Pin | SPI_NSS_Pin, GPIO_PIN_RESET);
385
 
430
 
386
  /*Configure GPIO pin Output Level */
431
  /*Configure GPIO pin Output Level */
387
  HAL_GPIO_WritePin(SPI_RESET_GPIO_Port, SPI_RESET_Pin, GPIO_PIN_RESET);
432
  HAL_GPIO_WritePin(SPI_RESET_GPIO_Port, SPI_RESET_Pin, GPIO_PIN_RESET);
388
 
433
 
389
  /*Configure GPIO pin Output Level */
434
  /*Configure GPIO pin Output Level */
390
  HAL_GPIO_WritePin(enableAFRN_GPIO_Port, enableAFRN_Pin, GPIO_PIN_RESET);
435
  HAL_GPIO_WritePin(enableAFRN_GPIO_Port, enableAFRN_Pin, GPIO_PIN_SET);
391
 
436
 
392
  /*Configure GPIO pin : LED_Pin */
437
  /*Configure GPIO pin : LED_Pin */
393
  GPIO_InitStruct.Pin = LED_Pin;
438
  GPIO_InitStruct.Pin = LED_Pin;
394
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
439
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
395
  GPIO_InitStruct.Pull = GPIO_NOPULL;
440
  GPIO_InitStruct.Pull = GPIO_NOPULL;
396
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
441
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
397
  HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
442
  HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
398
 
443
 
399
  /*Configure GPIO pins : SPI_CD_Pin SPI_NSS_Pin */
444
  /*Configure GPIO pins : GREEN_LED_Pin YELLOW_LED_Pin SPI_CD_Pin SPI_NSS_Pin */
400
  GPIO_InitStruct.Pin = SPI_CD_Pin | SPI_NSS_Pin;
445
  GPIO_InitStruct.Pin = GREEN_LED_Pin | YELLOW_LED_Pin | SPI_CD_Pin | SPI_NSS_Pin;
401
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
446
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
402
  GPIO_InitStruct.Pull = GPIO_NOPULL;
447
  GPIO_InitStruct.Pull = GPIO_NOPULL;
403
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
448
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
404
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
449
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
405
 
450