yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
STM32-BoardCar📖
0. Get started quickly
  • 0.ReadMe
  • 1. Installation Instructions
  • 2. Version configuration
  • 3. Smart car installation video
  • 4. Precautions for use
1. Introduction to STM32 development board
  • 1. Learn about STM32
  • 2. Introduction to STM32 development board
  • 3. Development board pin assignment
  • 4. Introduction to HAL library and LL library
2. Setting up and using the development environment
  • 1. Common development tools
  • 2. STM32CubeMX Install - Use
  • 3. STM32CubeIDE Install - Use
  • 4. Common Driver Installation
  • 5. Program download and simulation
  • 6. Engineering experience and migration
3. Development board basic tutorial
  • 1. RGB searchlight (GPIO)
  • 2. Buzzer control (GPIO)
  • 3. Button control (EXTI)
  • 4. Serial communication (UASRT)
  • 5. Voltage detection (ADC)
  • 6. Internal temperature sensor(ADC)
  • 7. Independent watchdog(IWDG)
  • 8. Window watchdog(WWDG)
  • 9. Basic timer (TIM6)
  • 10. Universal Timer (TIM3)
  • 11. Advanced timers (TIM1)
  • 12. I2C Communication (IIC)
  • 13. Off-chip Flash (SPI)
  • 14. On-chip Flash (Flash)
  • 15. DMA:USART
  • 16. DMA:SPI
  • 17. DMA:I2C
  • 18. USB communication
  • 19. USB analog U disk
  • 20. FreeRTOS
4. Car expansion tutorial
  • 1. Servo control
  • 2. Basic use of ultrasonic steering gear gimbal
  • 3. Motor control
  • 4. OLED display light sensitivity value
  • 5. Infrared sensor
  • 6. Four-way tracking module
  • 7. Infrared remote control
  • 8. Ultrasonic ranging
  • 9. PS2 controller test
  • 10.K230 Vision Module
  • 11.AI voice interaction integration module
5. Robot car tutorials
  • 1. Car line patrol
  • 2. Ultrasonic follow
  • 3. Ultrasonic obstacle avoidance
  • 4. Ultrasonic obstacle avoidance (servo gimbal version)
  • 5. Infrared sensor obstacle avoidance
  • 6. Infrared remote control
  • 7. PS2 handle remote control
  • 8.K230 face tracking on PTZ
  • 9.K230 color tracking
  • 10.K230 Color Line Patrol
  • 11.K230 QR code command
  • 12.K230 machine code tracking
  • 13.K230 road sign indication action (voice)
  • 14.K230 color response (voice)
  • 15.K230 gesture control (voice)
  • 16.K230 Rock-Paper-Scissors Game (Voice)
6. Operation video
  • 1-How to install STM32CubeIDE software
  • 2-How to create Demo project
  • 3-How to download code into STM32 robot car
  • 4-How to open and compile a code file for STM32
  • 5-About IR control and Charge battery
Download
  • Code
  • SCH
  • Software File
  • STM32 Chip DataSheet
  • Installation manual
Download ZIP

Welcome to STM32-BoardCar repository

12. I2C Communication (IIC)

I2C communication

I2C communication1、software-hardware2、Brief principle2.1、Hardware schematic diagram2.2、Physical connection diagram2.3、Principle of control3、Engineering configuration3.1、Notes3.2、Pin configuration4、Main function4.1、User function4.2、LL library function analysis5、Experimental phenomenon

This tutorial demonstrates: displaying content on a 0.91-inch OLED display driven by hardware I2C

1、software-hardware

  • STM32F103CubeIDE

  • STM32 robot expansion board

    I2C: chip internal peripheral

    OLED: External

  • Type-C cable or ST-Link

    Download or simulate the program of the development board

2、Brief principle

2.1、Hardware schematic diagram

The schematic shows only the I2C (I2C1) interface used in the tutorial

image-20231024173041064

2.2、Physical connection diagram

image-20231024172718066

OLEDSTM32 expansion board
VCCVCC
SCLSCL
SDASDA
GNDGND

2.3、Principle of control

  • I2C

I2C (Inter-Integrated Circuit) bus is a serial communication protocol, which is composed of serial data line (SDA) and serial clock line (SCL).

Serial data line(SDA):Use to transfer data

All devices use the same data line and communicate by transmitting data in binary form.

Serial clock line(SCL):Use for synchronous data transfer

xxxxxxxxxx
The clock line generates pulses at a specific frequency to ensure that both the sending and receiving devices can transmit data in the same timing sequence.

Multi-device communication:The e I2C interface uses an addresse-based device identification mechanism to select the specific device to communicate with.

xxxxxxxxxx
Each I2C device has a unique address that identifies the device; The master selects the specific device to communicate with by sending the device address
  • I2C communication

    IIC bus timing diagram

image-20231024180945251

Idle state

SCL high level, SDA high level;

Starting condition

SCL high level, SDA falling edge;

Stop condition

SCL high level, SDA rising edge;

Data transfer

SCL low, SDA rising edge or falling edge;

Signal of reply

When the slave receives the data, it sends a low level to the master to indicate successful reception.

Data validity

When the clock line is high, the data line must be stable; When the clock line is low, the data line is allowed to change.

xxxxxxxxxx
SCL:The high level → is used for the beginning and end of the communication
SCL:The low level → is used to send and terminate data

3、Engineering configuration

Project Configuration: Prompt for configuration options during STM32CubeIDE project configuration

3.1、Notes

