HOME
Shop
  • English
  • 简体中文
HOME
Shop
  • English
  • 简体中文
  • Product Series

    • FPGA+ARM

      • GM-3568JHF

        • 1. Introduction

          • GM-3568JHF Introduction
        • 2. Quick Start

          • 01 Environment Construction
          • 02 Compilation Instructions
          • 03 Burning Guide
          • 04 Debugging Tools
          • 05 Software Update
          • 06 View information
          • 07 Test Command
          • 08 Application Compilation
          • 09 Source code acquisition
        • 3. Peripherals and Interfaces

          • USB
          • Display and touch
          • Ethernet
          • WIFI
          • Bluetooth
          • TF-Card
          • Audio
          • Serial Port
          • CAN
          • RTC
        • 4. Application Development

          • 01 UART read and write case
          • 02 Key detection case
          • 03 LED light flashing case
          • 04 MIPI screen detection case
          • 05 Read USB device information example
          • 06 FAN Detection Case
          • 07 FPGA FSPI Communication Case
          • 08 FPGA DMA read and write case
          • 09 GPS debugging case
          • 10 Ethernet Test Cases
          • 11 RS485 reading and writing examples
          • 12 FPGA IIC read and write examples
          • 13 PN532 NFC card reader case
          • 14 TF card reading and writing case
        • 5. QT Development

          • 01 ARM64 cross compiler environment construction
          • 02 QT program added automatic startup service
        • 6. Others

          • 01 Modification of the root directory file system
          • 02 System auto-start service
    • ShimetaPi

      • M4-R1

        • Introduction

          • M4-R1 Introduction
        • Get started quickly

          • OpenHarmony概述
          • 镜像烧录
          • 开发环境准备
          • Hello World应用以及部署
        • Application Development

          • getting Started

            • 第一章 ArkTS语言简介
            • 第二章 UI组件介绍和实际应用(上)
            • 第三章 UI组件介绍和实际应用(中)
            • 第四章 UI组件介绍和实际应用(下)
          • Advanced

            • 第一章 入门指引
            • 第二章 三方库的引用和使用
            • 第三章 应用编译以及部署
            • 第四章 命令行恢复出厂设置
            • 第五章 系统调试--HDC调试
            • 第六章 APP 稳定性测试
            • 第七章 应用测试
        • Equipment Development

          • 第一章 环境搭建
          • 第二章 下载源码
          • 第三章 编译源码
        • Peripherals and interfaces

          • 树莓派接口
          • GPIO 接口
          • I2C 接口
          • SPI通信
          • PWM控制
          • 串口通讯
          • TF Card
          • 屏幕
          • 触摸
          • 音频
          • RTC
          • Ethernet
          • M.2
          • MINI-PCIE
          • Camera
          • WIFI&BT
          • 树莓派拓展板
        • Frequently asked questions

          • 资源下载
      • M5-R1

        • Introduction

          • Introduction to ShimetaPi M5-R1
    • OpenHarmony

      • SC-3568HA

        • Introduction

          • SC-3568HA Overview
        • Quick Start Guide

          • OpenHarmony Overview
          • Image Flashing
          • Setting Up the Development Environment
          • Hello World Application and Deployment
        • Application Development

          • ArkUI

            • Chapter 1 Introduction to ArkTS Language
            • Chapter 2 Introduction to UI Components and Practical Applications (Part 1)
            • Chapter 3 Introduction to UI Components and Practical Applications (Part 2)
            • Chapter 4 Introduction to UI Components and Practical Applications (Part 3)
          • Expand

            • Chapter 1 Getting Started Guide
            • Chapter 2 Referencing and Using Third-Party Libraries
            • Chapter 3: Application Compilation and Deployment
            • Chapter 4: Command-Line Factory Reset
            • Chapter 5: System Debugging -- HDC (Huawei Device Connector) Debugging
            • Chapter 6 APP Stability Testing
            • Chapter 7 Application Testing
        • Device Development

          • Chapter 1 Environment Setup
          • Chapter 2 Download Source Code
          • Chapter 3 Compiling Source Code
        • Peripheral And Iinterface

          • Raspberry Pi interface
          • GPIO Interface
          • I2C Interface
          • SPI communication
          • PWM (Pulse Width Modulation) control
          • Serial port communication
          • TF Card
          • Display Screen
          • Touch
          • Audio
          • RTC
          • Ethernet
          • M.2
          • MINI-PCIE
          • Camera
          • WIFI&BT
          • Raspberry Pi expansion board
        • Frequently Asked Questions

          • Resource Downloads
      • M-K1HSE

        • Introduction

          • M-K1HSE Introduction
        • Quick Start

          • Development environment construction
          • Source code acquisition
          • Compilation Notes
          • Burning Guide
        • Peripherals and interfaces

          • 01 Audio
          • 02 RS485
          • 03 Display
        • System customization development

          • System transplant
          • System customization
          • Driver Development
          • System Debugging
          • OTA Update
    • EVS-Camera

      • CF-NRS1

        • 1. Introduction

          • Event Camera Technical Documentation
        • 2. Quick Start

          • Host driver and software installation
        • 3. SDK application development

          • API Usage Instructions
      • CF-CRA2

        • Introduction

          • About CF-NRS1
    • AI-model

      • 1684XB-32T

        • Introduction

          • AIBOX-1684XB-32 Introduction
        • Get started quickly

          • First time use
          • Network Configuration
          • Disk usage
          • Memory allocation
          • Fan Strategy
          • Firmware Upgrade
        • Deployment Tutorial

          • Algorithm deployment
          • Deploy Llama3 Example
        • Application Development

          • Sophgo SDK Development
          • Sophon LLM_api_server development
          • Deploy MiniCPM-V-2_6
          • Qwen-2-5-VL Image and Video Recognition DEMO
          • Qwen3-chat-DEMO
          • Qwen3-Qwen Agent-MCP-Demo
          • Qwen3-langchain-AI Agent
      • 1684X-416T

        • Introduction

          • AIBOX-1684X-416 Introduction
        • Demo simple operation guide

          • Simple instructions for using shimeta smart monitoring demo
    • Core-Board

      • C-3568BQ

        • Introduction

          • C-3568BQ Overview
      • C-3588LQ

        • Introduction

          • C-3588LQ Introduction
      • GC-3568JBAF

        • Introduction

          • GC-3568JBAF Introduction
      • C-K1BA

        • Introduction

          • C-K1BA Introduction

