Finite State Machine
The program will be controlled through the use of multiple Finite State Machines to ensure that inputs are only serviced at the appropriate periods. The system will use three state machines to :
Pedal State Machine:
This state machine governs the running state of the car and defines the conditions under which the driver can turn on and move the vehicle. Transitions for this FSM depend on the state of the directional state machine.
State | Description |
---|---|
Off | The vehicle is not receiving power |
Idle | The car is on, but no pedals are pressed |
Driving | The gas pedal is pressed car is in motion. |
Brake | The brakes are engaged and the car is not moving |
Directional State Machine
Governs the possible gear shifts made by the user.
State | Description |
---|---|
Neutral | The vehicle is in neutral gear |
Forward | The vehicle is in forward gear |
Reverse | The vehicle is in reverse |
Turn Signal State Machine
Governs the states of the turn signals made by the driver. Independent from the other FSMs.
State | Description |
---|---|
No signal | The car is currently not signalling |
Left signal | The car has the left signal active |
Right signal | The car has the left signal active |
ADC Driver
On the STM32 is a 12-bit analog-to-digitalĀ converter (ADC). The role of an ADC is to take an analog signal as an input and give as output a digital number proportional to the magnitude of the input signal. The following formula can be used to determine the ADC reading:
The ADC has 19 multiplexed channels, with 16 of them being mapped to analog input pins. The 16 external pin mappings for the STM32 are as follows:
ADC Channel | Pin Name |
---|---|
ADC_IN0 | PA0 |
ADC_IN1 | PA1 |
ADC_IN2 | PA2 |
ADC_IN3 | PA3 |
ADC_IN4 | PA4 |
ADC_IN5 | PA5 |
ADC_IN6 | PA6 |
ADC_IN7 | PA7 |
ADC_IN8 | PB0 |
ADC_IN9 | PB1 |
ADC_IN10 | PC0 |
ADC_IN11 | PC1 |
ADC_IN12 | PC2 |
ADC_IN13 | PC3 |
ADC_IN14 | PC4 |
ADC_IN15 | PC5 |
In addition, the ADC has two different modes for converting analog signals:
- Single Conversion Mode: The ADC performs the conversion for a channel and stops after the conversion for that channel has been completed
- Continuous Conversion Mode: The ADC will convert a channel indefinitely at regular intervalsĀ