# IS4320: I2C Modbus RTU Master Chip

The IS4320 chip handles the entire Modbus RTU Master stack and is accessible via I2C, making it ideal for any microcontroller.

- **Seller:** [INACKS](https://lectronz.com/stores/inacks), Terrassa, Barcelona, Spain
- **Price:** €1.99 (EUR, before shipping and taxes)
- **Availability:** In stock
- **Categories:** Components, I2C, CNC
- **Product page:** https://lectronz.com/products/is4320-i2c-modbus-rtu-master-chip

## Images

![IS4320: I2C Modbus RTU Master Chip](https://lectronz-images.b-cdn.net/lectronz/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzYyNjQsInB1ciI6ImJsb2JfaWQifX0=--e32513cbe440a5de3bac91086ee337fea40b44c0/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOls5NjAsNjQwXSwic2F2ZXIiOnsic3RyaXAiOnRydWV9fSwicHVyIjoidmFyaWF0aW9uIn19--605f1da017bcbb03ce31845cd0e81d97e3b3c574/Inacks%20IS4320%20I2C%20Modbus%20RTU%20Master%20Integrated%20Circuit.png)
![IS4320: I2C Modbus RTU Master Chip](https://lectronz-images.b-cdn.net/lectronz/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzU5MzAsInB1ciI6ImJsb2JfaWQifX0=--dc96fee11a0df3ebb5fa2f7e2671788829649888/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOls5NjAsNjQwXSwic2F2ZXIiOnsic3RyaXAiOnRydWV9fSwicHVyIjoidmFyaWF0aW9uIn19--605f1da017bcbb03ce31845cd0e81d97e3b3c574/Inacks%20IS4320%20I2C%20Modbus%20RTU%20Master%20Chip%20Pinout.png)
![IS4320: I2C Modbus RTU Master Chip](https://lectronz-images.b-cdn.net/lectronz/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzU5MzQsInB1ciI6ImJsb2JfaWQifX0=--d40eac4c443daae278c5e24bb166291e82b06022/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOls5NjAsNjQwXSwic2F2ZXIiOnsic3RyaXAiOnRydWV9fSwicHVyIjoidmFyaWF0aW9uIn19--605f1da017bcbb03ce31845cd0e81d97e3b3c574/Inacks%20IS4320%20I2C%20Modbus%20RTU%20Master%20Chip%20Diagram.png)
![IS4320: I2C Modbus RTU Master Chip](https://lectronz-images.b-cdn.net/lectronz/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzU5MzgsInB1ciI6ImJsb2JfaWQifX0=--50254535715c811f3a9f95cb56c54fca5d25c484/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOls5NjAsNjQwXSwic2F2ZXIiOnsic3RyaXAiOnRydWV9fSwicHVyIjoidmFyaWF0aW9uIn19--605f1da017bcbb03ce31845cd0e81d97e3b3c574/Inacks%20IS4320%20I2C%20Modbus%20RTU%20Master%20Chip%20Memory%20Map.png)
![IS4320: I2C Modbus RTU Master Chip](https://lectronz-images.b-cdn.net/lectronz/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzYyNzEsInB1ciI6ImJsb2JfaWQifX0=--b0bec6f09d06721668897e5e36cb8b85bed8eacf/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOls5NjAsNjQwXSwic2F2ZXIiOnsic3RyaXAiOnRydWV9fSwicHVyIjoidmFyaWF0aW9uIn19--605f1da017bcbb03ce31845cd0e81d97e3b3c574/Inacks%20IS4320%20I2C%20Modbus%20RTU%20Master%20Chip%20Bus%20Topology.png)
![IS4320: I2C Modbus RTU Master Chip](https://lectronz-images.b-cdn.net/lectronz/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzYyNzUsInB1ciI6ImJsb2JfaWQifX0=--9a6276ed2579a4faa02e0892c82587845e400755/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOls5NjAsNjQwXSwic2F2ZXIiOnsic3RyaXAiOnRydWV9fSwicHVyIjoidmFyaWF0aW9uIn19--605f1da017bcbb03ce31845cd0e81d97e3b3c574/Inacks%20IS4320%20I2C%20Modbus%20RTU%20Master%20Chip%20Cable%20Routing.png)
![IS4320: I2C Modbus RTU Master Chip](https://lectronz-images.b-cdn.net/lectronz/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzYyNzksInB1ciI6ImJsb2JfaWQifX0=--d78090b49f4a98766002544e6d5a218a0f8b07a0/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOls5NjAsNjQwXSwic2F2ZXIiOnsic3RyaXAiOnRydWV9fSwicHVyIjoidmFyaWF0aW9uIn19--605f1da017bcbb03ce31845cd0e81d97e3b3c574/Inacks%20IS4320%20I2C%20Modbus%20RTU%20Master%20Chip%20Schematic%20RS485.png)
![IS4320: I2C Modbus RTU Master Chip](https://lectronz-images.b-cdn.net/lectronz/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzYyODgsInB1ciI6ImJsb2JfaWQifX0=--143d805f4e71f8dc4e6be7e49e639ff2ccc74caa/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fbGltaXQiOls5NjAsNjQwXSwic2F2ZXIiOnsic3RyaXAiOnRydWV9fSwicHVyIjoidmFyaWF0aW9uIn19--605f1da017bcbb03ce31845cd0e81d97e3b3c574/Inacks%20IS4320%20I2C%20Modbus%20RTU%20Master%20Chip%20Intenral%20Blocks.png)
![IS4320: I2C Modbus RTU Master Chip](https://lectronz-images.b-cdn.net/lectronz/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzYyODMsInB1ciI6ImJsb2JfaWQifX0=--a1481ce96b3e2384e917b0decca28b3fc9dbf5b7/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJQTkciLCJyZXNpemVfdG9fbGltaXQiOls5NjAsNjQwXSwic2F2ZXIiOnsic3RyaXAiOnRydWV9fSwicHVyIjoidmFyaWF0aW9uIn19--4157f0fb908a7cf53a9fb69e24400c01800a5257/IS4320%20Picture.PNG)

## Description

## Description 
The **IS4320** is an integrated circuit with a **built-in Modbus RTU Master Stack**, providing a complete standalone Modbus Master solution with an **I2C-Serial interface** for easy integration into customer applications.

The IS4320 enables any I2C Master device to communicate with Modbus RTU slave devices, allowing data to be read using **Function Codes 1, 2, 3, and 4**, or written using **Function Codes 15 and 16**. Its simplicity of use through the I2C-Serial Interface drastically reduces firmware development time while providing a robust Modbus solution.

The IS4320 features two communication buses: a TTL UART for Modbus and an I2C-Serial Interface for the microcontroller. The Modbus UART can connect to various transceivers such as RS485, RS422, RS232, fiber, or radio, with RS485 being the most common. The I2C-Serial Interface connects to any I2C Master device, including microcontrollers, microprocessors, single-board computers like the Raspberry Pi, or development boards such as Arduino.

The **I2C interface supports**:
- **100 kHz**
- **400 kHz**
- **1 MHz**. 

The **Modbus interface supports**:
- **1200**
- **2400**
- **9600**
- **19200**
- **57600**
- **115200 bps**

The IS4320 operates at 3.3V, and its Modbus UART and I2C pins are 5V tolerant, allowing the chip to connect with a wide variety of RS485 transceivers and microcontrollers.

It is available in Industrial (-40ºC to +85ºC) and Extended Temperature Range (-40º to +125ºC).

The **supported Function Codes** are:

- **FC 1** Read Coils
- **FC 2** Read Discrete Inputs
- **FC 3** Read Holding Registers
- **FC 4** Read Input Registers
- **FC 15** Write Multiple Coils
- **FC 16** Write Multiple Holding Registers

The IS4320 offers a **ready-to-use Modbus stack solution** that helps reduce development time and **speed up your time-to-market**, while fully complying with strict T1.5 and T3.5 protocol timing requirements.

---

## Examples and Documentation

### Download Datasheet

- 📄 [**IS4320 Datasheet**](https://inacks.com/is4320_datasheet_isdoc141)

### Firmware Examples

- 👉 [IS4320 Modbus Sensor for Arduino](https://github.com/inacks/ISXMPL4320ex5) 

- 👉 [IS4320 Modbus Device for Nucleo-STM32](https://github.com/inacks/ISXMPL4320ex6)

- 👉 [IS4320 Modbus with Python for Raspberry Pi](https://github.com/inacks/ISXMPL4320ex4)

### Hardware Examples

- 👉 [IS4320 with RS485](https://github.com/inacks/ISXMPL4320ex1/blob/main/ISXMPL4320ex1-IS4320%20RS485%20Schematic%20Design%20Exemple.pdf)

- 👉 [IS4320 with ISOLATED RS485](https://github.com/inacks/ISXMPL4320ex2/blob/main/ISXMPL4320ex2-IS4320%20ISOLATED%20RS485%20Schematic%20Design%20Exemple.pdf)

- 👉 [IS4320 with RS232](https://github.com/inacks/ISXMPL4320ex3/blob/main/ISXMPL4320ex3-IS4320%20RS232%20Schematic%20Design%20Exemple.pdf)

### Others

- Download a Modbus RTU Slave Software: [pyModSlave](https://sourceforge.net/projects/pymodslave/)

---

## How Does It Work? 

Essentially, you write the desired Modbus request into the IS4320 Memory Map and it will be sent to the Slave, then read back the Memory Map to get the received response.

The IS4320 operates very simply via I2C in three steps. All operations are performed using I2C Word Write and I2C Word Read operations. These commands are the same ones typically used to access I2C EEPROMs and are already implemented in most microcontroller IDEs, such as STM32CubeIDE or Arduino.

- **1. Configure the IS4320 Modbus communications**:
Set the baud rate, parity, and stop bits to match the Modbus Slave device configuration by writing to the following registers: *CFGMBBDR*, *CFG_MBPAR*, and *CFG_MBSTP*.

- **2. Configure and execute the Modbus Request**:
Set the Slave ID, the Function Code, the Starting Address for the read or write operation, and the Quantity of registers. If performing a write operation, also set the data to be written. Finally, trigger the Request.
This is done using the following registers: *REQ_SLAVE*, *REQ_FC*, *REQ_STARTING*, *REQ_QTY* and *REQ_EXECUTE*. Use also *REQ_DATAx* for a write operation.

- **3. Read the Modbus Response**:
After executing the Request, you can check the result of the operation by reading the *RES_STATUS* register. If you Requested to read some data, retrieve also the data by reading the *RES_DATAx* registers.

---

## Default Chip Settings 

**Default Modbus Settings**:

- Modbus Baud Rate: `19200 bps`

- Modbus Parity: `Even`

- Modbus Stop Bits: `1`

**Default I2C Settings**:

- I2C Slave Address: `0x14` 

- I2C Speed: Depends on pin 7: `100 kHz` (pin 7 to GND), `400 kHz` (pin 7 to 3.3V/2), `1 MHz` (pin 7 to 3.3V)

---

## Advantages and Features 

### Firmware Advantages 

- 🛠️ Forget about Modbus RTU protocol handling: No need to deal with frame parsing, T1.5 and T3.5 timings, CRC or UART and Timer interrupts

- ❌ No libraries needed: Just use standard I2C functions

- ⚡ Perfect for heavily loaded CPUs or ISR-heavy microcontrollers

- 📝 Arduino, STM32, and Raspberry Pi examples available

- 🧪 Evaluation board available to make some tests in Arduino/Nucleo and Raspberry Pi form factor

- ⏱️ Save firmware engineering time

### Hardware Advantages 
- 🔌 Save pins on your microcontroller: No need to sacrifice any UART pins as it uses I2C, a shared interface

- 🧘 Reduce the CPU load of your microcontroller

- 💾 Reduce Flash and RAM memory footprint

- ⚙️ Save microcontroller resources (UART, Timers, etc.)

- 🗂️ Schematic design examples available for RS485, RS485-ISOLATED, RS232

### Compatibility Advantages ##
- 🔄 Great for non-deterministic systems (like Raspberry Pi and single-board computers)

- 💡 Compatible with 5V I2C serial interfaces

- 🔋 Compatible with 5V RS485 transceivers

- 🏎️ Supports I2C speeds: 100kHz, 400kHz, and 1MHz

- 🖥️ Ideal for FPGA designs

### Production Advantages ##
- 🧷 Easy-to-solder SO8N package

- 📦 Reels available for pick-and-place machines

### Commercial Advantages ##

- 🚀 Speeds up development

- ⚙️ Faster prototyping

- 🏁 Shorter time-to-market

---

## Need an Evaluation Board? 

- For **Arduino** and **STM32 Nucleo** Boards: [**Kappa4320Ard**](https://inacks.com/kappa4320ard/) is an **Arduino-form-factor** evaluation board that lets you prototype and experiment with the Modbus chip IS4320 over **RS485**.

- For **Raspberry Pi** and other **single board computers**: The [**Kappa4320Rasp**](https://inacks.com/kappa4320rasp/) is a **Raspberry Pi-form-factor** evaluation board that lets you prototype and experiment with the Modbus chip IS4320 over **RS485**. The IS4320 time deterministic stack allows a correct management of the T15 and T35 critical timings, that's specially relevant on non-deterministic systems like computers. 

For more information about the Evaluation Board you can also check: [www.inacks.com/is4320](https://www.inacks.com/is4320)

---

## Pick'n'Place

📦 **Reels available** at **lower prices** for high-volume orders. Contact us. 

---

## Questions?

💬 Contact us anytime for support.

[www.inacks.com](http://www.inacks.com)

---

*This company and the products provided herein are developed independently and are not affiliated with, endorsed by, or associated with any official protocol or standardization entity. All trademarks, names, and references to specific protocols remain the property of their respective owners.*

## Shipping policy

We ship all products from Barcelona via UPS within 1–2 business days. A tracking number is provided. Transit time is typically less than one week worldwide (excluding handling time).
