View All

Please refer to the English Version as our Official Version.Return

Europe
France(Français) Germany(Deutsch) Italy(Italia) Russian(русский) Poland(polski) Czech(Čeština) Luxembourg(Lëtzebuergesch) Netherlands(Nederland) Iceland(íslenska) Hungarian(Magyarország) Spain(español) Portugal(Português) Turkey(Türk dili) Bulgaria(Български език) Ukraine(Україна) Greece(Ελλάδα) Israel(עִבְרִית) Sweden(Svenska) Finland(Svenska) Finland(Suomi) Romania(românesc) Moldova(românesc) Slovakia(Slovenská) Denmark(Dansk) Slovenia(Slovenija) Slovenia(Hrvatska) Croatia(Hrvatska) Serbia(Hrvatska) Montenegro(Hrvatska) Bosnia and Herzegovina(Hrvatska) Lithuania(lietuvių) Spain(Português) Switzerland(Deutsch) United Kingdom(English)
Asia/Pacific
Japan(日本語) Korea(한국의) Thailand(ภาษาไทย) Malaysia(Melayu) Singapore(Melayu) Vietnam(Tiếng Việt) Philippines(Pilipino)
Africa, India and Middle East
United Arab Emirates(العربية) Iran(فارسی) Tajikistan(فارسی) India(हिंदी) Madagascar(malaɡasʲ)
South America / Oceania
New Zealand(Maori) Brazil(Português) Angola(Português) Mozambique(Português)
North America
United States(English) Canada(English) Haiti(Ayiti) Mexico(español)
HomeBlogSPI Demystified Exploring the Fundamentals of Serial Peripheral Interface
on June 21th 466

SPI Demystified Exploring the Fundamentals of Serial Peripheral Interface

The Serial Peripheral Interface (SPI) protocol emerges as a cornerstone in the realm of digital communication, especially in embedded systems requiring robust, high-speed data exchanges. Originally developed to facilitate seamless data flow between microcontrollers and peripheral devices, SPI distinguishes itself with its full-duplex, synchronous capabilities, ensuring simultaneous bidirectional communication. This protocol employs a master-slave architecture, utilizing four principal lines—Master Out, Slave In (MOSI); Master In, Slave Out (MISO); Clock (SCK); and Slave Select (SS)—to establish a controlled and efficient environment for data transmission. By supporting a variety of operational modes and configurations, including 3-wire and multi-IO setups, SPI adapts to diverse technological demands, underpinning its extensive application across various sectors such as automotive electronics, industrial control systems, and consumer electronics. This in-depth exploration delves into the technical intricacies of SPI, discussing its configurations, transaction types, and programming, alongside its key role in modern electronic designs and systems.

Catalog

1. The Capabilities and Characteristics of SPI
2. Glossary of Key Terms
3. Mastering Connectivity with Slave Select and Daisy Chain Methods
4. Strategies for Effective Programming in SPI
5. Configuring the SPI Bus: 3-Wire and Multi-IO Setups
6. Executing a Simple SPI Write Transaction
7. How to Perform an SPI Read Transaction?
8. Enhancing Data Transfer with Quad IO SPI Transactions
9. Overview of SPI Bus Transactions
10. Exploring the Advantages of SPI: Why It Matters?
11. The Challenges and Disadvantages of Using SPI
12. Applications of the Serial Peripheral Interface (SPI) in Technology
13. Conclusion

 Serial Peripheral Interface (SPI) Bus

Figure 1: Serial Peripheral Interface (SPI) Bus

The Capabilities and Characteristics of SPI

The Serial Peripheral Interface (SPI) Bus is key for fast, full-duplex, synchronous data transfer between a master device and multiple slave devices. Unlike other protocols, SPI uses four main data lines: Master Out, Slave In (MOSI), Master In, Slave Out (MISO), Clock (SCK), and Slave Select (SS). This setup allows efficient and robust data handling for various applications.

 Master-Slave Configuration

Figure 2: Master-Slave Configuration

In an SPI system, data flows simultaneously in both directions, allowing real-time communication. The master sends data to the slave via the MOSI line and receives data from the slave through the MISO line at the same time. SPI devices can transmit data starting with either the Most Significant Bit (MSB) or the Least Significant Bit (LSB). This requires careful configuration according to the device's datasheet to ensure the correct bit sequence. For instance, in Arduino projects, following detailed SPI port configuration guidelines is needed to match the specific device's requirements, as outlined in technical references and datasheets.