Omitted project configuration: New project, chip selection, project configuration, SYS for pin configuration, RCC configuration, clock configuration, and project configuration content

The project configuration part, which is not omitted, is the key point to configure in this tutorial.

xxxxxxxxxx
Please refer to [2. Development environment construction and use: STM32CubeIDE installation and use] to understand how to configure the omitted parts of the project.

3.2、Pin configuration

  • Configure the specified pin function

You can directly select the corresponding pin number in the pin view, and the corresponding option will appear when the mouse is left clicked

11b5f203be1154e731b844bf4b413daa

  • I2C

image-20231024193453890

image-20231024193600557

  • Advanced Settings

image-20231025092348468

  • Generating code

image-20231024193047747

4、Main function

This paper mainly introduces the functional code written by users. Detailed code can be opened by yourself in the project file we provide, and enter the Bsp folder to view the source code.

4.1、User function

function:I2C_Send7bitAddress

Function prototypesvoid I2C_Send7bitAddress(I2C_TypeDef *I2Cx, uint8_t Address, uint8_t I2C_Direction)
Functional DescriptionSend slave device address
Input parameters1I2Cx:I2C handle address
Input parameters2Address:Slave device address
Input parameters3I2C_Direction:Read or write
NoneNone

function:OLED_Init

Function prototypesvoid OLED_Init(void)
Functional DescriptionOLED initialization
Input parametersNone
Return valueNone

function:OLED_Draw_Line

Function prototypesvoid OLED_Draw_Line(char *data, uint8_t line, bool clear, bool refresh)
Functional DescriptionWrite a single character
Input parameters1data:Displaying data
Input parameters2line:Number of rows
Input parameters3clear:Clear or not
Input parameters4refresh:refresh or not
Return valueNone

function:SSD1306_UpdateScreen

Function prototypesvoid SSD1306_UpdateScreen(void)
Functional Descriptionoled screen update display
Input parametersNone
Return valueNone

function:SSD1306_UpdateScreen

Function prototypesvoid SSD1306_Fill(SSD1306_COLOR_t color)
Functional DescriptionThe oled screen cleared, but did not refresh the display
Input parameterscolor:The color to display
Return valueNone

function:SSD1306_UpdateScreen

Function prototypesvoid SSD1306_GotoXY(uint16_t x, uint16_t y)
Functional DescriptionSets the current cursor
Input parameters1x:Horizontal coordinate
Input parameters2y:Vertical coordinate
Return valueNone

function:SSD1306_DrawPixel

Function prototypesvoid SSD1306_DrawPixel(uint16_t x, uint16_t y, SSD1306_COLOR_t color)
Functional DescriptionDrawing a pixel
Input parameters1x:Horizontal coordinate
Input parameters2y:Vertical coordinate
Input parameters3color:The color to display
Return valueNone

4.2、LL library function analysis

LL library functions that have been covered in the previous tutorial will not be covered in the tutorial

xxxxxxxxxx
If you want to find the HAL library and LL library function analysis involved in the entire tutorial, you can view the documents in the folder [8. STM32 Manual: STM32F1_HAL Library and LL Library_User Manual]

function:LL_I2C_Init

Function prototypesuint32_t LL_I2C_Init(I2C_TypeDef *I2Cx, LL_I2C_InitTypeDef *I2C_InitStruct)
Functional DescriptionInitialize the I2C peripheral parameters
Input parameters1I2Cx:I2C handle address
Input parameters2I2C_InitStruct:I2C initialization structure that contains configuration information for specified I2C peripherals
Return valueNone

function:LL_I2C_Enable

Function prototypesvoid LL_I2C_Enable(I2C_TypeDef *I2Cx)
Functional DescriptionEnable the I2C peripheral
Input parametersI2Cx:I2C handle address
Return valueNone

function:LL_I2C_GenerateStartCondition

Function prototypesvoid LL_I2C_GenerateStartCondition(I2C_TypeDef *I2Cx)
Functional DescriptionI2C communication start condition
Input parametersI2Cx:I2C handle address
Return valueNone

function:LL_I2C_TransmitData8

Function prototypesvoid LL_I2C_TransmitData8(I2C_TypeDef *I2Cx, uint8_t Data)
Functional DescriptionSends 8 bits of data to the specified I2C peripheral
Input parameters1I2Cx:I2C handle address
Input parameters2Data:data
Return valueNone

function:LL_I2C_GenerateStopCondition

Function prototypesvoid LL_I2C_GenerateStopCondition(I2C_TypeDef *I2Cx)
Functional DescriptionI2C communication end condition
Input parametersI2Cx:I2C handle address
Return valueNone

5、Experimental phenomenon

After downloading the program successfully, press the RESET button of the development board to observe the OLED display

xxxxxxxxxx
For program download, please refer to [2. Development environment construction and use: program download and simulation]

phenomenon:

OLED: The first line shows oled init success! , the second row shows oled + I2c class! The third row displays oled show success!

e963f372f4e94180756c52bc6e67bbb9

Advanced timers (TIM1)
Off-chip Flash (SPI)

COMPANY

  • About us
  • Team Style
  • Blog

LEARNING & EXPLORATION

  • Tutorials
  • Edge AI hardware
  • Educational robots
  • Embedded intelligent hardware

WHERE TO BUY

  • Yahboom Online Store
  • Amazon
  • Alibaba
  • AliExpress
  • Mercado

TECHNOLOGY SUPPORT

  • Email: support@yahboom.com

BE A DISTRIBUTOR

  • Email: sales@yahboom.com
QR Code

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文