
4.3.1.3
AEK-LCD-DT028V1 AutoDevKit component API
All the development drivers related to the LCD display based on the
board are included in a
) version 1.5.0 (or higher). The library
is written in MISRA C. The target software is generated automatically according to the code generation and pin
allocation paradigm included in the
To configure the
application, follow the
procedure below.
Step 1.
Go to the [
SPC58ECxx Platform Component RLA
] in the project explorer and add a new [
AEK-LCD-
DT028V1 Component RLA
] from the list.
Step 2.
Select the font file to embed in your application. (font size = 12 pt).
Step 3.
Go to the configuration portion of the component and add an entry on the board list, selecting the SPI
port (DSPI) and the related chip selects (CS) for the display and touch screen.
Step 4.
Use the [
Board Viewer
] to determine how to connect the MCU board to the LCD display board.
The following
–
To initialize the display:
aek_ili9341_init(AEK_LCD_DEV0);
–
To set the orientation:
aek_ili9341_setOrientation(AEK_LCD_DEV0,
ILI9341_ROTATE_LANDSCAPE);
–
To draw display icons and show results:
aek_ili9341_fillRect(AEK_LCD_DEV0,102,20,150,160,BLUE1)
aek_ili9341_drawImage(AEK_LCD_DEV0,110, 20, (int16_t)parking.width,
(int16_t)parking.height, parking.pixel_data, PIXFMT_RGB_565);
aek_ili9341_drawString(AEK_LCD_DEV0, 102, 160, "PARKING", color,
font24pt);
4.3.2
High-level software
This layer includes:
•
IMU middleware
•
AI sensing node network middleware
•
LCD display middleware
4.3.2.1
IMU middleware
The IMU middleware is responsible for:
•
initializing the inertial measurement unit:
void init_IMU()
•
acquiring and removing the IMU offset values on the three-axis reference system due to the incorrect ECU
positioning and gravity effect on the z -axis:
void get_offset_IMU(void)
•
collecting data from IMU and perform data buffering on the
buffer_difference_accelerations
array of the Δ
acceleration on the three-axis:
void collect_data_IMU(void)
buffer_difference_accelerations[BUFFER_ACCELERATIONS_SIZE] = {
ΔAcc_x_sample1, ΔAcc_y_sample1, ΔAcc_z_sample1, ΔAcc_x_sample2, ΔAcc_y_sample2,
ΔAcc_z_sample2, ΔAcc_x_sample3, ΔAcc_y_sample3, ΔAcc_z_sample3, ……..}
where
BUFFER_ACCELERATIONS_SIZE = S * 1 * D;
S = 50 is the number of samples of LSTM network window.
D = 3 is three times the Δ acceleration on the three-axis.
•
returning the
buffer_difference_acceleration
array for the neural network processing:
float*
get_diff_acceleration_buffer_IMU(void);
•
sending a frame of the raw acceleration array for the neural network training with the serial protocol through
Google Colab:
void send_frame(void)
Note:
To evaluate the accuracy of the LSTM neural network, we have created an IMU_LOG.h file that contains a fixed
buffer_difference_accelerations array. This array has been loaded on the flash memory and contains 3-axis Δ
acceleration samples with the known car state (parking, normal, bumpy, skid).
UM3053
Software architecture overview
UM3053
-
Rev 1
page 25/39