Clock Polarity and Phase

Figure 3: Clock Polarity and Phase

The accuracy of data transfer in SPI depends on correctly setting the clock polarity (CPOL) and phase (CPHA), which determine how data bits align and are captured during communication. SPI supports four modes to accommodate different timing needs:

• Mode 0 (CPOL=0, CPHA=0)

The clock is idle low. Data bits are captured on the clock's rising edge and transmitted on the falling edge. Data must be ready before the first rising clock pulse.

• Mode 1 (CPOL=0, CPHA=1)

The clock is idle low. Data bits are captured on the falling edge and transmitted on the next rising edge.

• Mode 2 (CPOL=1, CPHA=0)

The clock is idle high. Data is captured on the falling edge and transmitted on the rising edge. Data must be ready before the first falling clock pulse.

• Mode 3 (CPOL=1, CPHA=1)

The clock is idle high. Data bits are captured on the rising edge and transmitted on the falling edge.

Each mode ensures data integrity by precisely aligning data bits with clock transitions, preventing data corruption, and ensuring reliable exchanges between master and slave devices.

Glossary of Key Terms

To understand the SPI protocol, it's required to know the following key terms that define device interactions:

CLK (Serial Clock): This is the timing signal, controlled by the master device, that determines when data bits are sampled and shifted during communication. It sets the rhythm for data transmission across the SPI bus.

SSN (Slave Select): This active-low control signal, managed by the master, selects the active slave device for communication. When this signal is low, it indicates that the slave device is ready to receive data from or send data to the master.

MOSI (Master Out, Slave In): This data channel sends information from the master to the slave. Data flows through this line according to the clock signals, ensuring that bits are transmitted sequentially from the master to one or more slaves.

MISO (Master In, Slave Out): This is the data path for sending information from the slave back to the master. It complements the MOSI line, enabling a two-way data exchange within the SPI framework.

CPOL (Clock Polarity): This setting determines whether the clock line is high or low when no data transmission is occurring. It affects the stability of the idle state and readiness for the next data transmission.

CPHA (Clock Phase): This specifies when data should be sampled—either on the clock edge at the beginning of the cycle or the edge that occurs in the middle of the cycle. It's key for aligning data bits accurately with clock pulses.

Mastering Connectivity with Slave Select and Daisy Chain Methods

Multiple-Slave-Select Configuration

Figure 4: Multiple-Slave-Select Configuration

When a master SPI device communicates with multiple slaves, each slave has its own Slave Select (SS) line. This setup prevents data collisions and ensures that commands or data sent by the master reach only the intended slave. Only one SS line should be active at a time to avoid conflicts on the Master In, Slave Out (MISO) line, which could corrupt data. If return communication from slaves isn't needed, the master can activate multiple SS lines to broadcast commands or data to several slaves simultaneously.

For systems needing more slave devices than the available I/O pins on the master, I/O expansion using hardware like a decoder or demultiplexer (e.g., the 74HC(T)238) is used. This allows a single master to manage many slaves efficiently by decoding a few control lines into multiple SS lines.

Daisy-Chain Configuration

Figure 5: Daisy-Chain Configuration

Daisy-Chain Configuration

The daisy-chain topology connects multiple slave devices in series, using a single SS line. The master sends data to the first slave, which processes it and passes it to the next slave. This continues until the last slave, which can send data back to the master via the MISO line. This configuration simplifies wiring and is useful in applications like sequentially controlled LED arrays, where each device needs data passed through its predecessors.

This method requires precise timing and data handling to ensure each slave correctly interprets and forwards data. The SPI master must meticulously manage the clock and data flow to accommodate propagation delays and setup times for each slave in the chain.

Strategies for Effective Programming in SPI

Programming for SPI involves connecting microcontrollers with built-in SPI peripherals to enable high-speed data transfer. For Arduino users, there are two main ways to implement SPI communication:

Using Shift Commands

The first method uses the shiftIn() and shiftOut() commands. These software-driven commands allow flexibility in choosing pins and can be used on any digital I/O pins. This versatility is useful for various hardware setups. However, because this method relies on software to handle bit manipulation and timing, it operates at a lower speed compared to hardware-driven SPI.

Utilizing the SPI Library

