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

17. DMA:I2C

DMA:I2C

DMA:I2C1、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、HAL library function parsing5、Experimental phenomenon

This tutorial demonstrates I2C (I2C1) communication via DMA

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 board
VCCVCC
SCLSCL
SDASDA
GNDGND

2.3、Principle of control

  • I2C

The use of I2C1 peripheral interface and 0.91 inch OLED display for communication, I2C related knowledge will not be introduced, you can see before [Chapter 3:3.12 I2C communication]

  • DMA(Direct Memory Access)

STM32F103ZET6 has a total of two DMA controllers, DMA1 has 7 channels, DMA2 has 5 channels;

It is used for high-speed data transfer between peripheral equipment and memory and between memory and memory.

DMA features

The initialization and start of DMA are completed by the CPU, and the transfer process is executed by the DMA controller without the participation of the CPU, so that the CPU resources are saved to do other operations.

DMA1 requests for each channel

image-20231021232455032

DMA2 requests for each channel

image-20231021232601769

DMA1 channel 6 is used in this tutorial

3、Engineering configuration

Project Configuration: Prompts for configuration options in the STM32CubeIDE project configuration process

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.

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

913610909c40a68394480cda8bf66040

  • I2C

image-20231024193453890

image-20231024193600557

image-20231025094116382

image-20231025094238581

  • Advanced Settings

image-20231025094309343

  • 生成代码

image-20231024193047747

4、Main function

This section 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

Functions that have been covered in this tutorial will not be covered anymore.Feel free to refer to the previous tutorials

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 content or ot
Input parameters4refresh:refreash or not
Return valueNone

4.2、HAL library function parsing

The HAL library functions that were covered in the previous tutorial will not be covered

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:HAL_I2C_Init

Function prototypesHAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c)
Functional DescriptionInitialize the I2C peripheral parameters
Input parametershi2c:I2C handle address
Return valueHAL status value:HAL_OK、HAL_ERROR、HAL_BUSY、HAL_TIMEOUT

function:HAL_I2C_MspInit

Function prototypesvoid HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
Functional DescriptionInitialize the clock, GPIO and NVIC of the I2C peripheral
Input parametersi2cHandle:I2C handle address
Return valueNone

function:HAL_I2C_MspDeInit

Function prototypesvoid HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle)
Functional DescriptionUninitialize the clock, GPIO, and NVIC of the I2C peripheral
Input parametersi2cHandle:I2C handle address
Return valueNone

function:HAL_I2C_Mem_Write

Function prototypesHAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c,
uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize,
uint8_t *pData, uint16_t Size, uint32_t Timeout)
Functional DescriptionWrite data to a specific memory address of the I2C device
Input parameters1hi2c:I2C handle address
Input parameters2DevAddress:Target device address
Input parameters3MemAddress:Device memory address
Input parameters4MemAddSize:The size of the device memory address
Input parameters5pData:Data head address
Input parameters6Size:Number of bytes of data
Input parameters7Timeout:Timeout time
Return valueHAL status value:HAL_OK、HAL_ERROR、HAL_BUSY、HAL_TIMEOUT

function:HAL_DMA_Init

Function prototypesHAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma)
Functional DescriptionInitialize the DMA controller
Input parametershdma:DMA handle address
Return valueHAL status value:HAL_OK、HAL_ERROR、HAL_BUSY、HAL_TIMEOUT

function:HAL_I2C_Mem_Write_DMA

Function prototypesHAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c,
uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize,
uint8_t *pData, uint16_t Size)
Functional DescriptionData is written to the internal registers of the I2C device by DMA
Input parameters1hi2c:I2C handle address
Input parameters2DevAddress:Target device address
Input parameters3MemAddress:Device memory address
Input parameters4MemAddSize:The size of the device memory address
Input parameters5pData:Data head address
Input parameters6Size:Number of bytes of data
Return valueHAL status value:HAL_OK、HAL_ERROR、HAL_BUSY、HAL_TIMEOUT

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 line shows yahboom! , the third line shows This is a DMA+I2c!

image-20231103101852199

DMA:SPI
USB communication

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/中文