R20UT3659EJ0100-AUTOSARs




 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
AUTOSAR MCAL R4.0.3 
User's Manual 
 
 
 
 
 
SPI Driver Component Ver.1.0.2 
Embedded User's Manual 
 
 
  
Target Device: 
RH850/P1x-C 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
All information contained in these materials, including products and product specifications, 
represents information on the product at the time of publication and is subject to change by 
Renesas Electronics Corp. without notice. Please review the latest information published by 
Renesas Electronics Corp. through various means, including the Renesas Electronics Corp. 
website (http://www.renesas.com). 
 
 
 
 
 
 
www.renesas.com 
Rev.1.00 Feb 2017 

 
 
 
 
 
 


 
 
 
 
 
Notice 
 
 
1. 
Descriptions of circuits, software and other related information in this document are provided only to illustrate the operation of 
 
semiconductor products and application examples. You are fully responsible for the incorporation or any other use of the circuits, 
 
software, and information in the design of your product or system. Renesas Electronics disclaims any and all liability for any losses and 
 
damages incurred by you or third parties arising from the use of these circuits, software, or information. 
 
2. 
Renesas Electronics hereby expressly disclaims any warranties against and liability for infringement or any other disputes involving patents, 
 
copyrights, or other intellectual property rights of third parties, by or arising from the use of Renesas Electronics products or technical information 
 
described in this document, including but not limited to, the product data, drawing, chart, program, algorithm, application examples. 
 
3. 
No license, express, implied or otherwise, is granted hereby under any patents, copyrights or other intellectual property rights of Renesas 
 
Electronics or others. 
 
 
4. 
You shall not alter, modify, copy, or otherwise misappropriate any Renesas Electronics product, whether in whole or in part. Renesas Electronics 
 
disclaims any and all liability for any losses or damages incurred by you or third parties arising from such alteration, modification, copy or 
 
otherwise misappropriation of Renesas Electronics products. 
 
5. 
Renesas Electronics products are classified according to the following two quality grades: "Standard" and "High Quality". The intended 
 
applications for each Renesas Electronics product depends on the product’s quality grade, as indicated below.  
 
"Standard":          Computers; office equipment; communications equipment; test and measurement equipment; audio and visual equipment; 
 
home electronic appliances; machine tools; personal electronic equipment; and industrial robots etc. 
 
"High Quality":   Transportation equipment (automobiles, trains, ships, etc.); traffic control (traffic lights); large-scale communication 
 
equipment; key financial terminal systems; safety control equipment; etc. 
 
 
Renesas Electronics products are neither intended nor authorized for use in products or systems that may pose a direct threat to human life or 
 
bodily injury (artificial life support devices or systems, surgical implantations etc.), or may cause serious property damages (space and undersea 
 
repeaters; nuclear power control systems; aircraft control systems; key plant systems; military equipment; etc.). Renesas Electronics disclaims any 
and all liability for any damages or losses incurred by you or third parties arising from the use of any Renesas Electronics product for which the 
 
product is not intended by Renesas Electronics. 
 
 
6. 
When using the Renesas Electronics products, refer to the latest product information (data sheets, user's manuals, application notes, "General 
 
Notes for Handling and Using Semiconductor Devices" in the reliability handbook, etc.), and ensure that usage conditions are within the ranges 
 
specified by Renesas Electronics with respect to maximum ratings, operating power supply voltage range, heat radiation characteristics, 
 
installation, etc. Renesas Electronics disclaims any and all liability for any malfunctions or failure or accident arising out of the use of Renesas 
 
Electronics products beyond such specified ranges. 
 
7. 
Although Renesas Electronics endeavors to improve the quality and reliability of Renesas Electronics products, semiconductor products have 
 
specific characteristics such as the occurrence of failure at a certain rate and malfunctions under certain use conditions. Further, Renesas 
 
Electronics products are not subject to radiation resistance design. Please ensure to implement safety measures to guard them against the 
 
possibility of bodily injury, injury or damage caused by fire, and social damage in the event of failure or malfunction of Renesas Electronics 
 
products, such as safety design for hardware and software including but not limited to redundancy, fire control and malfunction prevention, 
 
appropriate treatment for aging degradation or any other appropriate measures by your own responsibility as warranty for your products/system. 
 
Because the evaluation of microcomputer software alone is very difficult and not practical, please evaluate the safety of the final products or 
 
systems manufactured by you. 
 
8. 
Please contact a Renesas Electronics sales office for details as to environmental matters such as the environmental compatibility of each Renesas 
 
Electronics product. Please investigate applicable laws and regulations that regulate the inclusion or use of controlled substances, including 
 
without limitation, the EU RoHS Directive carefully and sufficiently and use Renesas Electronics products in compliance with all these applicable 
 
laws and regulations. Renesas Electronics disclaims any and all liability for damages or losses occurring as a result of your noncompliance with 
 
applicable laws and regulations. 
 
9. 
Renesas Electronics products and technologies shall not be used for or incorporated into any products or systems whose manufacture, use, or sale 
 
is prohibited under any applicable domestic or foreign laws or regulations. You shall not use Renesas Electronics products or technologies for (1) 
 
any purpose relating to the development, design, manufacture, use, stockpiling, etc., of weapons of mass destruction, such as nuclear weapons, 
 
chemical weapons, or biological weapons, or missiles (including unmanned aerial vehicles (UAVs)) for delivering such weapons, (2) any purpose 
 
relating to the development, design, manufacture, or use of conventional weapons, or (3) any other purpose of disturbing international peace and 
 
security, and you shall not sell, export, lease, transfer, or release Renesas Electronics products or technologies to any third party whether directly 
 
or indirectly with knowledge or reason to know that the third party or any other party will engage in the activities described above. When 
 
exporting, selling, transferring, etc., Renesas Electronics products or technologies, you shall comply with any applicable export control laws and 
 
regulations promulgated and administered by the governments of the countries asserting jurisdiction over the parties or transactions. 
 
10.  Please acknowledge and agree that you shall bear all the losses and damages which are incurred from the misuse or violation of the terms and 
 
conditions described in this document, including this notice, and hold Renesas Electronics harmless, if such misuse or violation results from your 
 
resale or making Renesas Electronics products available any third party. 
 
11.  This document shall not be reprinted, reproduced or duplicated in any form, in whole or in part, without prior written consent of Renesas 
 
Electronics. 
 
 
12.  Please contact a Renesas Electronics sales office if you have any questions regarding the information contained in this document or Renesas 
 
Electronics products. 
 
 
 
(Note 1)   "Renesas Electronics" as used in this document means Renesas Electronics Corporation and also includes its majority-owned 
 
subsidiaries. 
 
(Note 2)   "Renesas Electronics product(s)" means any product developed or manufactured by or for Renesas Electronics. 
 
 
 
   
 
   
 
   
 

 

 
 


 
Abbreviations and Acronyms 
 
 
 
Abbreviation / Acronym 
Description 
ANSI 
American National Standards Institute 
API 
Application Programming Interface 
ARXML/arxml 
AutosaR eXtensible Mark-up Language 
ASIC 
Application Specific Integration Circuit 
AUTOSAR 
AUTomotive Open System Architecture 
BSW 
Basic SoftWare 
CPU 
Central Processing Unit 
CSIH/CSIG, CSIG 
Enhanced Queued Clocked Serial Interface. 
DEM 
Diagnostic Event Manager 
DET/Det 
Development Error Tracer 
DIO 
Digital Input Output 
DMA 
Direct Memory Access 
EB 
External Buffer 
ECU 
Electronic Control Unit 
EDL 
Extended Data Length 
EEPROM 
Electrically Erasable Programmable Read-Only Memory 
GNU 
GNU’s Not Unix 
GPT 
General Purpose Timer 
HW 
HardWare 
IB 
Internal Buffer 
Id 
Identifier 
I/O 
Input/Output 
ISR 
Interrupt Service Routine 
MCAL 
Microcontroller Abstraction Layer 
MHz 
Mega Hertz 
NA 
Not Applicable 
PLL 
Phase Locked Loop 
RAM 
Random Access Memory 
ROM 
Read Only Memory 
RTE 
Run Time Environment 
SPI 
Serial Peripheral Interface 
µs 
Micro Seconds 
 
 
 
Definitions 
 
 
 
Term 
Represented by 
Sl. No. 
Serial Number 


 
 


 
Table Of Contents 
 
Chapter 1 
Introduction ....................................................................... 11 
1.1. 
Document Overview ................................................................................................................ 13 
Chapter 2 
Reference Documents ...................................................... 15 
Chapter 3 
Integration And Build Process ......................................... 17 
3.1. 
SPI Driver Component Makefile ............................................................................................. 17 
Chapter 4 
Forethoughts ..................................................................... 19 
4.1. 
General...................................................................................................................................... 19 
4.2. 
Preconditions ........................................................................................................................... 22 
4.3. 
User Mode and Supervisor Mode ........................................................................................... 23 
4.4. 
Memory modes ........................................................................................................................ 25 
4.5. 
Data Consistency ..................................................................................................................... 25 
4.6. 
Deviation List ........................................................................................................................... 26 
Chapter 5 
Architecture Details .......................................................... 29 
Chapter 6 
Registers Details ............................................................... 33 
Chapter 7 
Interaction Between The User And SPI Driver Component 
 
 ............................................................................................ 41 
7.1. 
Services Provided By SPI Driver Component To The User................................................. 41 
Chapter 8 
SPI Driver Component Header And Source File 
Description  ............................................................................................ 43 
Chapter 9 
Generation Tool Guide ...................................................... 47 
Chapter 10  Application Programming Interface ................................. 49 
10.1. 
Imported Types ........................................................................................................................ 49 
10.1.1.  Standard Types .......................................................................................................... 49 
10.1.2.  Other Module Types ................................................................................................... 49 
10.2. 
Type Definitions ....................................................................................................................... 49 
10.2.1.  Spi_ConfigType ........................................................................................................... 49 
10.2.2.  Spi_StatusType .......................................................................................................... 49 
10.2.3.  Spi_JobResultType..................................................................................................... 50 
10.2.4.  Spi_SeqResultType .................................................................................................... 50 
10.2.5.  Spi_DataType ............................................................................................................. 50 
10.2.6.  Spi_NumberOfDataType ............................................................................................ 50 
10.2.7.  Spi_ChannelType ....................................................................................................... 51 
10.2.8.  Spi_JobType ............................................................................................................... 51 


 
10.2.9.  Spi_SequenceType .................................................................................................... 51 
10.2.10.  Spi_HWUnitType ........................................................................................................ 51 
10.2.11.  Spi_AsyncModeType .................................................................................................. 51 
10.2.12.  Spi_CommErrorType .................................................................................................. 52 
10.2.13.  Spi_HWErrorsType ..................................................................................................... 52 
10.2.14.  Spi_SelfTestType ....................................................................................................... 52 
10.2.15.  Spi_ReturnStatus ........................................................................................................ 52 
10.3. 
Function Definitions ................................................................................................................ 53 
Chapter 11  Development And Production Errors .............................. 55 
11.1. 
SPI Driver Component Development Errors ......................................................................... 55 
11.2. 
SPI Driver Component Production Errors............................................................................. 56 
Chapter 12  Memory Organization ....................................................... 59 
Chapter 13  P1x-C Specific Information ............................................... 61 
13.1. 
Interaction Between The User And SPI Driver Component ................................................. 61 
13.1.1. ISR Function .................................................................................................................. 61 
13.2. 
Sample Application ................................................................................................................. 63 
13.2.1. Sample Application Structure ........................................................................................ 63 
13.2.2. Building Sample Application .......................................................................................... 64 
13.2.2.1. Configuration Example ................................................................................ 64 
13.2.2.2. Debugging The Sample Application ............................................................ 64 
13.3. 
Memory And Throughput ........................................................................................................ 65 
13.3.1. ROM/RAM Usage .......................................................................................................... 65 
13.3.2. Stack Depth ................................................................................................................... 66 
13.3.3. Throughput Details ........................................................................................................ 66 
Chapter 14  Release Details .................................................................. 69 


 
List Of Figures 
 
Figure 1-1 
System Overview Of AUTOSAR Architecture ....................................................... 11 
Figure 1-2 
System Overview Of The SPI Driver In AUTOSAR MCAL Layer .......................... 12 
Figure 5-1 
SPI Driver Architecture .......................................................................................... 29 
Figure 5-2 
Component Overview Of SPI Driver Component .................................................. 30 
Figure 12-1 
SPI Driver Component Driver Organization ........................................................... 59 
Figure 13-1 
Overview Of SPI Driver Sample Application .......................................................... 63 
 
 
List Of Tables 
 

Table 4-1 
Registers to be Configured for Static Configuration .............................................. 21 
Table 4-2 
Channel container parameters .............................................................................. 21 
Table 4-3 
Job container parameters ...................................................................................... 21 
Table 4-4 
User Mode and Supervisory Mode ........................................................................ 23 
Table 4-5 
HW unit and Memory Mode Selection ................................................................... 25 
Table 4-6 
SPI Driver Critical section protection List .............................................................. 25 
Table 4-7 
SPI Driver Deviation List ........................................................................................ 26 
Table 6-1   
Register Details...................................................................................................... 33 
Table 8-1 
Description Of The SPI Driver Component Files ................................................... 44 
Table 10-1 
The APIs provided by the SPI Driver Component ................................................. 53 
Table 11-1 
DET Errors Of SPI Driver Component ................................................................... 55 
Table 11-2 
DEM Errors Of SPI Driver Component .................................................................. 57 
Table 13-1 
Interrupt Vector Table ............................................................................................ 61 
Table 13-2 
ROM/RAM Details Without DET ............................................................................ 65 
Table 13-3 
ROM/RAM Details With DET ................................................................................. 66 
Table 13-4 
Throughput Details Of The APIs ............................................................................ 67 
 
 
 


 
 
10 

Introduction                                                                                                                             Chapter 1 
 
Chapter 1 
Introduction 
 
 
The purpose of this document is to describe the information related to SPI 
Driver Component for Renesas P1x-C microcontrollers. 
 
This document shall be used as reference by the users of SPI Driver 
Component. The system overview of complete AUTOSAR architecture is 
shown in the below Figure: 
 
 
 
Application Layer 
 
 
 
AUTOSAR  RTE 
 
 
System Services 
 
 
 
On board Device Abstraction 
 
 
 
SPI Driver 
 
 
 
Microcontroller 
 
 
Figure 1-1  System Overview Of AUTOSAR Architecture 
 
The SPI Driver is part of the Microcontroller Abstraction Layer (MCAL), the 
lowest layer of Basic Software in the AUTOSAR environment. 
11 

Chapter 1                                                                                                                             Introduction                                                                                                                              
 
 
The Figure in the following page depicts the SPI Driver as part of layered 
AUTOSAR MCAL Layer: 
 
 
M icrocont roller  Drivers 
M e mo r y  Drivers 
Communication  Drivers 
I/O  Drivers 
 
 
 
in
e
in
ter
x
S
 
W
te
te
n
P
at
G
M
r
r
a
I
F
n
n
l
 
 
c
C
R
P
C
a
a
 
H
E
LI
C
le
P
P
h
o
AM
T
U
l
l
a
AN
x
A
I
D
O
d
 
 
E
N
re
 
F
F
n
R
C
W
D
I
 
Dr
o
 
P
D
g
 
 
l
l
d
 
U
O
R
a
a
D
a
M
C
 
R
i
 
r
T
T
l
D
y
 
T
s
s
e
r
D
 
 
 
v
D
iv
e
e
h
h
OM
i
 
D
D
 
r
v
r
D
D
D
 
e
r
e
s
s
 
 
 
i
r
r
i
 
v
r
t
t
D
D
D
e
v
i
r
r
r
v
r
i
i
 
 
 
r
e
i
i
v
v
r
er
r
r
 
v
e
v
i
r
 
r
e
e
v
i
i
D
i
 
er
r
e
 
v
v
v
 
r
r
e
r
 
er
er
ri
er
 
 
 
 

v
 
 
e
 
 

 
 
P
E
Micro - 
E
F
G
W
C
o
x
L
M
U
U
L
EP
C
I
P
A
t.
S
S
IN
C
lo
w
PT
n
N D
 
n
C
 
A
M
C
A
W
D
P
D
e
controller 
B
U
i
  T
i
c
S
R
 
t
t
 
 
 

r
U
 
I
or
N
M
C
I
I
U
 
 
H

 
 
 
O

 
 
 
S
 
 
 
 
 
 
 
 
 
Figure 1-2  System Overview Of The SPI Driver In AUTOSAR MCAL Layer 
 
 
The SPI Driver Component comprises Embedded software and the 
Configuration Tool to achieve scalability and configurability. 
 
The SPI Driver component code Generation Tool is a command line tool that 
accepts ECU configuration description files as input and generates source 
and header files. The configuration description is an ARXML file that contains 
information about the configuration for SPI Driver. The tool generates the 
Spi_PBcfg.c, Spi_Lcfg.c, Spi_Hardware.c, Spi_Hardware.h, Spi_Cfg.h and 
Spi_Cbk.h. 
 
The SPI driver provides services for reading from and writing to devices 
connected through SPI buses. It provides access to SPI communication to 
several users (For example, EEPROM, I/O ASICs). It also provides the 
required mechanism to configure the on-chip SPI peripheral. 
12 

Introduction                                                                                                                             Chapter 1 
 
1.1. 
Document Overview 
 
 
The document has been segmented for easy reference. The table below 
provides user with an overview of the contents of each section: 
 
 
Section 
Contents 
Section 1 (Introduction) 
This section provides an introduction and overview of SPI Driver 
Component. 
Section 2 (Reference Documents)  This section lists the documents referred for developing this document. 
Section 3 (Integration And Build 
This section explains the folder structure, Makefile structure for SPI 
Process) 
Driver Component. This section also explains about the Makefile 
descriptions, Integration of SPI Driver Component with other 
components, building the SPI Driver Component along with a 
sample application. 
Section 4 (Forethoughts) 
This section provides brief information about the SPI Driver 
Component, the preconditions that should be known to the user before 
it is used, memory modes, data consistency details, deviation list and 
Support For Different Interrupt Categories. 
Section 5 (Architecture Details) 
This section describes the layered architectural details of the SPI Driver 
Component. 
Section 6 (Register Details) 
This section describes the register details of SPI Driver Component. 
Section 7 (Interaction Between 
This section describes interaction of the SPI Driver Component with 
User And SPI Driver Component)  the upper layers. 
Section 8 (SPI Driver Component  This section provides information about the SPI Driver Component 
Header And Source File 
source files is mentioned. This section also contains the brief note on 
Description) 
the tool generated output file. 
Section 9 (Generation Tool Guide)  This section provides information on the SPI Driver Component Code 
Generation Tool. 
Section 10 (Application 
This section explains all the APIs provided by the SPI Driver 
Programming Interface) 
Component. 
Section 11 (Development And 
This section lists the DET and DEM errors. 
Production Errors) 
Section 12 (Memory 
This section provides the typical memory organization, which must 
Organization) 
be met for proper functioning of component. 
Section 13(P1X-C 
This section provides P1x-C specific information like ISR Function, the 
Specific information) 
details of the P1x-C Sample Application and its folder structure and the 
information about RAM/ROM usage, stack depth and throughput 
details. 
Section 14 (Release Details) 
This section provides release details with version name and 
base version. 
13 

Chapter 1                                                                                                                             Introduction                                                                                                                              
 
 
14 

Reference Documents 
Chapter 2 
 
 
Chapter 2 
Reference Documents 
 
 
Sl. No. 
Title 
Version 
1. 
AUTOSAR_SWS_SPIHandlerDriver.pdf 
  3.2.0 
2. 
AUTOSAR BUGZILLA (http://www.autosar.org/bugzilla) 

Note: AUTOSAR BUGZILLA is a database, which contains concerns raised 
against information present in AUTOSAR Specifications. 
3. 
r01uh0517ej0070_rh850p1x-c_Open.pdf 
Rev.1.00 
4. 
Specification of Compiler Abstraction 
  3.2.0 
  (AUTOSAR_SWS_CompilerAbstraction.pdf) 
 5. 
Specification of Memory Mapping  
  1.4.0 
  (AUTOSAR_SWS_MemoryMapping.pdf) 
6. 
Specification of Platform Types  
  2.5.0 
  (AUTOSAR_SWS_PlatformTypes.pdf) 
15 

Chapter 2                                                                                                             Reference Documents 
 
16 

  Integration And Build Process  
 
Chapter 3 
Chapter 3 
Integration And Build Process 
 
 
In this section the folder structure of the SPI Driver Component is explained. 
Description of the Makefiles along with samples is provided in this section. 
 
 
Remark  The details about the C Source and Header files that are generated by the 
SPI Driver Generation Tool are mentioned in the  
                 “R20UT3660EJ0100-AUTOSAR.pdf”. 
 
3.1. 
SPI Driver Component Makefile 
 
 
The Makefile provided with the SPI Driver Component consists of the GNU 
Make compatible script to build the SPI Driver Component in case of any 
change in the configuration. This can be used in the upper level Makefile (of 
the application) to link and build the final application executable. 
 
 
3.1.1.   Folder Structure 
 
The files are organized in the following folders: 
 
                 Remark Trailing slash ‘\’ at the end indicates a folder 
 
X1X\common_platform\modules\spi\src\Spi_Driver.c 
 
\Spi.c 
 
\Spi_Scheduler.c 
 
\Spi_Irq.c 
 
\Spi_Ram.c 
 
\Spi_Version.c 
 
X1X\common_platform\modules\spi\include\Spi_Driver.h 
 
\Spi.h 
  
\Spi_Scheduler.h 
 
\Spi_Irq.h 
 
\Spi_LTTypes.h 
 
\Spi_PBTypes.h 
 
\Spi_Ram.h 
 
\Spi_Version.h 
 
\Spi_Types.h 
 
\Spi_RegWrite.h 
 
X1X\P1x-C\modules\spi\sample_application\<SubVariant>\make\ghs 
\App_Spi_P1x-C_Sample.mak 
\App_Spi_P1x-C_Sample.ld 
 
                                         X1X\P1x-C\modules\spi\generator 
\R403_SPI_P1x-C_BSWMDT.arxml 
 
 
17 

Chapter 3                                                                                             Integration And Build Process 
 
X1X\P1x-C\modules\spi\user_manual 
 
(User manuals will be available in this folder) 
 
  Note: 1. <AUTOSAR_version> should be 4.0.3  
            2. <SubVariant> can be P1H-C, P1H-CE, P1M-C. 
 
18 

  Forethoughts                                                                                                                          Chapter 4 
Chapter 4 
Forethoughts 
 
4.1.  General 
 
Following information will aid the user to use the SPI Driver Component 
software efficiently: 
 
• 
SPI Driver component does not take care of setting the registers which 
configure clock, prescaler and PLL. 
 
• 
SPI Driver component handles only the Master mode. 
 
• 
SPI Driver component supports full-duplex mode. 
 
• 
The chip select is implemented using the microcontroller pins and it is 
configurable. 
 
 
• 
The microcontroller pins used for chip select is directly accessed by the 
SPI Driver component without using the APIs of DIO module. 
 
• 
Maximum number of channels and jobs configurable is 65536. 
 
• 
The scope is restricted to post-build with multiple configuration sets. 
 
• 
The identifiers for channels, jobs and sequences entered by the user 
should start from 0 and should be continuous. 
 
• 
The width of the transmitted data unit is configurable and the valid values 
are 8 bits to 32 bits. 
 
• 
The number of channels, jobs and sequences should be same across 
multiple configuration sets. 
 
• 
The channels, jobs and sequences cannot be deleted or added at post-
build time. 
 
• 
The SPI hardware unit cannot be deleted or added at post–build time. But, 
the reassignment of the SPI hardware units to different jobs is possible at 
post-build time. 
 
• 
The DMA unit cannot be deleted or added at post–build time. But, the 
reassignment of DMA units to the SPI hardware units is possible at post- 
build time. 
 
• 
When the level of scalable functionality is configured as 2, then two SPI 
buses using separate hardware units are required. In this case, the SPI 
bus dedicated for synchronous transmission is configurable. 
 
• 
When the level of scalable functionality is configured as 2, two modes of 
asynchronous communication using polling or interrupt mechanism are 
possible. These modes are selectable during execution time. 
 
• 
When the level of scalable functionality is configured as 1 or 2, If interrupt 
mechanism is selected during execution time, the transmission and 
reception will be performed using the on-chip DMA unit only if the DMA 
mode is enabled through the configuration. 
 
• 
The LEVEL 2 SPI Handler is specified for microcontrollers that have to 
provide at least two SPI busses using separated hardware units. Otherwise, 
using this level of functionality makes no sense. 
19 

  Chapter 4                                                                                                                           Forethoughts 
• 
When Level Delivered is 0 and 2, the memory mode configured for jobs 
linked for the synchronous sequence shall be always Direct Access Mode 
only. 
 
• 
If user configures 32 bit IB and EB channels and additionally configures 
DMA in direct access mode there will be a generator error message. 
 
• 
When the SPI driver is configured in Level 2 (SpiLevelDelivered) and the 
DMA is also configured (SpiDmaMode), then the asynchronous mode 
needs to be set for interrupt mode using the API Spi_SetAsyncMode 
 
• 
Direct Access mode can be effectively used in case of sequence having 
channels and buffers of significantly different properties. 
 
• 
Double Buffer mode can be effectively used in case of sequence having 
more number of jobs, channels and buffers with same hardware properties 
for continuous transmission of data. For double buffer mode only usage of 
internal buffers is allowed. FIFO mode can be effectively used at the time of 
transmit/receive of large amount of data. FIFO mode can also be used in 
case of sequence having lesser number of jobs and having more channels 
and buffers. 
 
• 
In a particular configurations where CSIH HW units are configured, Spi_Init 
function must be called before Port_Init function. 
 
• 
Only if "SpiCsInactive" parameter is set to "true", the PWR bit in CSI 
hardware will be cleared for that hardware unit, so setting "false" value can 
lead to unnecessary power consumption. 
 
• 
When “SpiCsIdleEnforcement” is set to true for the jobs configured for CSIH 
Hw units, the value configured for "SpiCsInactive" will not have any impact 
in actual Chip Select behavior". 
 
• 
The parameter "SpiCsIdleEnforcement" influences the behaviour of idle 
level of the chip select during data transfer and after the transmission of a 
job. 
 
When the parameter 'SpiCsIdleEnforcement' is configured as false, the 
corresponding chip select is deactivated before every channel transmission 
and stays active after transmission until another job with different CS is 
transmitted. 
 
When the parameter 'SpiCsIdleEnforcement' is configured as true, the chip 
select is deactivated after job transmission. An idle phase of CS is inserted 
between transmissions of two data buffers.The duration of idle state of the 
chip select between the channels transmissions will be less than duration 
of idle state of the chip select between single data of each channel. 
 
This information is valid only for DIRECT ACCES MODE. 
 
• 
For availability of Data Consistency Check on the port pins, please refer 
respective microcontroller user manual. 
 
• 
Sequences assigned to a hardware channel (CSIHx) which is configured to 
work with transmit only memory mode can be an interruptible or non- 
interruptible sequence (specified by the parameter 
SpiInterruptibleSequence). However, even if the sequence is non- 
interruptible, it can still be interrupted by CPU-controlled high priority 
communication functionality. i.e. the parameter SpiInterruptibleSequence is 
valid only for software interruption. 
 
• 
Each of the high priority sequences shall refer to a unique chip select line. 
 
 
 
        These lines shall not be referred by any of the low priority sequences too. 
 
 
 
20 

  Forethoughts                                                                                                                            Chapter 4 
• 
In order to support DEEPSTOP functionality without resetting the 
microcontroller, the re initialization of the Driver using Spi_Init API is 
supported. To achieve this functionality the 
'SPI_E_ALREADY_INITIALIZED' Det error check is to be suppressedusing 
‘SpiAlreadyInitDetCheck’ parameter when DET is enabled.When DET is 
disabled there is no impact of “SpiAlreadyInitDetCheck” parameter. 
 
•  Hardware high priority sequence mechanism is not supported for P1x-C 
devices. 
  
•  The parameter SpiPersistentHWConfiguration decides whether Hardware 
configuration is static or dynamic. This is applicable for both CSIG and CSIH 
and both Synchronous and Asynchronous communication and all memory 
modes. 
 
•  If  SpiPersistentHWConfiguration  is  “True”,  then  HW  configuration  is  Static 
(configuration is performed in the function Spi_Init()), else it is dynamic. 
•  SpiTimeOut  has  been  added  to  have  the  hold  on  functions  and  ongoing 
process of APIs, SpiTimeOut keeps the track of time and breaks loop if it is 
exceeds the defined time.  
 
Table 4-1  Registers to be Configured for Static Configuration 
 
             CSIH HW Unit 
CSIHnCTL0 
CSIHnCTL1 
 
CSIHnCTL2 
 
CSIHnCFGx 
 
CSIHnBRSy 
 
 
Table 4-2  Channel container parameters 
 
Parameter in 
Registers linked 
channel container 
SpiDataWidth 
CSIHnCFGx.CSIHnDLSx 
SpiTransferStart 
CSIHnCFGx.CSIHnDIRx 
 
 
Table 4-3  Job container parameters 
 
Parameter in job 
Registers linked 
container 
SpiPortPinSelect 
CSIHnTXOW.CSIHnCSx 
CSIHnCTL1.CSIHnCSx 
 
 
 
•  Table 4-1 contains the registers that must be configured inside Spi_Init() 
function. 
 
•  All  the  parameters  in  channel/job/external  devices  containers  linked  to  a 
hardware  unit  mentioned  in  Table  4-2  and  4-3  should  be  same  for  Static 
Configuration. 
 
•  MCTL1, MCTL2 and CSIHnMRWP0 registers are allowed to be accessed 
when there is an ongoing communication only when PWR is set. 
21 

  Chapter 4                                                                                                                           Forethoughts 
 
• 
Manual transmission is possible only in Direct Access and FIFO modes. 
However user has to implement his own ISRs for SPI. In case he wants to 
use Renesas SPI driver transmission in parallel, he has to call Renesas SPI 
ISRs functions from his custom ISRs (e.g. use different interrupt category 
mode). 
 
• 
When configuring DMA mode, the number of buffers configured shall be 
greater than 1 in the case of Direct Access Mode and Fifo Mode.  
 
 
• 
The notifications should be called from user’s complex driver ISRs. 
 
• 
When using DMA, 'SpiDataWidthSelection' in 'General' container shall be 
'BITS_16', the user shall setup the buffer(EB or IB) in the application as 
type 'Spi_DataType' for channels that are configured for DMA and fill 
required data(8 or 16) as configured in 'SpiDataWidth' in 'SpiChannel'. 
 
• 
The SPI DMA type is specified by the parameter SPI_DMA_TYPE_USED. 
 
• 
The  Buffers  used  for  transmission/reception  using  DMA  shall  be  initialized 
and configured in Retention RAM or Global RAM. 
 
Note: The DMA will work whenever the DMA access for the LOCAL RAM, 
which  is  having  PE  guard  protection  is  enabled  (this  can  be  done  by 
configuring the PE guard registers.) 
 
 
4.2.  Preconditions 
 
Following preconditions have to be adhered by the user, for proper 
functioning of the SPI Driver Component: 
 
• 
The Spi_Lcfg.c, Spi_PBcfg.c, Spi_Hardware.c, Spi_Hardware.h, 
Spi_Cbk.h and Spi_Cfg.h files generated by the SPI Driver Component 
Code Generation Tool must be compiled and linked along with SPI Driver 
Component source files. 
 
• 
The application has to be rebuilt, if there is any change in the Spi_Lcfg.c, 
Spi_PBcfg.c, Spi_Hardware.c, Spi_Hardware.h,Spi_Cbk.h and Spi_Cfg.h 
files generated by the SPI Driver Component Generation Tool. 
 
• 
File Spi_PBcfg.c generated for single configuration set or multiple 
configuration sets using SPI Driver Component Generation Tool can be 
compiled and linked independently. 
 
• 
The authorization of the user for calling the software triggering of a 
hardware reset is not checked in the SPI Driver. This is the responsibility of 
the upper layer. 
 
• 
The SPI Driver Component needs to be initialized before accepting any 
request. The API Spi_Init should be invoked to initialize SPI Driver 
Component. 
 
• 
The  user  should  ensure  that  SPI  Driver  Component  API  requests  are 
invoked  in  the  correct  and  expected  sequence  and  with  correct  input 
arguments. 
 
• 
Input parameters are validated only when the static configuration 
parameter SPI_DEV_ERROR_DETECT is enabled. Application should 
ensure that the right parameters are passed while invoking the APIs when 
SPI_DEV_ERROR_DETECT is disabled. 
 
22 

  Forethoughts                                                                                                                            Chapter 4 
• 
A mismatch in the version numbers of header and the source files results 
in  compilation  error.  User  should  ensure  that  the  correct  versions  of  the 
header and the source files are used. 
 
 
• 
The ISR functions and the corresponding handler addresses are provided 
in Table ISR Handler Addresses. User should ensure that Interrupt Vector 
table configuration is done as per the information provided in the table. 
 
• 
The user shall configure the exact Module Short Name Spi in 
configurations when reloading, as specified in config.xml file and the same 
shall be given in command line. 
 
• 
Within the callback notification functions only following APIs are allowed. 
 
Spi_ReadIB  
Spi_WriteIB 
Spi_SetupEB 
Spi_GetJobResult 
Spi_GetSequenceResult 
Spi_GetHWUnitStatus 
Spi_Cancel 
All other SPI Handler/Driver API calls are not allowed. 
 
• 
User have the responsibility to enable or disable the critical protection 
using the parameter SpiCriticalSectionProtection. By enabling parameter 
SpiCriticalSectionProtection, Microcontroller HW registers which suffer 
from concurrent access by multiple tasks are protected. 
 
 
4.3.   User Mode and Supervisor Mode 
 
The below table specifies the APIs which can run in user mode, supervisor 
mode or both modes: 
 
 Table 4-4  User Mode and Supervisory Mode 
  
 
Interrupt mode 
Polling mode 
S
Known limitation 
l. 
  
in User Mode 
N
API name 
user 
supervisor 
user 
supervisor 
o
mode  
mode 
mode 
mode 

The IMR and INTC 
1
Spi_Init 
   - 

   - 
          x 
registers are 

accessed inside 
this function. Hence 
it should not be 
2. 
Spi_DeInit 




invoked in User 
mode. 
3. 
Spi_WriteIB 




 
The IMR and INTC 
registers are 
accessed inside 
4. 
Spi_AsyncTransmit 




this function. Hence 
it should not be 
invoked in User 
mode. 
5. 
Spi_ReadIB 




 
23 

  Chapter 4                                                                                                                           Forethoughts 
  
 
Interrupt mode 
Polling mode 
S
Known limitation 
l. 
  
in User Mode 
N
API name 
user 
supervisor 
user 
supervisor 
o
mode  
mode 
mode 
mode 

6. 
Spi_SetupEB 




 
7. 
Spi_GetStatus 




 
8. 
Spi_GetJobResult 




 
9. 
Spi_GetSequenceResult 




 
10. 
Spi_GetVersionInfo 




 
The IMR and INTC 
registers are 
accessed inside 
11. 
Spi_SyncTransmit 




this function. Hence 
it should not be 
invoked in User 
mode. 
The IMR and INTC 
registers are 
accessed inside 
this function. Hence 
12. 
Spi_Cancel 




it should not be 
invoked in User 
mode. 
The IMR and INTC 
registers are 
accessed inside 
13. 
Spi_SetAsyncMode 




this function. Hence 
it should not be 
invoked in User 
mode. 
The IMR and INTC 
registers are 
accessed inside 
Spi_MainFunction_Handl
14. 




this function. Hence 
ing 
it should not be 
invoked in User 
mode 
15. 
Spi_GetHWUnitStatus 




 
16. 
Spi_GetErrorInfo 




 
The IMR and 
INTC registers 
are accessed 
inside this 
17. 
Spi_SelfTest 




function. Hence it 
should not be 
invoked in User 
mode 
The IMR and INTC 
registers are 
accessed inside 
18. 
All ISRs 




this function. Hence 
it should not be 
invoked in User 
mode 
 
Note: Implementation of Critical Section is not dependent on MCAL. Hence 
Critical Section is not considered to the entries for User mode in the above 
table. 
24 

  Forethoughts                                                                                                                            Chapter 4 
 
 
 
 
 
4.4.  Memory modes 
 
The SPI Driver will use different memory modes. The following four modes 
can be configured. 
 
Table 4-5  HW unit and Memory Mode Selection 
 
HW unit 
Memory 
mode 
CSIH(0-3) 
Direct Access Mode 
FIFO Mode 
 Dual Buffer mode 
 Transmit Only Mode 
 
4.5.  Data Consistency 
 
To  support  the  re-entrance  and  interrupt  services,  the  AUTOSAR  SPI 
component  will  ensure  the  data  consistency  while  accessing  its  own  RAM 
storage 
or 
hardware 
registers. 
The 
SPI 
component 
will 
use 
SchM_Enter_Spi_<Exclusive  Area>  and  SchM_Exit_Spi_<Exclusive  Area> 
functions.  The  SchM_Enter_Spi_<Exclusive  Area>  function  is  called  before 
the  data  needs  to  be  protected  and  SchM_Exit_Spi_<Exclusive  Area> 
function is called after the data is accessed. 
 
The following exclusive area along with scheduler services is used to provide 
data integrity for shared resources: 
 
 
• 
RAM_DATA_PROTECTION 
 
The 
functions 
SchM_Enter_Spi_<Exclusive 
Area> 
and 
SchM_Exit_Spi_<Exclusive  Area>  can  be  disabled  by  disabling  the 
configuration  parameter  'Spi_CriticalSectionProtection'.  The  flowchart  will 
indicate the flow with the pre-compile option 'Spi_CriticalSectionProtection' 
enabled. 
 
The information about the API’s and the protected resources by the critical 
section are given in the following table. 
 
Table 4-6  SPI Driver Critical section protection List 
 
 
 
 
API Name 
Exclusive Area Type 
Protected 
Resources
 
Spi_AsyncTransmit 
SPI_RAM_DATA_PROTECTION  During communication the 
status of sequence, job, 
corresponding hardware unit 
and communicating data are 
protected. 
Spi_SyncTransmit 
SPI_RAM_DATA_PROTECTION  During communication the 
status of sequence, job, 
corresponding hardware unit 
and communicating data are 
protected. 
25 

  Chapter 4                                                                                                                           Forethoughts 
 
 
 
API Name 
Exclusive Area Type 
Protected 
Resources
 
Spi_Cancel 
SPI_RAM_DATA_PROTECTION  During cancelling the status 
of sequence are protected. 
 
Note:   The highest measured duration of a critical section was 1.162 micro   
seconds measured for Spi_AsyncTransmit API.  
 
 
4.6.  Deviation List 
 
Table 4-7  SPI Driver Deviation List 
 
Sl. No. 
Description 
AUTOSAR Bugzilla 

The parameter 
48763 
"SpiHwUnitSynchronous" is moved 
to SpiJob container from 
SpiChannel container. 

The total number of SPI Hardware 
24328 
Units is published as 
“SPI_MAX_HW_UNIT”. 

The parameter “SPI_BAUDRATE” 

is not used since the value 
configured for this parameter 
cannot be mapped directly to the 
register value. Hence, a parameter 
”SpiBaudrateSelection” is used to 
select input frequency source. 

The parameter 'SpiTimeClk2Cs' is 

not used since the value of this 
parameter is configured as count 
value. Hence, the parameter 
'SpiClk2CsCount' is provided to 
configure the wait loop count to add 
delay between clock and chip 
select. 

Type of the parameter SpiHwUnit is  - 
ENUMERATION-PARAM-DEF  with 
a list of all possible hardware units. 

The inclusion or deletion of the 

hardware units will not be possible 
in the post-build time. But the 
reassignment of configured HW 
unit for different jobs is possible. 

Type of the parameter SpiCs is 

ENUMERATION-PARAM-DEF with 
a list of all possible port lines. 

If the parameter "DataBufferPtr" 

passed through the API 
“Spi_ReadIB” is null pointer, then 
the error 
SPI_E_PARAM_POINTER will be 
reported to DET. 
26 

  Forethoughts                                                                                                                            Chapter 4 
Sl. No. 
Description 
AUTOSAR Bugzilla 

The channel parameters 

“SpiChannelType”, “SpiIbNBuffers” 
and “SpiEbMaxLength” are pre- 
compile time parameters. 
10 
A queue will be implemented and 

maintained if there are more than 
one sequence is requested for 
transmission. The length of the 
queue will be number of configured 
jobs minus 1. 
11 
If a sequence is requested for 

transmission while already one 
uninterruptible sequence is on- 
going, the requested sequence will 
be put on queue. 
12 
The upper and lower multiplicity of  - 
the parameter ‘SpiCsIdentifier’ is ‘1’ 
i.e. mandatory and the default 
value is NULL. The upper and 
lower multiplicity of the parameter 
‘SpiEnableCS’ is ‘1’ i.e. mandatory 
and the default value is false. 
13 
The parameters SpiMaxChannel, 

SpiMaxJob and SpiMaxSequence 
in SpiDriverConfiguration is made 
as mandatory in the Parameter 
Definition File of SPI Driver 
Component. 
14 
From the file Lcfg.c only 
As per mantis #8421 
notification related structure has 
been removed.  
15 
There will be an inactive state in 
As per JIRA ARDAAAF-383 
between Chip Select during 
communication, when channel 
properties are different. 
 
 
 
 
 
 
 
 
 
 
 
27 

  Chapter 4                                                                                                                           Forethoughts 
 
 
 
 
 
 
28 

  Architecture Details                                                             
 
     Chapter 5 
Chapter 5 
Architecture Details 
 
 
To minimize the effort and to optimize the reuse of developed software on 
different platforms, the SPI driver is split as High Level Driver and Low Level 
Driver. The SPI Driver architecture is shown in the following figure: 
 
 
 
SPI User 
 
 
 
 
 
 
 
SPI High-level Driver 
 
 
 (Microcontroller Independent) 
 
 
 
 
SPI Low Level Driver 
 
 
 
 
 
 
 
MICROCONTROLLER 
 
 
 
CSIH 
 
 
 

                                          Figure 5-1  SPI Driver Architecture 
 
The High Level Driver exports the AUTOSAR API towards upper modules 
and it will be designed to allow the compilation for different platforms without 
or only slight modifications, i.e. that no reference to specific microcontroller 
features or registers will appear in the High Level Driver. All these references 
are moved inside a µC specific Low Level Driver. The Low Level Driver 
interface extends the High Level Driver types and methods in order to adapt it 
to the specific target microcontroller. 
 
SPI Driver component: 
 
The SPI Driver provides services for reading and writing to devices connected 
via SPI busses. It provides access to SPI communication to several users like 
EEPROM, Watchdog, I /O ASICs. It also provides the required mechanism to 
configure the on chip SPI peripheral. 
 
The SPI Driver component is divided into the following sub modules based on 
the functionality required: 
 
• 
Initialization and De-initialization 
 
• 
Buffer Management 
 
• 
Communication 
 
• 
Status information
29 

Chapter 5 
 
 
Architecture Details                                                                                                                 
 
• 
Module version information 
 
The basic architecture of the SPI Driver component is illustrated in the 
following Figure: 
 
 
 
 
AP PL I C A T IO N  L A Y ER 
 
 
 
 
 
 
 
 
 
 
n
 
 
 
n
n
 
 
nt 
atio
ation
 
tio
e
 
rm
icatio
 
iti aliza tion
uffer 
form
agem
un
 
 Info
In
B
n
 
e
an
m
ot ification
N

- 
I nitiali za
D
M
om
t us In
 
C
ersio
Sta
V
r 
 
e
 
r Lay
SP I  H ig h  Le v e l  Dr ive r 
rive
 
 
SPI D
Setting of 
 
 
Sequen 
 
HW  
De - 
Transmit and 
ce and 
Return the 
register  
initialization 
receive the jobs 
job 
status of 
Disabling  
of SPI HW 
 and channels 
notifica 
module, job,  
the 
units 
tion 
sequence 
interrupts 
 
SP I  L ow  Le v e l  Dr ive r 
 
 
           Figure 5-2  Component Overview Of SPI Driver Component 
 
SPI Driver Initialization and De-Initialization module 
 
This module initializes and de-Initializes the SPI driver. It provides the 
Spi_Init() and Spi_DeInit() APIs. The Spi_Init() API should be invoked before 
the usage of any other APIs of Watchdog Driver Module.Spi-Init should be 
called prior to Port_Init. De-initialization function puts all microcontroller SPI 
peripherals in the same state such as Power On Reset. 
 
Buffer Management  
 
This module provides the services for reading and writing the internal buffers 
and setting up the external buffer. The type of buffer for each channel is 
configurable as either internal or external 
 
The APIs related to this module are Spi_WriteIB(), Spi_ReadIB() and 
Spi_SetupEB(). 
 
Communication 
 
This module provides the services for the transmission of data on the SPI bus 
both synchronously and asynchronously, cancelling the ongoing transmission 
and setting the asynchronous transfer mode. 
 
The synchronous mode is based on polling mechanism. But for the 
asynchronous mode, the possible mechanisms are Polling and Interrupt 
mode. One of these modes is selectable during execution by one of the 
services provided by this sub-module. 
 
The APIs related to this module are Spi_SyncTransmit(), 
Spi_AsyncTransmit(), Spi_SetAsyncMode() and Spi_Cancel(). 
30 

  Architecture Details                                                                                                                Chapter 5 
Status Information 
 
This module provides the services for getting the status of the SPI Driver and 
hardware unit. It also provides the services for getting the result of the 
specified job and specified sequence. 
 
The APIs related to this module are Spi_GetStatus(), 
Spi_GetHWUnitStatus(), Spi_GetJobResult() and Spi_GetSequenceResult(). 
 
Module Version Information 
 
This module provides APIs for reading module Id, vendor Id and vendor 
specific version numbers. 
 
The API related to this module is Spi_GetVersionInfo(). 
31 

Chapter 5 
 
 
Architecture Details                                                                                                                 
 
32 

  Registers Details                                                                                                                     Chapter 6 
Chapter 6 
Registers Details 
 
 
This section describes the register details of SPI Driver Component. 
 
Table 6-1    Register Details 
   
 
 
Config 
Register 
API Name 
Registers 
Macro/Variable 
Parameter 
Access 
R/W/RW 
Spi_Init 
 CSIHnCTL0 
SpiMemoryModeSelection 

SPI_ZERO 
 DCSTCn 


SPI_DMA_STR_CLEAR 
 DCSTn 



 DCENn 


SPI_DMA_DCEN_DISABLE 
 DSAn 
SpiDma 

LpDmaConfig-
>ulTxRxRegAddress 
 DTCTn 
SpiTxDmaChannel/ 

SPI_DMA_16BIT_TX_SETTI
SpiRxDmaChannel 
NGS 
SPI_DMA_16BIT_RX_SETTI
NGS 
 
 DDAn 
SpiDma 

LpDmaConfig-
>ulTxRxRegAddress 
 DTFRn 
SpiTxDmaChannel/ 

LpDmaConfig-
SpiRxDmaChannel 
>usDmaDtfrRegValue 
 CSIHnCTL1 
SpiCsInactiveAfterLastDat

LunDataAccess1.ulRegData 
a, SpiDataWidth 
 ICRn 


SPI_CLR_INT_REQ 
 IMRn 
SpiHwUnitSelection 

Spi_GstHWUnitInfo[LddHWU
and 
nit].usRxImrMask, 
SpiMemoryModeSelection 
 
Spi_GstHWUnitInfo[LddHWU
nit].pTxImrAddress, 
Spi_GstHWUnitInfo[LddHWU
nit].pErrorImrAddress, 
Spi_GstHWUnitInfo[LddHWU
nit].usRxImrMask, 
Spi_GstHWUnitInfo[LddHWU
nit].pTxImrAddress, 
LpHWUnitInfo-
>usTxCancelImrMask, 
Spi_GstHWUnitInfo[LddHWU
nit].pErrorImrAddress 
 CSIHnTX0W 


LunDataAccess1.ulRegData 
 CSIHnSTCR0 


SPI_CSIH_CLR_STS_FLAG

 CSIHnSTR0 



 CSIHnCTL2 
SpiInputClockSelect 

LpJobConfig->usCtl2Value 
SpiBaudrateConfiguration 
& SPI_CSIH_PRE_MASK 
 CSIHnMCTL0 
SpiMemoryModeSelection 

LpJobConfig->usMCtl0Value 
 CSIHnBRSy 
SpiInputClockSelect 

(LpJobConfigCSConfig-
SpiBaudrateConfiguration 
>usCtl2Value) & 
SPI_CSIH_BRS_MASK 
33 

Chapter 6 
 
 
Registers Details                                                                                                               
 
 
 
Config 
Register 
API Name 
Registers 
Macro/Variable 
Parameter 
Access 
R/W/RW 
 CSIHnCFGx 
SpiDataWidth 

LunDataAccess1.ulRegData 
SpiParitySelection 
SpiTransferStart 
SpiDataShiftEdge 
SpiShiftClockIdleLevel 
 
 ECCCSIHnCTL  SpiECCSelfTest 
R/W 
SET_EC1EDIC_EC2EDIC 
ECC_CTL_ECEMF_SET 
ECC_CTL_ECER1F_ECER
2F_CLEAR 
CTL_ERRCLR_FLAG 
CTL_2BIT_ERRCLR_FLAG 
CTL_1BIT_ERR_FLAG 
 ECCCSIHnTMC  SpiECCSelfTest 

SET_TMC_BITS 
SET_TEST_DISABLE 
 ECCCSIHnTRC  SpiECCSelfTest 

TRC_ERDB_INITIALIZE 
 ECCCSIHnTED  SpiECCSelfTest 
R/W 
RAM_INITIALIZE, 
ALL_ZERO_PATTERN, 
ALL_ONE_PATTERN, 
TWO_BIT_PATTERN 
 
 CSIHnRX0H 



 
 
 CSIHnMCTL1 
SpiMemoryModeSelection 

SPI_CTL_32BIT_REG_VAL 
 CSIHnMCTL2 
SpiMemoryModeSelection 

SPI_CTL_32BIT_REG_VAL 
 CSIHnMRWP0  - 
RW 
LunDataAccess1.ulRegData 
Spi_DeInit 
 CSIHnCTL0 
SpiMemoryModeSelection 

SPI_ZERO 
 CSIHnCTL1 


SPI_ZERO 
 CSIHnCTL2 


SPI_CTL2_16BIT_REG_DEI
NIT 
 CSIHnMCTL0 


SPI_MCTL0_16BIT_REG_D
EINIT 
 CSIHnMCTL1 


SPI_CTL_32BIT_REG_MAS

 CSIHnMCTL2 


SPI_CTL_32BIT_REG_MAS

 CSIHnSTCR0 


SPI_CTL_16BIT_REG_DEIN
IT 
 CSIHnMRWP0  - 

SPI_CTL_32BIT_REG_MAS

 CSIHnBRSy 


SPI_CTL_16BIT_REG_DEIN
IT 
 DSAn 


SPI_DMA_DEINIT 
 DDAn 


SPI_DMA_DEINIT 
 DCENn 


SPI_DMA_DCEN_DISABLE 
 DTCTn 


SPI_DMA_DEINIT 
 DTFRRQCn 


SPI_DMA_DRQ_CLEAR 
 DCSTCn 


SPI_DMA_STR_CLEAR 
 DTFRRQn 



34 

  Registers Details                                                                                                                     Chapter 6 
 
 
 
Config 
Register 
API Name 
Registers 
Macro/Variable 
Parameter 
Access 
R/W/RW 
 DCSTn 



 DTFRn 


SPI_DMA_DEINIT 
 CSIHnCFGx 
 

SPI_CTL_32BIT_REG_VAL 
 IMRn 
SpiHwUnitSelection 
 W 
Spi_GstHWUnitInfo[LddHWU
and 
nit].usRxImrMask, 
SpiMemoryModeSelection 
 
Spi_GstHWUnitInfo[LddHWU
nit].pTxImrAddress, 
Spi_GstHWUnitInfo[LddHWU
nit].pErrorImrAddress, 
Spi_GstHWUnitInfo[LddHWU
nit].usRxImrMask, 
Spi_GstHWUnitInfo[LddHWU
nit].pTxImrAddress, 
LpHWUnitInfo-
>usTxCancelImrMask, 
Spi_GstHWUnitInfo[LddHWU
nit].pErrorImrAddress 
 ICRn 


SPI_CLR_INT_REQ 
 CSIHnSTR0 



Spi_WriteIB 
 CSIHMCTL0 
SpiMemoryModeSelection 

LusMctlData 
SPI_TX_ONLY_MODE_SET 
SPI_DUAL_BUFFER_MOD
E_SET 
 CSIHnMRWP0 

RW 
LunDataAccess1.ulRegData 
 CSIHnTX0W 


LunDataAccess1.ulRegData 
Spi_AsyncTransmit 
 CSIHnMCTL0 


LpJobConfig->usMCtl0Value 
 
 CSIHnCTL0 
SpiMemoryModeSelection 

SPI_RESET_PWR 
 

SPI_SET_DIRECT_ACCES

SPI_SET_MEMORY_ACCE
SS 
 CSIHnSTCR0 


SPI_CLR_STS_FLAGS 
 CSIHnSTR0 

R  

 CSIHnCTL1 
SpiCsInactiveAfterLastDat

LunDataAccess1.ulRegData 
a, SpiDataWidth 
LpJobConfig-
>ulMainCtl1Value 
SPI_SET_SLIT 
 DCSTCn 


SPI_DMA_STR_CLEAR 
 DCSTn 



 DCENn 


SPI_DMA_DCEN_DISABLE 
 DTCTn 


SPI_DMA_FIXED_TX_SETT
INGS 
SPI_DMA_INV_TX_SETTIN
GS 
LddNoOfBuffers 
SPI_DMA_STR_REQ 
SPI_DMA_ONCE 
SPI_DMA_FIXED_RX_SET
TINGS 
SPI_DMA_INV_RX_SETTIN
GS 
35 
SPI_DMA_ONCE 

Chapter 6 
 
 
Registers Details                                                                                                               
 
 
 
Config 
Register 
API Name 
Registers 
Macro/Variable 
Parameter 
Access 
R/W/RW 
 DSAn 


(uint32)LpTxData 
 DTFRn 


(uint32)SPI_ZERO 
(uint32)(LpDmaConfig-> 
usDmaDtfrRegValue 
 DCSTSn 


SPI_DMA_STR 
 DTCn 


SPI_ONE 
 DTFRRQCn 


SPI_DMA_DRQ_CLEAR 
 DDAn 


(uint32)(&Spi_GddDmaRxD
ata) 
 CSIHnCTL2 
SpiBaudrateRegisterSelect 

LpJobConfig->usCtl2Value 
 
 CSIHnMCTL2 


LunDataAccess1.ulRegData 
 CSIHnTX0W 


LunDataAccess1.ulRegData, 
LunDataAccess2.ulRegData, 
LpDataAccess->ulRegData  
 CSIHnTX0H 


LddData, 
LunDataAccess2.usRegData
5[SPI_ZERO] 
 CSIHnCFGx 
SpiCsIdleTiming, 

LunDataAccess1.ulRegData 
SpiCsHoldTiming, 
SpiCsInterDataDelay, 
SpiCsSetupTime, 
SpiCsIdleEnforcement 
 CSIHnBRSy 
 SpiBaudrateConfiguration 

Csih_BaseAddress[LddHWU
 
nit]->BRSy 
 IMRn 
SpiHwUnitSelection 

Spi_GstHWUnitInfo[LddHWU
and 
nit].ulRxImrMask, 
SpiMemoryModeSelection 
 
Spi_GstHWUnitInfo[LddHWU
 
nit].ulTxImrMask, 
Spi_GstHWUnitInfo[LddHWU
nit].ulErrorImrMask, 
Spi_GstHWUnitInfo[LddHWU
nit].ulTxCancelImrMask 
 ICRn 


SPI_CLR_INT_REQ  
 DTFRRQn 



 CSIHnRX0H 



 CSIHnRX0W 


 - 
Spi_ReadIB 
 CSIHnRX0W 


LunDataAccess2.ulRegData 
 CSIHnRX0H 


LunDataAccess2.usRegData
5[SPI_ONE], 
LunDataAccess2.usRegData
5[SPI_ZERO] 
 CSIHnMRWP0  - 
RW 
LunDataAccess1.ulRegData 
Spi_SetupEB 
 - 



Spi_GetStatus 
 - 



Spi_GetJobResult 
 - 



Spi_GetSequenceRes  - 



ult 
Spi_SyncTransmit 
 CSIHnMCTL0 


LpJobConfig->usMCtl0Value 
36 

  Registers Details                                                                                                                     Chapter 6 
 
 
 
Config 
Register 
API Name 
Registers 
Macro/Variable 
Parameter 
Access 
R/W/RW 
 CSIHnCTL0 


SPI_RESET_PWR 

SPI_SET_DIRECT_ACCES

SPI_SET_PWR 
SPI_ZERO 
 CSIHnRX0H 

RW 
LunDataAccess3.ulRegData, 
Spi_GusSynDataAccess 
 CSIHnSTR0 



 CSIHnSTCR0 


SPI_DCE_ERR_CLR, 
SPI_PE_ERR_CLR, 
SPI_OFE_ERR_CLR 
 CSIHnCTL1 
SpiCsInactiveAfterLastDat

LunDataAccess1.ulRegData, 
a, SpiDataWidth 
(LpMainOsBaseAddr-
>ulMainCTL1 | 
~SPI_CSRI_AND_MASK 
 CSIHnCTL2 
SpiBaudrateRegisterSelect 

LunDataAccess1.ulRegData, 
 
LpJobConfig->usCtl2Value 
 CSIHnTX0W 


LpJobConfig->usCtl2Value, 
LunDataAccess3.ulRegData 
 CSIHnBRSy 
SpiBaudrateConfiguration 

Csih_BaseAddress[LddHWU
 
nit]->BRSy , LpJobConfig-
>usCtl2Value & 
SPI_CSIH_BRS_MASK 
 ICRn 


SPI_CLR_INT_REQ 
 CSIHnCFGx 
SpiCsIdleTiming, 

LunDataAccess1.ulRegData 
SpiCsHoldTiming, 
SpiCsInterDataDelay, 
SpiCsSetupTime, 
SpiCsIdleEnforcement 
Spi_GetHWUnitStatus  CSIHnSTR0 



Spi_Cancel 
 CSIHnCTL0 

       R/W 
SPI_SET_JOBE 
 IMRn 


Spi_GstHWUnitInfo[LddHW
Unit].ulTxCancelImrMask 
 ICRn 


SPI_CLR_INT_REQ  
Spi_SetAsyncMode 
 IMRn 
SpiHwUnitSelection 

Spi_GstHWUnitInfo[LddHWU
and 
nit].ulRxImrMask, 
SpiMemoryModeSelection 
Spi_GstHWUnitInfo[LddHWU
nit].ulTxImrMask, 
Spi_GstHWUnitInfo[LddHWU
nit].ulErrorImrMask, 
Spi_GstHWUnitInfo[LddHWU
nit].ulTxCancelImrMask 
 ICRn 


SPI_CLR_INT_REQ  
Spi_MainFunction_Ha  CSIHnCTL0 


SPI_SET_PWR 
ndling 
 CSIHnRX0H 



 CSIHnTX0W 


LunDataAccess1.ulRegData 
 CSIHnTX0H 


LddData 
LunDataAccess2.usRegData
5[0] 
37 

Chapter 6 
 
 
Registers Details                                                                                                               
 
 
 
Config 
Register 
API Name 
Registers 
Macro/Variable 
Parameter 
Access 
R/W/RW 
 CSIHnRX0W 



 CSIHnMCTL2 
SpiMemoryModeSelection 

LunDataAccess1.ulRegData 
 ICRn 


SPI_CLR_INT_REQ 
 
 
 
 DCSTCn 


SPI_DMA_STR_CLEAR 
 DCSTn 



 DCENn 


SPI_DMA_DCEN_DISABLE 
SPI_DMA_DCEN_ENABLE 
 DTCTn 


SPI_DMA_FIXED_TX_SETT
INGS 
 DSAn 


SPI_
(uin D
t3 M
2 A_
)Lp IN
Tx V_
Da TX_
ta 
SETTIN
GS 
 DTFRn 


(uint32)SPI_ZERO 
LddNoOfBuffers 
(uint32)(LpDmaConfig-> 
SPI_DMA_STR_REQ 
usDmaDtfrRegValue 
SPI_DMA_ONCE 
 DCSTSn 


SPI_
SPI_D
DMA_
MA_FI
S XED_
TR 
RX_SET
TINGS 
 DTCn 


SPI_ONE 
SPI_DMA_INV_RX_SETTIN
 DTFRRQCn 


GS 
SPI_DMA_DRQ_CLEAR 
SPI_DMA_ONCE 
 DDAn 


(uint32)(&Spi_GddDmaRxD
ata) 
 CSIHnSTCR0 


SPI_CLR_STS_FLAGS 
 CSIHnSTR0 



 CSIHnCTL1 
SpiCsInactiveAfterLastDat

LunDataAccess1.ulRegData 
a, SpiDataWidth 
LpJobConfig-
>ulMainCtl1Value 
SPI_SET_SLIT 
 CSIHnCTL2 
SpiBaudrateRegisterSelect 

LpJobConfig->usCtl2Value 
 
 IMRn 
SpiHwUnitSelection 

Spi_GstHWUnitInfo[LddHWU
and 
nit].ulRxImrMask, 
SpiMemoryModeSelection 
 
Spi_GstHWUnitInfo[LddHWU
 
nit].ulTxImrMask, 
Spi_GstHWUnitInfo[LddHWU
nit].ulErrorImrMask, 
Spi_GstHWUnitInfo[LddHWU
nit].ulTxCancelImrMask 
 CSIHnCFGx 
SpiCsIdleTiming, 

LunDataAccess1.ulRegData 
SpiCsHoldTiming, 
SpiCsInterDataDelay, 
SpiCsSetupTime, 
SpiCsIdleEnforcement 
 CSIHnBRSy 
SpiBaudrateConfiguration 

Csih_BaseAddress[LddHWU
 
nit]->BRSy 
 CSIHnMCTL0 


LpJobConfig->usMCtl0Value 
 DTFRRQn 



Spi_GetVersionInfo 
 - 



Spi_GetErrorInfo 
 - 



Spi_SelfTest 
 CSIHnRX0H 



38 

  Registers Details                                                                                                                     Chapter 6 
 
 
 
Config 
Register 
API Name 
Registers 
Macro/Variable 
Parameter 
Access 
R/W/RW 
 CSIHnCTL0 
SpiLoopBackSelfTest 

SPI_SET_DIRECT_ACCES

SPI_ZERO 
 CSIHnCTL1 
SpiLoopBackSelfTest 

SPI_LOOPBACK_ENABLE 
SPI_ZERO  SPI_SET_SLIT 
LunDataAccess1.ulRegData 
 CSIHnCTL2 
SpiLoopBackSelfTest 

SPI_LOOPBACK_CSIH_CN
TRL2_VALUE 
SPI_ZERO 
((LpJobConfig->usCtl2Value) 
& SPI_CSIH_PRE_MASK) 
 CSIHnSTCR0 
SpiLoopBackSelfTest 

SPI_CSIH_CLR_STS_FLAG

SPI_PE_ERR_CLR 
SPI_ZERO 
 CSIHnCFGx 
SpiLoopBackSelfTest 

SPI_LOOPBACK_DLS_SET
TING SPI_ZERO 
LunDataAccess1.ulRegData 
 CSIHnBRSy 
SpiLoopBackSelfTest 

SPI_LOOPBACK_CSIH_BR
S0_VALUE 
SPI_ZERO 
((LpJobConfigCSConfig-
>usCtl2Value) & 
SPI_CSIH_BRS_MASK) 
 CSIHnTX0W 
SpiLoopBackSelfTest 

SPI_LOOPBACK_DATA 
SPI_ZERO 
 CSIHnSTR0 
SpiLoopBackSelfTest 


 ECCCSIHnCTL  SpiECCSelfTest 
R/W 
SET_EC1EDIC_EC2EDIC 
ECC_CTL_ECEMF_SET 
ECC_CTL_ECER1F_ECER
2F_CLEAR 
CTL_ERRCLR_FLAG 
CTL_2BIT_ERRCLR_FLAG 
CTL_1BIT_ERR_FLAG 
 ECCCSIHnTMC  SpiECCSelfTest 

SET_TMC_BITS 
SET_TEST_DISABLE 
 ECCCSIHnTRC  SpiECCSelfTest 

TRC_ERDB_INITIALIZE 
 ECCCSIHnTED  SpiECCSelfTest 
R/W 
RAM_INITIALIZE, 
ALL_ZERO_PATTERN, 
ALL_ONE_PATTERN, 
TWO_BIT_PATTERN 
 IMRn 
SpiHwUnitSelection 

Spi_GstHWUnitInfo[LddHWU
and 
nit].usRxImrMask, 
SpiLoopBackSelfTest 
 
Spi_GstHWUnitInfo[LddHWU
nit].pTxImrAddress, 
Spi_GstHWUnitInfo[LddHWU
nit].pErrorImrAddress, 
Spi_GstHWUnitInfo[LddHWU
nit].usRxImrMask, 
LpHWUnitInfo-
>usTxCancelImrMask 
 ICRn 


SPI_CLR_INT_REQ 
39 

Chapter 6 
 
 
Registers Details                                                                                                               
 
 
 
Config 
Register 
API Name 
Registers 
Macro/Variable 
Parameter 
Access 
R/W/RW 
 CSIHnMCTL0 
SpiMemoryModeSelection 

LpJobConfig->usMCtl0Value 
 
 
                     
 
                 
40 

Interaction Between The User And SPI Driver Component 
Chapter 7 
 
 
Chapter 7 
Interaction Between The User And SPI
 
Driver Component  
 
 
The details of the services supported by the SPI Driver Component to the 
upper layers users and the mapping of the channels to the hardware units is 
provided in the following sections: 
 
7.1.  Services Provided By SPI Driver Component To The User 
 
 
The SPI Driver Component provides the following functions to upper layer: 
 
• 
To provide the required mechanism to configure the on-chip SPI peripheral 
 
• 
To initialize and de-initialize the SPI driver 
 
• 
To read and write to devices connected through SPI buses 
 
• 
To provide the transmission of data on the SPI bus both synchronously and 
asynchronously 
 
• 
To cancel an ongoing transmission 
 
• 
To set the asynchronous transfer mode 
 
• 
To get the status of the SPI Driver and hardware unit 
 
• 
To get the result of the specified job and specified sequence 
 
• 
To provide access to SPI communication to several users(for example, 
EEPROM, I/O ASICs) 
 
• 
To read the SPI Driver Component version information. 
41 

Chapter 7                                                         Interaction Between The User And SPI Driver Component 
 
 
42 

SPI Driver Component Header And Source File Description 
Chapter 8 
 
Chapter 8 
SPI Driver Component Header And 
Source File Description 

 
 
This section explains the SPI Driver Component’s source and header files. 
These files have to be included in the project application while integrating with 
other modules. 
 
The C header file generated by SPI Driver Generation Tool: 
 
• 
Spi_Cfg.h 
• 
Spi_Cbk.h 
• 
Spi_Hardware.h 
 
The C source file generated by SPI Driver Generation Tool: 
 
• 
Spi_PBcfg.c 
• 
Spi_Lcfg.c 
• 
Spi_Hardware.c 
 
The SPI Driver Component C header files: 
 
• 
Spi_Driver.h 
• 
Spi_PBTypes.h 
• 
Spi_LTTypes.h 
• 
Spi_Ram.h 
• 
Spi.h 
• 
Spi_Irq.h 
• 
Spi_Scheduler.h 
• 
Spi_Version.h 
• 
Spi_Types.h 
• 
Spi_RegWrite.h 
 
The SPI Driver Component C source files: 
 
• 
Spi_Driver.c 
• 
Spi.c 
• 
Spi_Irq.c 
• 
Spi_Ram.c 
• 
Spi_Scheduler.c 
• 
Spi_Version.c 
 
The Stub C header files: 
 
• 
Compiler.h 
• 
Compiler_Cfg.h 
• 
MemMap.h 
• 
Platform_Types.h 
• 
rh850_Types.h 
• 
Det.h 
• 
Rte.h 
• 
SchM.h 
• 
SchM_Spi.h 
• 
Dem.h 
• 
Dem_cfg.h 
 
The description of the SPI Driver Component files is provided in the table 
below: 
 
43 

Chapter 8                                                     SPI Driver Component Header And Source File Description 
 
Table 8-1  Description Of The SPI Driver Component Files 
 
File 
Details 
Spi_Cfg.h 
This file is generated by the SPI Driver Component Code Generation Tool for 
various SPI Driver component pre-compile time parameters. This file contains 
macro definitions for the configuration elements and exclusive areas for data 
protection. The macros and the parameters generated will vary with respect to the 
configuration in the input XML file. 
 
This file is generated by the SPI Driver Component Code Generation Tool for 
Spi_Cbk.h 
provision of function prototype Declarations for SPI callback Notification 
Functions. 
Spi_Hardware.h 
This file contains the #define macros for the hardware registers to be used by the 
driver. 
Spi_PBcfg.c 
This file contains post-build configuration data. The structures related to channel 
configuration, job configuration and sequence configuration are provided in this 
file. Data structures will vary with respect to parameters configured. 
Spi_Lcfg.c 
This file contains provision of SPI Link time Parameters. The structures related to 
hardware registers are provided in this file. Data structures will vary with respect 
to parameters configured. 
Spi_Hardware.c 
This file contains the reference objects for the structures of hardware register which 
is defined in device header file. 
Spi_Driver.h 
This file contains the Function Prototypes that are defined in Spi_Driver.c file. 
Spi_PBTypes.h 
This file contains the data structure definitions of the channel configuration, 
job configuration and sequence configuration 
Spi_LTTypes.h 
This file contains the data structure definitions of CSIH hardware registers, Interrupt 
control registers, DMA hardware registers, Hardware unit information, DMA unit 
information, storing current status of SPI communication, channel for the link time 
parameters, function pointer for Callback notification function for Jobs, processing 
sequence, storing external buffer attributes, Scheduler and DMA Address. 
Spi_Ram.h 
This file contains the extern declarations for the global variables that are defined in 
Spi_Ram.c file and the version information of the file. 
Spi.h 
This file provides extern declarations for all the SPI Driver Component APIs. This 
file provides service Ids of APIs, DET Error codes and type definitions for SPI 
Driver initialization structure. This header file shall be included in other modules to 
use the features of SPI Driver Component. 
Spi_Irq.h 
This file contains the function prototypes that are defined in Spi_Irq.c file. 
Spi_Scheduler.h 
This file contains the function prototypes that are defined in Spi_Scheduler.c file. 
Spi_Types.h 
This file contains the common macro definitions and the data types required 
internally by the SPI software component. 
Spi_Version.h 
This file contains the definitions of AUTOSAR version numbers of all modules 
that are interfaced to SPI Driver. 
Spi_Driver.c 
This file contains the SPI Low Level Driver code. 
Spi.c 
This file contains the implementation of all APIs. 
Spi_Irq.c 
This file contains the ISR functions for SPI Driver Component. 
Spi_Ram.c 
This file contains the global variables used by SPI Driver Component. 
Spi_Scheduler.c 
This file contains the SPI Scheduler code. This contains function to schedule 
the sequences according to the priority of the jobs. 
Spi_Version.c 
This file contains the code for checking version of all modules that are interfaced to 
SPI Driver. 
Compiler.h 
This file Provides compiler specific (non-ANSI) keywords. All mappings of keywords, 
which are not standardized, and/or compiler specific are placed and organized in this 
compiler specific header. 
44 

SPI Driver Component Header And Source File Description 
Chapter 8 
 
File 
Details 
Compiler_Cfg.h 
This file contains the memory and pointer classes. 
MemMap.h 
This file allows to map variables, constants and code of modules to individual 
memory sections. Memory mapping can be modified as per ECU specific 
needs. 
Platform_Types.h 
This file provides provision for defining platform and compiler dependent types. 
Spi_RegWrite.h 
 This file contains macro for register write verify check. 
 
rh850_Types.h 
This file provides macros to perform supervisor mode (SV) write enabled Register 
ICxxx and IMR register writing using OR/AND/Direct operation. 
Det.h 
This file is a stub for DET Component. 
Rte.h 
This file is a stub for Rte Component. 
SchM.h 
This file is a stub for Schm Component. 
SchM_Spi.h 
Header file information for Schm application. 
 Dem.h 
 This file is a stub for DEM component. 
Dem_cfg.h 
This file contains the stub values for Dem_Cfg.h. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45 

Chapter 8                                                     SPI Driver Component Header And Source File Description 
 
 
 
 
 
 
 
 
46 

Generation Tool Guide 
Chapter 9 
 
Chapter 9 
Generation Tool Guide 
 
 
For information on the SPI Driver Component Code Generation Tool, please 
refer “R20UT3660EJ0100-AUTOSAR.pdf” document. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47 

Chapter 9                                                                                                            Generation Tool Guide 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48 
 
 

Application Programming Interface                                                                                    Chapter 10 
 
Chapter 10  Application Programming Interface 
 
 
This section explains the Data types and APIs provided by the SPI Driver 
Component to the Upper layers. 
 
 
10.1.  Imported Types 
 
This section explains the Data types imported by the SPI Driver Component 
and lists its dependency on other modules. 
 
10.1.1. 
Standard Types 
 
In this section all types included from the Std_Types.h are listed: 
 
• 
Std_ReturnType 
 
• 
Std_VersionInfoType 
 
10.1.2. 
Other Module Types 
 
In this chapter all types included from the Dem_types.h are listed: 
 
• 
Dem_EventIdType 
 
• 
Dem_EventStatusType 
 
 
10.2.  Type Definitions 
 
This section explains the type definitions of SPI Driver Component according 
to AUTOSAR Specification. 
 
10.2.1. 
Spi_ConfigType 
 
Name: 
Spi_ConfigType 
Type: 
Structure 
 
Implementation Specific 
The   contents   of   the   initialization  
Range: 
data structure are SPI specific 
 
Description: 
This type of the external data structure shall contain the initialization data for the SPI 
driver/Handler 
 
10.2.2. 
Spi_StatusType 
 
Name: 
Spi_StatusType 
Type: 
Enumeration 
 
SPI_UNINIT 
The SPI Handler/Driver is not initialized or 
 
 
not usable 
 
SPI_IDLE 
The SPI Handler/Driver is not 
Range: 
currently transmitting any job 
SPI_BUSY 
The SPI Handler/Driver is performing a SPI 
job(transmit) 
Description: 
This type defines a range of specific status for SPI Handler/driver 
49 

Chapter 10                                                                                   Application Programming Interface 
 
10.2.3. 
Spi_JobResultType 
 
Name: 
Spi_JobResultType 
Type: 
Enumeration 
 
SPI_JOB_OK 
The last transmission of the job has 
 
 
been finished successfully 
 
SPI_JOB_PENDING 
The SPI Handler/Driver is performing a 
Range: 
SPI Job. The meaning of this status is 
equal to SPI_BUSY 
SPI_JOB_FAILED 
The last transmission of the job has failed 
Description: 
This type defines a range of specific jobs status for SPI Handler/driver 
10.2.4. 
Spi_SeqResultType 
 
Name: 
Spi_SeqResultType 
Type: 
Enumeration 
 
SPI_SEQ_OK 
The last transmission of the Sequence 
 
 
has been finished successfully 
 
SPI_SEQ_PENDING 
The SPI Handler/Driver is performing a SPI 
 
 
Sequence The meaning of this status is 
Range: 
equal to SPI_BUSY 
SPI_SEQ_FAILED 
The last transmission of the Sequence 
has failed 
SPI_SEQ_CANCELLED 
The last transmission of the Sequence 
has been cancelled by user. 
Description: 
This type defines a range of specific sequences status for SPI Handler/driver 
 
10.2.5. 
Spi_DataType 
 
Name: 
Spi_DataType 
Type: 
uint8,uint16,uint32 
 
0 to 255, 0 to 65535, 
This is implementation specific but not all 
 
0 to 4294967296. 
values may be valid within the type This type 
Range: 
shall be chosen in order to have the most 
efficient implementation on a specific 
microcontroller platform 
Description: 
Type of application data buffer elements 
 
10.2.6. 
Spi_NumberOfDataType 
 
Name: 
Spi_NumberOfDataType 
Type: 
uint16 
Range: 
0 to 65535 
 
Description: 
Type for defining the number of data elements of the type Spi_DataType to send 
and/or receive by channel 
 
 
50 

Application Programming Interface                                                                                    Chapter 10 
 
 
10.2.7. 
Spi_ChannelType 
 
Name: 
Spi_ChannelType 
Type: 
uint8 
Range: 
0 to 255 
Description: 
Specifies the identification(IdId) for a channel 
10.2.8. 
Spi_JobType 
 
Name: 
Spi_JobType 
Type: 
uint16 
Range: 
0 to 65535 
Description: 
Specifies the identification(Id) for a Job 
 
10.2.9. 
Spi_SequenceType 
 
Name: 
Spi_SequenceType 
Type: 
uint8 
Range: 
0 to 255 
Description: 
Specifies the identification(Id) for a sequence of Jobs 
 
10.2.10. 
Spi_HWUnitType 
 
Name: 
Spi_HWUnitType 
Type: 
uint8 
Range: 
0 to 255 
Description: 
Specifies the identification(Id) for a SPI Hardware microcontroller peripheral(unit) 
 
10.2.11. 
Spi_AsyncModeType 
 
Name: 
Spi_AsyncModeType 
Type: 
Enumeration 
 
SPI_POLLING_MODE 
The asynchronous mechanism is ensured 
 
by polling, so interrupts related to SPI 
Range: 
busses handled asynchronously are 
disabled 
SPI_INTERRUPT_MODE 
Streaming access mode 
 
Description: 
Specifies the asynchronous mechanism mode for SPI busses handled 
asynchronously in LEVEL2. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51 

Chapter 10                                                                                   Application Programming Interface 
 
Following are the internal type definitions used by the SPI Driver module. 
10.2.12. 
Spi_CommErrorType 
 
 
Name: 
Spi_CommErrorType 
 
Type: 
Structure 
 
Type 
Name 
Explanation 
 
 
Spi_HWErrorsType 
ErrorType 
This is the type of the    
 
hardware error. 
 
Spi_HWUnitType 
HwUnit 
This is the hardware   
 
unit in which error is 
 
reported. 
 
 
Spi_SequenceType 
SeqID 
This is the sequence 
Element: 
id for which error is 
reported. 
Spi_JobType 
JobID 
 This is the job id for 
which error is 
reported. 
Description: 
This type is used to provide the details regarding the type of hardware errors, hardware 
unit, sequence and job in which the errors were reported. 
 
10.2.13. 
Spi_HWErrorsType 
 
Name: 
Spi_HWErrorsType 
Type: 
Enumeration 
 
SPI_NO_ERROR 
No hardware error has occured. 
 
 
SPI_OVERRUN_ERROR 
Over Run Error has occured. 
 
SPI_PARITY_ERROR 
Parity Error has occured. 
 
 
SPI_DATA_CONSISTENCY_ERROR  Data Consistency Error has occured 
Range: 
SPI_OVERFLOW_ERROR 
Over Flow Error has occured 
SPI_ECC_1BIT_ERROR 
1 Bit ECC Error has occured 
Description: 
This type defines different types of hardware errors in SPI driver. 
 
10.2.14. 
Spi_SelfTestType 
 
Name: 
Spi_SelfTestType 
Type: 
uint8 
Range: 
0 to 255 
Description: 
Specifies the type for self-test functionality. 
 
10.2.15. 
Spi_ReturnStatus 
 
Name: 
Spi_ReturnStatus 
Type: 
Enumeration 
 
SPI_SELFTEST_INVALID_MODE 
When invalid argument other than 
 
LoopBack_Init/ LoopBack_Init_RunTime/ 
 Range: 
ECC_Init_RunTime/ ECC_Init are 
 
 
passed. 
SPI_SELFTEST_DRIVERBUSY 
When SelfTest API is invoked during any 
 
active transmission, i.e when driver is busy. 
Range: 
SPI_SELFTEST_PASS 
SelfTest functionality is successful. 
SPI_SELFTEST_FAILED 
SelfTest functionality is failed. 
Description: 
This type defines the return status of the self-test functionality. 
52 
 

Application Programming Interface                                                                                    Chapter 10 
 
10.3.  Function Definitions 
 
Table 10-1 
The APIs provided by the SPI Driver Component 
 
 
 
SI.No 
API’s  
    API’s specific 
 

Spi_Init 


Spi_DeInit 


Spi_WriteIB 


Spi_AsyncTransmit 


Spi_ReadIB 


Spi_SetupEB 


Spi_GetStatus 


Spi_GetJobResult 


Spi_GetSequenceResult 

10 
Spi_GetVersionInfo 

11 
Spi_SyncTransmit 

12 
Spi_Cancel 

13 
Spi_SetAsyncMode 

14 
Spi_MainFuncnction_Handling 

15 
Spi_GetHWUnitStatus 

16 
Spi_GetErrorInfo 

17 
Spi_SelfTest 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53 

Chapter 10                                                                                   Application Programming Interface 
 
 
 
 
 
 
54 

Development And Production Errors  
Chapter 11  
 
Chapter 11  Development And Production Errors 
 
 
In this section the development errors that are reported by the SPI Driver 
Component are tabulated. The development errors will be reported only when 
the pre compiler option SpiDevErrorDetect is enabled in the configuration. 
The production code errors are not supported by SPI Driver Component. 
 
11.1.  SPI Driver Component Development Errors 
 
 
The following table contains the DET errors that are reported by SPI Driver 
Component. These errors are reported to Development Error Tracer Module 
when the SPI Driver Component APIs are invoked with wrong input 
parameters or without initialization of the driver. 
 
Table 11-1 
DET Errors Of SPI Driver Component 
 
Sl. No. 
1 
Error Code 
SPI_E_PARAM_CHANNEL 
Related API(s) 
Spi_WriteIB, SpiReadIB and Spi_SetupEB 
Source of Error 
When the API service is invoked with invalid channel Id and if incorrect type of 
channel 
(IB or EB) is used with services. 
Sl. No. 
2 
Error Code 
SPI_E_PARAM_JOB 
Related API(s) 
Spi_GetJobResult 
Source of Error 
When the API service is invoked with invalid job Id. 
Sl. No. 
3 
Error Code 
SPI_E_PARAM_SEQ 
Related API(s) 
Spi_AsyncTransmit, Spi_GetSequenceResult, Spi_SyncTransmit and Spi_Cancel. 
Source of Error 
When the API service is invoked with invalid sequence Id. 
Sl. No. 
4 
Error Code 
SPI_E_PARAM_LENGTH 
Related API(s) 
Spi_SetupEB 
Source of Error 
When the API service is invoked with length greater than the configured length. 
Sl. No. 
5 
Error Code 
SPI_E_PARAM_UNIT 
Related API(s) 
Spi_GetHWUnitStatus 
Source of Error 
When the API service is invoked with invalid hardware unit Id. 
Sl. No. 
6 
Error Code 
SPI_E_SEQ_PENDING 
Related API(s) 
Spi_AsyncTransmit 
Source of Error 
When the API service is invoked in a wrong sequence. 
Sl. No. 
7 
Error Code 
SPI_E_SEQ_IN_PROCESS 
Related API(s) 
Spi_SyncTransmit, Spi_SelfTest 
Source of Error 
When the API service is invoked at wrong time. 
55 

Chapter 11                                                                                  Development And Production Errors 
 
 
Sl. No. 
8 
Error Code 
SPI_E_ALREADY_INITIALIZED 
Related API(s) 
Spi_Init 
Source of Error 
When the API Spi_Init is invoked when the SPI driver is already initialized. 
Sl. No. 
9 
Error Code 
SPI_E_INVALID_DATABASE 
Related API(s) 
Spi_Init 
Source of Error 
When the API service is invoked with invalid pointer. 
Sl. No. 
10 
Error Code 
SPI_E_UNINIT 
Related API(s) 
Spi_DeInit, Spi_AsyncTransmit, Spi_Cancel, Spi_GetStatus,  
Spi_GetHWUnitStatus, Spi_GetJobResult, Spi_GetSequenceResult, Spi_WriteIB, 
Spi_ReadIB, Spi_SetupEB, Spi_SyncTransmit, Spi_SetAsyncMode, 
Spi_MainFunction_Handling and Spi_GetErrorInfo. 
Source of Error 
When the APIs are invoked without the initialization of  SPI Driver Component. 
Sl. No. 
11 
Error Code 
SPI_E_PARAM_POINTER 
Related API(s) 
  Spi_ReadIB and Spi_GetVersionInfo. 
Source of Error 
 When the API service is invoked with null pointer. 
 Note: This error code (SPI_E_PARAM_POINTER) is applicable for  Autosar R4.0 
only. 
Sl. No. 
12 
Error Code 
SPI_E_PARAM_CONFIG 
Related API(s) 
Spi_Init 
Source of Error 
When the API invoked with null config pointer. 
Sl. No. 
13 
Error Code 
SPI_E_MAINFUNCTION_HANDLING_INVALIDMODE 
Related API(s) 
Spi_MainFunction_Handling 
Source of Error 
When the API invoked in SPI_INTERRUPT_MODE. 
 
 
11.2.  SPI Driver Component Production Errors 
 
 
In this section the DEM errors identified in the SPI Driver Component are 
listed. SPI Driver Component reports these errors to DEM by invoking 
Dem_ReportErrorStatus API. This API is invoked, when the processing of the 
given API request fails. 
 
 
 
 
 
 
 
 
56 
 

Development And Production Errors  
Chapter 11  
 
Table 11-2 
DEM Errors Of SPI Driver Component 
 
Sl. No. 
1 
Error Code 
SPI_E_HARDWARE_ERROR 
Related API(s) 
Spi_Init , Spi_SyncTransmit, Spi_MainFunction_Handling and Spi_SelfTest. 
Source of Error 
When an overrun occurs when the next reception starts without performing a CPU 
read of the value of the receive buffer, upon completion of the receive operation. 
Sl. No. 
2 
Error Code 
SPI_E_DATA_TX_TIMEOUT_FAILURE 
Related API(s) 
Spi_SyncTransmit, Spi_Init and Spi_SelfTest. 
Source of Error 
When Hardware data transmit timeout error is detected, This error will be reported to 
DEM 
Sl. No. 

Error Code 
SPI_E_INT_INCONSISTENT 
Related API(s) 
All ISRs 
Source of Error 
 DemEventParameter which shall be issued when Interrupt consistency error was 
detected. 
Sl. No. 

Error Code 
SPI_E_ECC_SELFTEST_FAILURE 
Related API(s) 
Spi_Init and Spi_SelfTest 
Source of Error 
DemEventParameter which shall be issued when Ecc selft test error was detected. 
Sl. No. 

Error Code 
SPI_E_LOOPBACK_SELFTEST_FAILURE 
Related API(s) 
Spi_Init and Spi_SelfTest 
Source of Error 
DemEventParameter which shall be issued when loop back self-test error was 
detected. 
Sl. No. 

Error Code 
 SPI_E_REG_WRITE_VERIFY 
Related API(s) 
All APIs accessing the registers 
Source of Error 
DemEventParameter which shall be issued when loop back self-test error was 
detected. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57 

Chapter 11                                                                                  Development And Production Errors 
 
 
 
 
 
 
 
 
 
 
 
 
58 
 



Memory Organization 
Chapter 12 
 
Chapter 12  Memory Organization 
 
 
 
Following picture depicts a typical memory organization, which must be met 
for proper functioning of SPI Driver Component software. 
 
 
 
 
 
 
 
 
 
 
ROM  Section 
SPI  D rive r Component Library / 
R AM  Section 
 
Object Files 
 
 
 
 
 
  SPI Driver code related to APIs are placed in this 
Global RAM of unspecific size required for SPI  
 
memory. 
Driver functioning. 
 
X1 
Y1 
 
Segment Name: 
Segment Name: 
SPI_PUBLIC_CODE_ROM 
 
NOINIT_RAM_UNSPECIFIED 
 
 
 
 
SPI Driver code r elated to internal functions are 
Global RAM of unspecific size initialized by 
 
placed in this memory 
Start-Up code. 
Y2 
 
X2 
 
 
Segment Name: 
Segment Name:  
 
 
SPI_PRIVATE_CODE_ROM 
RAM_UNSPECIFIED 
 
 
Global 1-bit RAM initialized by SPI Driver. 
 
 
 
SPI Driver code related to ISR functions 
 
are placed in this memory 
X3 
Segment Name:  
Y3 
 
Segment Name: 
NOINIT_RAM_1BIT 
 
 
SPI_FAST_CODE_ROM 
 
 
 
 
 
 
 
 
 
 
Tool Genera ted Files 
 
 
 
 
 
The const section (for SPI configuration 
Global 8- bit R AM  initialized by  SPI D rive r. 
 
Structure) in the file Spi_PBcfg.c is placed in 
 
 
 this memory. 
 
 
X4 
Segment  Name: 
Y4 
Segment Name: 
N OIN IT _ RA M _8 B IT 
 
SPI_CFG_DATA_UNSPECIFIED 
 
 
 
 
The const section in the file Spi_Lcfg.c is placed in 
Global 16 -bit RAM initialized by SPI Driver. 
this memory.  
 
X4   
 
X5 
Segment Name: 
Segment Name: 
NOINIT_RAM_16 BIT 
Y5 
 
CONST_ROM_UNSPECIFIED 
 
           . 
Global RAM of unspecific size required for SPI Driver 
 
functioning. The Generation tool  

X6  
allocates this RAM.  
Y6 
 
 
Segment Name: 
           
     SPI_CFG_RAM_UNSPECIFIED 
 
 
 
 
 
 
Figure 12-1  SPI Driver Component Driver Organization 
 
 
 
59 

Chapter 12                                                                                                            Memory Organization 
 
ROM Section (X1, X2, X3, X4, X5 and X6): 
 
SPI_PUBLIC_CODE_ROM (X1): API(s) of SPI Driver Component, which can 
be located in code memory. 
 
SPI_PRIVATE_CODE_ROM (X2): Internal functions of SPI Driver 
Component code that can be located in code memory. 
 
  SPI_FAST_CODE_ROM(X3): SPI Driver code related to ISR  
functions are placed in this memory Segment Name. 
 
SPI_CFG_DATA_UNSPECIFIED  (X4):  This  section  consists  of  SPI 
Driver  Component constant  configuration  structures.  This  can  be  located 
in code memory. 
 
CONST_ROM_UNSPECIFIED (X5): This section consists of SPI Driver 
Component constant structures used for function pointers in SPI Driver 
Component. This can be located in code memory. 
 
RAM Section (Y1, Y2, Y3, Y4, Y5 and Y6): 
 
NOINIT_RAM_UNSPECIFIED (Y1): This section consists of the global RAM 
variables that are used internally by SPI Driver Component. This can be 
located in data memory. 
 
RAM_UNSPECIFIED (Y2): This section consists of the global RAM variables 
of 1-bit size that are initialized by start-up code and used internally by SPI 
Driver Component. This can be located in data memory. 
 
NOINIT_RAM_1BIT (Y3): This section consists of the global RAM variables of 
1-bit size that are used internally by SPI Driver Component. The specific 
sections of respective software components will be merged into this RAM 
section accordingly. 
 
NOINIT_RAM_8BIT (Y4): This section consists of the global RAM variables of 
8-bit size that are used internally by SPI Driver Component. This can be 
located in data memory. 
 
NOINIT_RAM_16BIT (Y5): This section consists of the global RAM variables 
of 16-bit size that are used internally by SPI Driver Component. This can be 
located in data memory. 
 
SPI_CFG_RAM_UNSPECIFIED (Y6): This section consists of the global 
RAM variables that are generated by SPI Driver Component Generation Tool. 
This can be located in data memory.  
Remark 
 
  X1, X2, Y1, Y2, Y3, Y4, Y5, Y6 pertain to only SPI Driver Component 
and do not include memory  occupied  by  Spi_PBcfg.c or Spi_Lcfg.c file 
generated by SPI Driver Component Generation Tool. 
 
  User  must  ensure  that  none  of  the  memory  areas  overlap  with  each 
other. Even ‘debug’ information should not overlap. 
60 

  P1x-C Specific Information 
 
      Chapter 13  
Chapter 13  P1x-C Specific Information 
 
 
P1X-C supports following devices: 
  R7F701370A(CPU1(PE1)), R7F701371(CPU1(PE1)), 
R7F701372(CPU1(PE1)), R7F701373, R7F701374. 
 
13.1. Interaction Between The User And SPI Driver 
Component 
 
The details of the services supported by the SPI Driver Component to 
the upper layers users and the mapping of the channels to the 
hardware units is provided in the following sections: 
 
13.1.1. ISR Function 
 
The table below provides the list of handler addresses corresponding to 
the hardware unit ISR(s) in SPI Driver Component. The user should 
configure the ISR functions mentioned below. 
 
Table 13-1  Interrupt Vector Table 
Interrupt Source 
Name of the ISR Function 
INTCSIH0IRE 
SPI_CSIH0_TIRE_ISR 
SPI_CSIH0_TIRE_CAT2_ISR 
INTCSIH0IR 
SPI_CSIH0_TIR_ISR 
SPI_CSIH0_TIR_CAT2_ISR 
INTCSIH0IC 
SPI_CSIH0_TIC_ISR 
SPI_CSIH0_TIC_CAT2_ISR 
INTCSIH0IJC 
SPI_CSIH0_TIJC_ISR 
SPI_CSIH0_TIJC_CAT2_ISR 
INTCSIH1IRE 
SPI_CSIH1_TIRE_ISR 
SPI_CSIH1_TIRE_CAT2_ISR 
INTCSIH1IR 
SPI_CSIH1_TIR_ISR 
SPI_CSIH1_TIR_CAT2_ISR 
INTCSIH1IC 
SPI_CSIH1_TIC_ISR 
SPI_CSIH1_TIC_CAT2_ISR 
INTCSIH1IJC 
SPI_CSIH1_TIJC_ISR 
SPI_CSIH1_TIJC_CAT2_ISR 
INTCSIH2IRE 
SPI_CSIH2_TIRE_ISR 
SPI_CSIH2_TIRE_CAT2_ISR 
INTCSIH2IR 
SPI_CSIH2_TIR_ISR 
SPI_CSIH2_TIR_CAT2_ISR 
INTCSIH2IC 
SPI_CSIH2_TIC_ISR 
SPI_CSIH2_TIC_CAT2_ISR 
INTCSIH2IJC 
SPI_CSIH2_TIJC_ISR 
SPI_CSIH2_TIJC_CAT2_ISR 
INTCSIH3IRE 
SPI_CSIH3_TIRE_ISR 
SPI_CSIH3_TIRE_CAT2_ISR 
61 

   Chapter 13                                                                   
 
P1x-C Specific Information 
Interrupt Source 
Name of the ISR Function 
INTCSIH3IR 
SPI_CSIH3_TIR_ISR 
SPI_CSIH3_TIR_CAT2_ISR 
INTCSIH3IC 
SPI_CSIH3_TIC_ISR 
SPI_CSIH3_TIC_CAT2_ISR 
INTCSIH3IJC 
SPI_CSIH3_TIJC_ISR 
SPI_CSIH3_TIJC_CAT2_ISR 
INTDMA00 
SPI_DMA00_ISR 
SPI_DMA00_CAT2_ISR 
INTDMA01 
SPI_DMA01_ISR 
SPI_DMA01_CAT2_ISR 
INTDMA02 
SPI_DMA02_ISR 
SPI_DMA02_CAT2_ISR 
INTDMA03 
SPI_DMA03_ISR 
SPI_DMA03_CAT2_ISR 
INTDMA04 
SPI_DMA04_ISR 
SPI_DMA04_CAT2_ISR 
INTDMA05 
SPI_DMA05_ISR 
SPI_DMA05_CAT2_ISR 
INTDMA06 
SPI_DMA06_ISR 
SPI_DMA06_CAT2_ISR 
INTDMA07 
SPI_DMA07_ISR 
SPI_DMA07_CAT2_ISR 
INTDMA08 
SPI_DMA08_ISR 
SPI_DMA08_CAT2_ISR 
INTDMA09 
SPI_DMA09_ISR 
SPI_DMA09_CAT2_ISR 
INTDMA10 
SPI_DMA10_ISR 
SPI_DMA10_CAT2_ISR 
INTDMA11 
SPI_DMA11_ISR 
SPI_DMA11_CAT2_ISR 
INTDMA12 
SPI_DMA12_ISR 
SPI_DMA12_CAT2_ISR 
INTDMA13 
SPI_DMA13_ISR 
SPI_DMA13_CAT2_ISR 
INTDMA14 
SPI_DMA14_ISR 
SPI_DMA14_CAT2_ISR 
INTDMA15 
SPI_DMA15_ISR 
SPI_DMA15_CAT2_ISR 
 
 
 
 
 
 
 
62 
 

  P1x-C Specific Information 
 
      Chapter 13  
 
13.2. Sample Application 
 
 
The Sample Application is provided as reference to the user to 
understand the method in which the SPI APIs can be invoked from the 
application. 
 
 
 
 
Generic 
 
 
C O M P I L E R  
AUTOSAR 
RH850 Types 
 
 
 
 
 
 
 
Common SPI 
P1x-C S P I  
STUB 
STUB 
STUB 
 
D et 
sample 
Sample 
SchM 
DEM 
 
 
application 
application 
 
 
STUB Os 
STUB 
 
MCU 
 
 
 
 
Figure 13-1  Overview Of SPI Driver Sample Application 
 
 
13.2.1. Sample Application Structure 
 
The Sample Application of the P1X-C is available in the path 
X1X\P1x-C\modules\spi\sample_application 
 
The Sample Application consists of the following folder structure 
X1X\P1x-C\modules\spi\definition\<AUTOSAR_version>\common\      
R403_SPI_P1x-C.arxml 
X1X\P1x-C 
\modules\spi\sample_application\<SubVariant>\<AUTOSAR_version> 
                                                                \src\Spi_Lcfg.c 
                                                                \src\Spi_PBcfg.c 
                                                                \src\Spi_Hardware.c 
                                                                \inc\Spi_Cfg.h 
                                                                \inc\Spi_Cbk.h 
                                                                \inc\Spi_ Hardware.h 
\config\App_SPI_P1x-C_<Device_Name>_Sample.arxml 
 
               Note  For  P1x-C  <Device_Name>  can  be  701370A,  701371,  701372, 
701373, 701374. 
 
In the Sample Application all the SPI APIs are invoked in the 
following sequence: 
 
• 
The API Spi_Init is invoked with a valid database address for the 
proper initialization of the SPI Driver, all the SPI Driver control registers 
and RAM variables will get initialized after this API is called. 
 
63 

   Chapter 13                                                                   
 
P1x-C Specific Information 
• 
The  API  Spi_GetVersionInfo  is  invoked  to  get  the  version  of  the  SPI 
Driver module with a variable of Std_VersionInfoType, after the call of 
this  API  the  passed  parameter  will  get  updated  with  the  SPI  Driver 
version details. 
 
• 
The API Spi_GetHWUnitStatus will return the status of the specified 
SPI Hardware microcontroller peripheral. 
 
• 
The API Spi_SyncTransmit will transmit data on the SPI bus 
synchronously. 
• 
This module will take the passed parameter and set the SPI Driver 
status to SPI_BUSY. Also it sets the sequence result to 
SPI_SEQ_PENDING and first job result to SPI_JOB_PENDING and 
performs the transmission. 
 
• 
The API Spi_SetAsyncMode will set the asynchronous mechanism 
mode for SPI busses handled asynchronously. 
 
• 
The API Spi_MainFunction_Driving is used for Asynchronous 
transmission of the sequences in polling mode. This service is should 
be invoked in a scheduler loop if the asynchronous transmission mode 
is selected as SPI_POLLING_MODE. 
 
• 
The API Spi_Cancel will cancel the specified on-going sequence 
transmission without canceling any Job transmission and the SPI 
Driver will set the sequence result to SPI_SEQ_CANCELLED. 
 
• 
The API Spi_DeInit is invoked for de-initialization of the all the controls 
registers and RAM variables. 
 
• 
The  API  Spi_GetErrorInfo  copies  Hardware  Error  Details  to  User 
Buffer. 
 
 
13.2.2. Building Sample Application 
 
13.2.2.1. Configuration Example 
 
 This section contains the typical configuration which is used for measuring  
 RAM/ROM consumption, stack depth and throughput details. 
 Configuration Details:       
  App_SPI_<SubVariant>_<Device_Name>_Sample.arxml. 
 
                Note  For  P1x-C  <Device_Name>  can  be  701370A,  701371,  701372,    
701373, 701374. 
13.2.2.2. Debugging The Sample Application 
                  Remark 
GNU Make utility version 3.81 or above must be installed 
and available in the path as defined by the environment user variable 
“GNUMAKE” to complete the build process using the delivered sample 
files. 
 
•  Open a Command window and change the current working directory to 
”make” directory present as mentioned in below path: 
   “X1X\P1x-C\common_family\make\ghs\<Compiler>” 
•  Now execute the batch file SampleApp.bat with following parameters 
SampleApp.bat Spi 4.0.3 <Device_name> 
•  After this, all the object files, map file and the executable file 
App_Spi_P1x-C_Sample.out will be available in the output folder: 
(“X1X\P1x-C\modules\spi\sample_application\<SubVariant> 
\obj\<Compiler>”) 
64 
 

  P1x-C Specific Information 
 
      Chapter 13  
•  The executable can be loaded into the debugger and the sample 
application can be executed. 
 
                 Remark 

Executable files with ‘*.out’ extension can be 
downloaded into the target hardware with the help of Green Hills 
debugger. 
 
•  If any configuration changes (only post-build) are made to the ECU 
Configuration Description files 
 
“X1X\P1x-C\modules\spi\sample_application\<SubVariant> 
\<AUTOSAR_version>\config\App_SPI_P1X-C_701372_Sample.arxml” 
 
•  The database alone can be generated by using the following 
commands. 
make –f App_SPI_P1x-C_Sample.mak generate_spi_config 
make –f App_SPI_P1x-C_Sample.mak App_SPI_P1x-C_Sample.s37 
 
•  After this, a flash able Motorola S-Record file App_SPI_P1x-
C_Sample.s37 is available in the output folder. 
 
Note:  The  <Device_name>  indicates  the  device  to  be  compiled,  which 
can be 701370A, 701371, 701372, 701373, 701374 and <SubVariant> 
can be P1H-C, P1H-CE, P1M-C.   
  
13.3. Memory And Throughput  
 
Typical Configuration 
  DET OFF 
  DMA disabled 
  All other Pre-Compile Settings ON 
  2 16bit SPI channels 
o  with external buffers 
o  with internal buffers 
  2 SPI jobs 
o  CSIH in direct access mode 
  2 external devices configured 
  SpiLevelDelivered configured as 2 
 
 
13.3.1. ROM/RAM Usage 
 
The details of memory usage for the typical configuration, with DET 
disabled as provided in Table 13-2  
 
Table 13-2  ROM/RAM Details Without DET 
 
Sl. No.  ROM/RAM 
Segment Name 
Size in bytes 

ROM 
DEFAULT_CODE_ROM  
     7782 
 
 
CONST_ROM_UNSPECIFIED 
       456 
 
 
CONST_ROM_32BIT 
         32 
65 

   Chapter 13                                                                   
 
P1x-C Specific Information 
Sl. No.  ROM/RAM 
Segment Name 
Size in bytes 
 
 
 
      

RAM 
NOINIT_RAM_UNSPECIFIED 
        156 
 
 
RAM_UNSPECIFIED 
        2 
 
 
NOINIT_RAM_1BIT 
        8 
 
 
NOINIT_RAM_8BIT 
        9 
 
 
NOINIT_RAM_16BIT 
        22 
 
 
RAM_8BIT 
        2 
 
 
 
The details of memory usage for the typical configuration, with DET 
enabled and all other configurations as provided in Table 13-3.  
 
 
Table 13-3  ROM/RAM Details With DET 
 
Sl. No.  ROM/RAM 
Segment Name 
Size in bytes 

ROM 
DEFAULT_CODE_ROM  
8856 
 
 
CONST_ROM_UNSPECIFIED 
           456 
 
 
CONST_ROM_32BIT 
           32 
 
 
 
         

RAM 
NOINIT_RAM_UNSPECIFIED 
           156 
 
 
RAM_UNSPECIFIED 
            2 
 
 
NOINIT_RAM_1BIT 
            8 
 
 
NOINIT_RAM_8BIT 
            9 
 
 
NOINIT_RAM_16BIT 
            22 
 
 
RAM_8BIT 
            2 
 
 
 
 
 
 
 
13.3.2. Stack Depth 
 
The  worst-case stack  depth  for  Driver  Component  is  188  bytes  for  the 
typical configuration provided in Section 13.2.2.1. 
 
 
 
 
13.3.3. Throughput Details 
 
The throughput details of the APIs for the configuration mentioned in the 
Section13.2.2.1 Configuration are provided in this section. The clock 
frequency used to measure the throughput is 240 MHz for all APIs. 
 
 
66 
 

  P1x-C Specific Information 
 
      Chapter 13  
Table 13-4  Throughput Details Of The APIs 
 
 
 
 
Sl. No. 
API Name 
Throughput in 
Remarks 
microseconds 

Spi_Init 
2.137 


Spi_DeInit 
2.500 


Spi_WriteIB 
0.387 


Spi_AsyncTransmit 
5.325 


Spi_ReadIB 
0. 250 


Spi_SetupEB 
0.200 


Spi_GetStatus 
0.620 


Spi_GetJobResult 
0. 620 


Spi_GetSequenceResult 
0. 620 

10 
Spi_GetVersionInfo 
0.100 

11 
Spi_SyncTransmit 
    8.400 

12 
Spi_GetHWUnitStatus 
0.187 

13 
Spi_Cancel 
0.275 

14 
Spi_SetAsyncMode 
1.437 
SPI_POLLING_MODE 
15 
Spi_SetAsyncMode 
0.175 
SPI_INTERRUPT_ MODE 
16 
Spi_MainFunction_Handling 
0.850 

17 
Spi_SelfTest 
649.850 
SPI_LOOP_BACK_SELF
_TEST 
18 
Spi_SelfTest 
32.150 
SPI_ECC_SELF_TEST 
19 
Spi_GetErrorInfo 
0.125 

 
 
 
 
 
 
 
67 

   Chapter 13                                                                   
 
P1x-C Specific Information 
 
 
 
 
 
 
 
 
 
 
 
68 
 

Release Details                                                                                                                   Chapter 14 
Chapter 14  Release Details 
 
 
SPI Driver Software 
 
Version: 2.0.0 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69 

Chapter 14                                                                                                                  Release Details 
 
 
 
 
 
 
70 
 

 
 
 
Revision History 
 
Sl.No.  Description 
Version 
Date 
1. 
Initial Version 
1.0.0 
05-Aug-2015 

Following changes are made: 
1.0.1 
28-Mar-2016 
 
1.  Table 4-4 User Mode and Supervisory Mode is 
updated. 
2.  In section 4, Information for 16 bit datawidth selection is 
added when DMA is configured. 
3.  Table 6-1 Register details, 8bit and 32bit settings when 
DMA is configured are removed. 
4.  In section 4.6, Information for the limitation for CS 
added. 
5.  In section 4.2, Note about the user Configuration of 
Module Short Name was added. 
6.  In section 11.1, new development error 
SPI_E_MAINFUNCTION_HANDLING_INVALIDMODE 
is added for Spi_MainFunction_Handling API. 
 

Following changes are made: 
1.0.2 
15-Feb-2017 
 
1.  Removed Section 13.2, Compiler, Linker and 
Assembler. 
2.  In section 4.3, Note about entries for User mode 
dependency of Critical Section added. 
3.  In section 4.5, Critical section details are updated by 
adding Table 4-6. 
4.  In section 4.1, Note added regarding the DMA access 
for local RAM area. 
5.  In section 12, Memory Organization is updated by 
adding information about 
SPI_START_SEC_CODE_FAST. 
6.  Section 6, Register access details are updated. 
7.  Updated section 13.2.1 Sample Application Structure to 
add details about Spi_GetErrorInfo API. 
8.  Added Spi_GetErrorInfo API in section 11.1 under 
Related API(s) corresponding to the error 
SPI_E_UNINIT. 
9.  Section 3 updated R number in remarks. 
10.  Folder Structure updated in the section 3.1.1. 
11.  Table 4-4 User mode and Supervisory mode is updated.  
12.  Section 8 updated for file information. 
13.  Section 9 updated for R number. 
14.  Table 10-1 updated with API name.    
15.  Memory, Throughput and stack depth Details are 
updated in section 13.3. 
16.  Release details updated in section 14. 
17.  Chapter 13, Added Processor name along with Device 
variants. 
18.  Figure 12-1  SPI Driver Component Driver Organization 
has been updated in Chapter 12. 
19.  Removed traces of .one and .html from the section 13.2 
Sample Application. 
 
71 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
AUTOSAR MCAL R4.0.3 User's Manual 
SPI Driver Component Ver.1.0.2 
Embedded User's Manual 
 
Publication Date: Rev.1.00, Feb 15, 2017 
 
Published by: Renesas Electronics Corporation 
 


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
SALES  OFFICES 
 
http://www.renesas.com 
Refer  to "http://www.renesas.com/" for the latest  and  de  tailed  information. 
Renesas Electronics America Inc. 
2801 Scott Boulevard Santa Clara, CA 95050-2549, U.S.A. 
Tel: +1-408-588-6000, Fax: +1-408-588-6130 
Renesas Electronics Canada Limited 
9251 Yonge Street, Suite 8309 Richmond Hill, Ontario Canada L4C 9T3 
Tel: +1-905-237-2004 
Renesas Electronics Europe Limited 
Dukes Meadow, Millboard Road, Bourne End, Buckinghamshire, SL8 5FH, U.K 
Tel: +44-1628-585-100, Fax: +44-1628-585-900 
Renesas Electronics Europe GmbH 
Arcadiastrasse 10, 40472 Düsseldorf, Germany 
Tel: +49-211-6503-0, Fax: +49-211-6503-1327 
Renesas Electronics (China) Co., Ltd. 
Room 1709, Quantum Plaza, No.27 ZhiChunLu Haidian District, Beijing 100191, P.R.China 
Tel: +86-10-8235-1155, Fax: +86-10-8235-7679 
Renesas Electronics (Shanghai) Co., Ltd. 
Unit 301, Tower A, Central Towers, 555 Langao Road, Putuo District, Shanghai, P. R. China 200333 
Tel: +86-21-2226-0888, Fax: +86-21-2226-0999 
Renesas Electronics Hong Kong Limited 
Unit 1601-1611, 16/F., Tower 2, Grand Century Place, 193 Prince Edward Road West, Mongkok, Kowloon, Hong Kong 
Tel: +852-2265-6688, Fax: +852 2886-9022 
Renesas Electronics Taiwan Co., Ltd. 
13F, No. 363, Fu Shing North Road, Taipei 10543, Taiwan 
Tel: +886-2-8175-9600, Fax: +886 2-8175-9670 
Renesas Electronics Singapore Pte. Ltd. 
80 Bendemeer Road, Unit #06-02 Hyflux Innovation Centre, Singapore 339949 
Tel: +65-6213-0200, Fax: +65-6213-0300 
Renesas Electronics Malaysia Sdn.Bhd. 
Unit 1207, Block B, Menara Amcorp, Amcorp Trade Centre, No. 18, Jln Persiaran Barat, 46050 Petaling Jaya, Selangor Darul Ehsan, Malaysia 
Tel: +60-3-7955-9390, Fax: +60-3-7955-9510 
Renesas Electronics India Pvt. Ltd. 
No.777C, 100 Feet Road, HAL II Stage, Indiranagar, Bangalore, India 
Tel: +91-80-67208700, Fax: +91-80-67208777 
Renesas Electronics Korea Co., Ltd. 
12F., 234 Teheran-ro, Gangnam-Gu, Seoul, 135-080, Korea 
Tel: +82-2-558-3737, Fax: +82-2-558-5141 
 
 
 
 
 
© 2006-2017 Renesas  Electronics  Corporation.  All rights reserved. 
Colophon  4.1 
 



 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
AUTOSAR MCAL R4.0.3 
 
User's Manual 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
R20UT3659EJ0100 
 
 
 

Document Outline


Last modified October 12, 2025: Initial commit (ddf2e20)