The second method is more efficient and involves using the SPI Library, which directly accesses the Arduino’s onboard SPI hardware. This results in much faster data exchange rates. However, this method restricts use to specific SPI-designated pins defined by the microcontroller’s architecture.

When programming SPI communication, it is significant to follow the connected device's specifications from its datasheet. This includes setting the correct bit order (MSB or LSB first) and accurately configuring the clock phase (CPHA) and polarity (CPOL). The SPI Library in Arduino provides functions like setBitOrder(), setDataMode(), and setClockDivider() to adjust these parameters, ensuring smooth and compatible interactions with various SPI devices.

For Arduino boards, managing the Chip Select (CS) pin is a must. Older boards, such as the Arduino Uno, require manual control of this pin to start and end communication sessions. In difference, newer models like the Arduino Due offer automatic CS control, making SPI operations easier and more reliable.

Configuring the SPI Bus: 3-Wire and Multi-IO Setups

The SPI protocol adapts to various operational needs through different configurations, including the standard 4-wire setup, as well as specialized formats like 3-wire and Multi-IO modes.

 3-Wire Configuration

Figure 6: 3-Wire Configuration

3-Wire Configuration

The 3-wire mode combines the Master Out, Slave In (MOSI) and Master In, Slave Out (MISO) lines into a single bidirectional data line. This reduces the total number of required pins to three: the combined data line, the clock line (CLK), and the slave select line (SS). Operating in half-duplex mode, this setup can either send or receive data at any given time, but not both simultaneously. While reducing the pin count is beneficial for devices with limited GPIO availability, this setup also limits data throughput. It's suitable for applications where conserving space and hardware simplicity are priorities, and high-speed data transmission is less risky.

Figure 7: Multi-IO Configurations

Figure 7: Multi-IO Configurations

Multi-IO Configurations

Multi-IO configurations, including dual and quad I/O modes, expand the data lines beyond the single line seen in traditional SPI. These modes use two or four lines for data transmission, allowing for much faster data rates by enabling simultaneous bidirectional data flow. This capability is especially advantageous in high-performance environments where speed is settling.

ual I/O: Utilizes two data lines, effectively doubling the data transfer rate compared to the standard single-line setup.

Quad I/O: Employs four data lines, significantly increasing throughput and efficiency. This mode is particularly effective for execute-in-place (XIP) operations directly from non-volatile memory devices like flash storage, where data can be transmitted on all four lines simultaneously.

These enhanced I/O modes bridge the gap between traditional parallel interfaces, which typically require more pins for comparable data rates and more pin-efficient serial setups. By increasing the number of data lines, multi-IO configurations boost performance while maintaining a balance between pin count and operational efficiency, making them suitable for a wide range of high-speed data applications.

Executing a Simple SPI Write Transaction

Executing a write transaction to SPI flash memory involves precise command sequences to ensure data integrity and effective communication between the master and the slave device. The operation begins with the master activating the Slave Select (SS) line, signaling the target slave device to begin a communication session. This step is core as it prepares the specific slave device to receive data.

After activating the SS line, the master sends a write command along with the required data bytes. This command typically specifies the action to be performed, such as 'Write Status Register,' followed by the data bytes defining the new contents of the register. Precision in this step is dynamic; any error in the command or data can lead to incorrect configurations or data corruption. During this phase, the MISO line remains in a high-impedance state to prevent any data from being sent back to the master. This setup simplifies the transaction, focusing solely on sending data to the slave.

Once data transmission is complete, the master deactivates the SS line, marking the end of the transaction. This deactivation tells the slave device that the communication session is over, allowing it to return to standby and process the received data.

How to Perform an SPI Read Transaction?

Performing a read transaction from SPI flash memory involves a step-by-step process to accurately extract data from the slave device. This operation requires sending a specific read instruction to the slave, followed by sequential data retrieval. The process starts with the master activating the Slave Select (SS) line. This isolates and targets the specific slave device for communication, ensuring that commands are directed exclusively to the intended slave.

Step 1: Sending the Read Instruction

Once the slave is selected, the master sends a read instruction. This command initiates the data transfer from the slave to the master. Precision in this command is key to ensure the slave understands which data is being requested.

Step 2: Data Retrieval

After sending the instruction, the slave begins transmitting the requested data back to the master via the Master In, Slave Out (MISO) line. This data transmission occurs over several clock cycles, controlled by the master's clock. The master reads the data bytes sequentially, typically involving a predefined number of bytes based on the command's requirements.

 Quad IO SPI Transaction

