This document shows the step-by-step process to create a simple blinking LED application for the S32G family using the S32 RTD AUTOSAR drivers. This example used for the S32G-VNP-RDB2 EVB, connected via ethernet connection through S32 Debugger.
Preparation
Setup the software tools
Install S32 Design Studio for S32 Platform
Install the S32G development package and the S32 RTD AUTOSAR 4.4. Both of these are required for the S32 Configuration Tools.
Launch S32 Design Studio for S32 Platform
Procedure
New S32DS Project OR
Provide a name for the project, for example 'Blinking_LED_RTD_With_AUTOSAR'. The name must be entered with no space characters.
Expand Family S32G2, Select S3G274A_Rev2 Cortex-M7
Click Next
Click '…' button next to SDKs
Check box next to PlatformSDK_S32XX_2022_07_S32G274A_Rev2_M7_0. Click OK
And also, uncheck the other cores Cortex_M7_1 , Cortex_M7_2.
Click Finish. Wait for project generation wizard to complete, then expand the project within the Project Explorer view to show the contents.
To control the LED on the board, some configuration needs to be performed within the Pins Tool. There are several ways to do this. One simple way by double-click on the MEX file.
Select the overview tab and disable Pins tool. Make sure to overview tab windows shows settings shown as below. Here, we are disabling pin tools and using MCAL driver from peripheral tools for using AUTOSAR drivers.
Now from Overview menu, select peripheral tools and double click to open it.
In the driver sections, “Siul2_Port_1 driver” is the non-AUTOSAR version driver and so it must be replaced. Right click on ‘Siul2_Port_1’ and remove it. Keep the osif_1 driver as it is.
Click on the ‘+’ next to the MCAL box.
Locate and then select the ‘MCU’ component from the list and click OK.
Click on the ‘+’ next to the MCAL box again, and Locate and then select the ‘Dio’ component from the list and click OK.
Click on the ‘+’ next to the MCAL box again, and Locate and then select the ‘Port’ component from the list and click OK. Now components tab should show like below :
Now we required to configure the different MCAL drivers that we added. Starting with Dio configuration, open the Dio configuration.
Now, open the ‘DioGeneral’ tab, and select checkmark as per shown below:
Now, open the ”DioConfig” tab. In that, select “+” sign adjacent to Dio Channel.
Then edit Name to Digital_Output_LED and “Dio Channel Id” to ‘6’ instead of ‘0’. From the schematic for S32G-VNP-RDB2 EVB, we can select signal line based on your choice for the LED color for the multicolor RGB LED. Now, checking for blue user LED from the schematic, channel 6 is connected to blue LED signal, so we use channel 6 signal line to the chip on the blue LED. Similarly, so you can select signal line based on LED color you select.
Now Select Port tab for Port configuration.
And open the Port Configuration tab, and from that open “PortConfigSet” tab.
Change the PortPin Mscr to 6 , PortPin Direction to PORT_PIN_INOUT. After change it should be as below.
At the bottom you will find the “UnTouchedPortPin ’’ . Click on “+’’ and add PortPins.
Now add 4 port pins as per below configuration. Pins 0, 1, 4, and 5 should be setup.
Now configure MCU component. Select Mcu component in MCAL, and then open the Mcu configuration.
In Mcu configuration select “McuModesettingConf” from the dropdown menu as shown below.
Select ‘McuPartition0Config’ and deselect checkbox for CM7_0 Under MCU Control, CM7_1 Under MCU Control, CM7_2 Under MCU Control as marked below. And it should show as below
Now select the Mcupartition1Config and uncheck checkmarks from the selection boxes as shown below
Now the device configurations are complete and the RTD configuration code can be generated. Click ‘Update Code’ from the menu bar.
To control the output pin which was just configured, some application code will need to be written. Return to the ‘C/C++’ perspective.
If not already open, in the project window click the ‘>’ next to the ‘src’ folder to show the contents, then double click ‘main.c’ file to open it. This is where the application code will be added.
Before anything else is done, Initialize the clock tree and apply PLL as system clock, Apply a mode configuration, Initialize all pins using the Port driver by adding – editing code before write code here comment in main function.
Mcu_Init(&Mcu_Config_BOARD_InitPeripherals);
/* Initialize the clock tree and apply PLL as system clock */ Mcu_InitClock(McuClockSettingConfig_0);
/* Apply a mode configuration */ Mcu_SetMode(McuModeSettingConf_0);
/* Initialize all pins using the Port driver */ Port_Init(NULL_PTR);
Now replace the logic of for loop as shown below code section, which will enable the LED blinking for 10 times: First define the variable volatile uint8 level; globally above the main function. You also need to declare and initialize the loop variable uint8 i = 0U. Then replace the code as below:
while (i++ < 10) { Dio_WriteChannel(DioConf_DioChannel_Digital_Output_LED, STD_HIGH); level = Dio_ReadChannel(DioConf_DioChannel_Digital_Output_LED); TestDelay(2000000); Dio_WriteChannel(DioConf_DioChannel_Digital_Output_LED, STD_LOW); level = Dio_ReadChannel(DioConf_DioChannel_Digital_Output_LED); TestDelay(2000000); }
Before the 'main' function, add a delay function as follows: void TestDelay(uint32 delay); void TestDelay(uint32 delay) { static volatile uint32 DelayTimer = 0; while(DelayTimer<delay) { DelayTimer++; } DelayTimer=0; }
Update the includes lines at the top of the main.c file to include the headers for the drivers used in the application: Add
#include "Mcu.h" #include "Port.h" #include "Dio.h"
Build 'Blinking_LED_RTD_AUTOSAR'. Select the project name in 'C/C++ Projects' view and then press 'Build'.
After the build completes, check that there are no errors.
Open Debug Configurations and select 'Blinking_LED_RTD_with_AUTOSAR_Debug_RAM'. Make sure to select the configuration which matches the build type performed, otherwise it may report an error if the build output doesn’t exist.
And make selection as shown in screenshot below. You need to select the ethernet connection for S32 debugger and provide its IP address
Click Debug
To see the LED blink, click ‘Resume'
This code as it is will blink the LED 10 times, you can make changes in for loop condition to blink it infinitely.
View full article