12 FPGA IIC read and write examples

1 Case Introduction

Case function description: This case mainly demonstrates how to implement read and write operations on FPGA registers on the ARM side through the IIC communication protocol. The case is based on the standard IIC tools of the Linux system (such as i2cset, i2cget, i2cdetect, etc.), customizes the test program, provides a complete IIC communication test process, and verifies the correctness of IIC communication.

2. Standard IIC tools to read and write FPGA

In IIC communication, FPGA acts as a slave, and the slave address can be viewed through the following command. As shown in the figure, its device address is 0x66.

i2cdetect -r -y -a 0
FPGA_I2C_1

Currently, three register addresses are defined in the code: 0x00, 0x01, and 0x02. 0x02 is a read-only register. For the 0x00 register, you can test whether the read and write data are correct. For example, if you write 1 and read 1, the communication is normal.

Execute the following command to write the value 0X40 into the 0X00 register .

i2cset -r -y -a 0 0x66 0x00 0x40
FPGA_I2C_2

Execute the following command to read the value of register 0x00. You can see that 0x40 is read, which is consistent with the written value.

i2cget -f -y -a 0 0x66 0x00
FPGA_I2C_4

You can also execute the following command to view the values ​​of all registers of the device.

i2cdump -f -y -a 0 0x66
FPGA_I2C_3

Among them, the 0x01 register can control the state of the LED light on the baseboard. You can write a value to the 0X01 register to control the state of the LED light.

#点亮
i2cset -f -y -a 0 0x66 0x01 0x01 
#熄灭
i2cset -f -y -a 0 0x66 0x01 0x01

3 Case operation process

This case is based on the standard IIC tool of the Linux system, and optimizes the instruction design to make it more intuitive and user-friendly. Users can modify the source program according to their needs.

Open the terminal and copy the executable program smdt_fpga_i2c in the bin directory of this case (05-Development Materials\Software Development Materials\linux_demo\smdt_fpga_i2c_demo\bin) to the development board file system (the source code can be viewed in the src path).

#Modify the display level of Linux kernel logs, setting the kernel's logging level to show only emergency or higher-level messages.
echo 1 4 1 7 > /proc/sys/kernel/printk

Execute the following command in the terminal and switch to the directory where the smdt_fpga_i2c executable program is located

#切换到 smdt_fpga_i2c 可执行程序所在目录
cd ‘the file's directory’

#查看 smdt_fpga_i2c 是否在该目录下
ls

If the executable file smdt_fpga_i2c is in the current directory, modify the permissions of the executable file

#修改文件权限
chmod 777 smdt_fpga_i2c 

#查询是否修改成功
ls -ld smdt_fpga_i2c

After confirming that the file modification permission is successful, execute ./smdt_fpga_i2c -h to view the help information of the program.


./smdt_fpga_i2c  -h

The execution result is as follows:

FPGA_I2C_5

Execute the following commands to read and write device register 0X00.

#写操作
 ./smdt_fpga_i2c -write 0x00 0x11
 #读操作
  ./smdt_fpga_i2c -read 0x00
FPGA_I2C_7

Execute the following command to write to the device register 0X01 to control the LED on the baseboard.

#点亮
  ./smdt_fpga_i2c -led ON
  #熄灭
  ./smdt_fpga_i2c -led OFF
FPGA_I2C_6
Edit this page on GitHub
Last Updated:
Contributors: zsl, zwhuang
Prev
11 RS485 reading and writing examples
Next
13 PN532 NFC card reader case