Figure 8: Quad IO SPI Transaction

Enhancing Data Transfer with Quad IO SPI Transactions

Quad IO SPI mode enhances flash memory communication by using four bidirectional data lines. This setup significantly boosts data transfer rates compared to single or dual-line SPI configurations.

Detailed Breakdown of Quad IO Mode

The transaction starts when the master device sends a 'fast read' command. This command is specifically optimized to speed up the reading process, which is needed for applications that require quick access to large amounts of data, such as in high-performance computing and advanced embedded systems.

After the command is sent, the master transmits a 24-bit address. This address pinpoints the exact location in the flash memory from which data needs to be read. Following the address, 8 mode bits are sent. These mode bits configure the slave device's read parameters, adjusting the operation to meet specific performance needs.

Once the command and parameters are set, the slave device begins transmitting data back to the master. The data is sent in 4-bit units (nibbles) across the four lines, effectively quadrupling the throughput compared to standard SPI modes.

Advantages of Quad IO Mode

Using four I/O lines in Quad IO mode not only increases data transfer speeds but also enhances the overall efficiency and performance of the interface. This configuration significantly reduces the time needed for data access and execution, making it perfect for advanced flash memory operations.

Utilizing SPI Exerciser for Quad IO Transactions

The SPI Exerciser tool is invaluable for managing these complex transactions. It supports a robust command language, enabling smooth transitions between different operational modes—such as switching from a standard 4-wire setup to Quad IO mode—within a single transaction. This flexibility facilitates efficient testing and debugging of SPI configurations, ensuring systems can fully leverage the capabilities of Quad IO technology.

Overview of SPI Bus Transactions

The SPI (Serial Peripheral Interface) bus protocol, while not standardized in its data stream structure, commonly uses a de facto format that ensures compatibility and interoperability across devices from different manufacturers. This flexibility makes SPI a versatile choice for various applications, from simple sensor data collection to complex memory and communication tasks.

Common Transaction Format

Most SPI devices follow a general pattern in their data exchange processes, typically involving these steps:

• Command Phase

The master device starts the transaction by sending a command. This command specifies the type of operation to be performed, such as reading from or writing to the slave device.

• Address Phase

For operations involving specific memory locations or registers, the master sends an address. This address tells the slave exactly where to read from or write to.

• Data Phase

Depending on the command, data is either sent from the master to the slave or vice versa. In write operations, the master sends data to be stored at the specified location in the slave device. In read operations, the slave sends the requested data back to the master.

Application Versatility

Sensor Integration: SPI’s ability to handle short bursts of high-speed data makes it ideal for sensors needing rapid data updates, such as those in automotive safety systems.

Memory Access: SPI is widely used in flash memory operations, efficiently managing data transmission to and from memory chips, especially in systems where performance and speed are risky.

Communication Modules: Devices like modems and network adapters use SPI for reliable data transmission, leveraging its speed and efficiency to ensure smooth communication.

Exploring the Advantages of SPI: Why It Matters?

The Serial Peripheral Interface (SPI) protocol offers several key benefits that make it a preferred choice for a variety of electronic applications. These include high-speed data transfer, simple hardware requirements, and efficient management of multiple peripherals.

Advantages of SPI

High Data Transfer Rates

SPI supports much higher data transfer rates than standard asynchronous serial communications. This high-speed capability is required for applications needing rapid data updates or real-time processing, such as streaming audio and video devices, high-speed data acquisition systems, and communication between microcontrollers and peripherals like sensors and memory modules.

Simple Hardware

Receiving data via SPI requires minimal hardware, usually just a simple shift register. This simplicity reduces complexity and cost, making SPI ideal for systems with space and budget constraints. Shift registers facilitate direct data transfer into and out of standard digital registers, easing the integration of SPI into existing digital systems.

Efficient Management of Multiple Peripherals

SPI is highly efficient in handling multiple peripheral devices. Unlike other protocols that need complex bus management or extra signaling for each device, SPI uses the Slave Select (SS) line to manage multiple devices. Each slave device on the SPI bus can be individually addressed through its own SS line, allowing easy expansion to include more peripherals without significant changes to the core communication protocol.

Versatility Across Applications

SPI's versatility is evident in its widespread adoption across various fields. From embedded systems in automotive and industrial applications to consumer electronics and telecommunications, SPI provides a reliable and efficient method of short-distance communication between a central controller and its peripherals. Its ability to operate at different clock frequencies and configurations (such as varying numbers of data lines) further enhances its adaptability to specific project requirements.

The Challenges and Disadvantages of Using SPI

While the Serial Peripheral Interface (SPI) protocol offers numerous advantages, it also has certain limitations that may affect its suitability for specific applications. Considering these disadvantages is significant for designing systems and choosing the right communication protocol.

Disadvantages of SPI

Increased Signal Line Requirements

SPI requires more signal lines than simpler communication methods like I²C or UART. A typical SPI setup needs at least four lines: Clock (CLK), Master Out Slave In (MOSI), Master In Slave Out (MISO), and Slave Select (SS). This need for multiple lines increases wiring complexity, especially in systems with many peripherals. This can lead to issues with signal integrity and physical layout constraints.

Predefined Communication Protocol

SPI requires a well-defined and structured communication protocol before implementation. It does not support ad-hoc or on-the-fly data transmission, limiting flexibility in dynamic systems where communication needs might change after deployment. Each transaction must be explicitly initiated and controlled by the master device, with predefined commands and responses, which can complicate software overhead and system scalability.

Master-Controlled Communication

In an SPI setup, the master device controls all communications, with no native support for direct peer-to-peer communication between slave devices. This centralized control can cause inefficiencies and bottlenecks, especially in complex systems where multiple devices need to interact independently without involving the master.

Management of Multiple SS Lines

Handling multiple Slave Select (SS) lines becomes cumbersome as the number of peripherals increases. Each slave device on the SPI bus requires a unique SS line controlled by the master, complicating the master device's GPIO (General-Purpose Input/Output) configuration and software. Managing these lines effectively, particularly when scaling the system to include more devices, can increase design and operational overhead.

Applications of the Serial Peripheral Interface (SPI) in Technology

SPI's flexibility and high data transfer rates make it ideal for various applications across industries, from sensor networks to automotive electronics. Here’s a closer look at how SPI is used in different sectors:

Sensor Networks

Figure 9: Sensor Networks

SPI is settling in sensor networks, especially in data-intensive environments like weather stations. It enables quick and efficient data exchange between microcontrollers and sensors that monitor temperature, humidity, and atmospheric pressure, allowing for real-time data collection and processing.

 Memory Devices

Figure 10: Memory Devices

In memory storage, SPI is widely used with flash memory chips and EEPROMs. It supports high-speed data reads and writes, enabling embedded systems to perform efficient data storage operations, which is dynamic for applications requiring frequent data updates or retrieval.

 Display Modules

Figure 11: Display Modules

Display technologies such as LCD and OLED panels use SPI to receive data from a microcontroller. This allows dynamic updating of the display content, which is necessary for devices that require user interaction and visual feedback, such as digital clocks, MP3 players, and smart wearables.

 Communication Modules

Figure 12: Communication Modules

SPI enhances communication modules like Wi-Fi, Bluetooth, and RF transceivers. It enables these devices to handle complex data streams required for establishing and maintaining wireless communication links, which are integral to modern interconnected devices.

Motor Control

Figure 13: Motor Control

In motor control applications, SPI communicates with motor driver ICs to regulate parameters like speed and direction. This is significant in robotics, industrial automation, and vehicle systems, where precise motor control directly impacts performance and reliability.

 Audio Interfaces

Figure 14: Audio Interfaces

For digital audio systems, SPI connects microcontrollers to audio codecs or digital-to-analog converters (DACs), ensuring seamless digital audio transmission.

Industrial Control Systems

Figure 15: Industrial Control Systems

SPI supports industrial control systems by linking programmable logic controllers (PLCs) with sensors and actuators. This is dynamic for real-time monitoring and control of industrial processes, enhancing operational efficiency and safety.

 Data Acquisition Systems

Figure 16: Data Acquisition Systems

In data acquisition systems, SPI interfaces with analog-to-digital converters (ADCs) and digital-to-analog converters (DACs) for precise signal conversion. This is useful for applications that require precise monitoring and control of physical processes through digital systems.

 Automotive Electronics

Figure 17: Automotive Electronics

In automotive technologies, SPI enables communication between microcontrollers and various vehicular subsystems, including sensors, actuators, and electronic control units (ECUs). This integration is needed for managing engine functions, diagnostics, and infotainment systems, contributing to the overall safety and functionality of modern vehicles.

Embedded Systems

Figure 18: Embedded Systems

SPI's simplicity and efficiency make it ideal for embedded systems, where space and power efficiency are often constraints. Its ability to interface seamlessly with various peripheral devices supports its widespread use in embedded applications across multiple industries.

Conclusion

To put it briefly, the Serial Peripheral Interface (SPI) protocol stands out as a requisite tool in the electronic and computing industries, driven by its high-speed data transfer capabilities and flexible configuration options. From simple sensor networks to complex memory and communication tasks, SPI's architecture caters to a broad spectrum of applications, making it a preferred choice for designers seeking efficient, scalable, and reliable data communication solutions. While it faces challenges such as increased signal line requirements and the necessity for precise master-controlled communications, the benefits of SPI, including its simplicity in hardware requirements and ability to manage multiple peripherals efficiently, significantly outweigh these limitations. As electronic devices continue to evolve towards greater complexity and higher performance demands, SPI's role is poised to expand, further embedding itself as an unsafe component in the development of innovative technology solutions across industries. The ongoing enhancements in SPI configurations, like the Quad IO mode, underscore the protocol's adaptability and potential to meet future technological challenges, ensuring its continued relevance and utility in advancing digital communication frameworks.






Frequently Asked Questions [FAQ]

1. What are the 4 modes of SPI protocol?

SPI protocol operates in four modes, which are distinguished by their clock polarity (CPOL) and clock phase (CPHA) settings:

Mode 0 (CPOL=0, CPHA=0): The clock idles at low, and data is captured on the clock's rising edge and propagated on the falling edge.

Mode 1 (CPOL=0, CPHA=1): The clock idles at low, but data is captured on the falling edge and propagated on the rising edge.

Mode 2 (CPOL=1, CPHA=0): The clock idles at high, with data captured on the falling edge and propagated on the rising edge.

Mode 3 (CPOL=1, CPHA=1): The clock idles at high, and data is captured on the rising edge and propagated on the falling edge.

2. What is the SPI interface format?

The SPI interface typically consists of four main lines:

Master Out Slave In (MOSI): The line used by the master device to send data to the slave.

Master In Slave Out (MISO): The line over which the slave sends data back to the master.

Clock (SCK): Controlled by the master, this line synchronizes data transmission.

Slave Select (SS): This line, driven by the master, selects the active slave device.

3. What is the difference between serial and SPI?

The primary difference between serial communication (like UART) and SPI is in their configuration and complexity. Serial communication typically uses two wires (transmit and receive) and does not require a clock line as data synchronization is embedded in the data stream. In contrast, SPI is a bus-like structure with a separate clock line (SCK) and distinct data lines for sending and receiving (MOSI and MISO). This makes SPI faster but requires more lines and careful management of slave devices with the SS line.

4. How many wires are used in SPI communication?

SPI communication uses four wires:

MOSI (Master Out Slave In)

MISO (Master In Slave Out)

SCK (Serial Clock)

SS (Slave Select)

5. How to connect SPI devices?

To connect SPI devices, follow these steps:

Connect the master’s MOSI to each slave’s MOSI.

Connect the master’s MISO to each slave’s MISO.

Connect the master’s SCK to each slave’s SCK.

Each slave’s SS pin must be individually connected to a unique SS output on the master.

Ground lines should be common among all devices to ensure signal integrity.

About us

ALLELCO LIMITED

Allelco is an internationally famous one-stop procurement service distributor of hybrid electronic components, committed to providing comprehensive component procurement and supply chain services for the global electronic manufacturing and distribution industries, including global top 500 OEM factories and independent brokers.
Read more

Quick inquiry

Please send an inquiry, we will respond immediately.

Quantity

Popular Posts

HOT Part Number

0 RFQ
Shopping cart (0 Items)
It is empty.
Compare List (0 Items)
It is empty.
Feedback

Your feedback matters! At Allelco, we value the user experience and strive to improve it constantly.
Please share your comments with us via our feedback form, and we'll respond promptly.
Thank you for choosing Allelco.

Subject
E-mail
Comments
Captcha
Drag or click to upload file
Upload File
types: .xls, .xlsx, .doc, .docx, .jpg, .png and .pdf.
Max file size: 10MB