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

18. USB communication

USB communication

USB 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、HAL library function parsing5、Experimental phenomenon

This tutorial demonstrates: using the USB Full Speed Device interface to simulate the serial port to send and receive data (OLED shows USB connection status, LED represents different connection status).

1、software-hardware

  • STM32F103CubeIDE

  • STM32 robot expansion board

    USB: Chip internal peripheral

    LED: Onboard

    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 LED interface is not shown here, you can refer to the schematic diagram by yourself

image-20231106192951002

2.2、Physical connection diagram

image-20231106192438380

OLEDSTM32 board
VCCVCC
SCLSCL
SDASDA
GNDGND
STM32 USBPC
Type-C interfaceUSB interface
The Type-C data cable was used to connect the computer to the STM USB interface

2.3、Principle of control

  • USB:(Universal Serial Bus)
USBCharacteristics
Class of speedLow speed(USB1.0:1.5Mbps)
Full speed(USB1.1:12Mbps)
High speed(USB2.0:480Mbps)
Super high speed(USB3.0:5Gbps、USB3.1:10Gbps)
The development board is in full speed mode
Communication interfaceDevelopment board uses 16-pin Type-C interface (see schematic)
Data transferControl transmission
Interrupt transmission
Bulk transfer
Isochronous transmission
Advantages1. Support hotplugging and PNP (Plug-and-Play);
2. Provide USB peripherals with various speed levels to adapt to different requirements;
3. The port has very flexible expansibility;
4. Provides a single, easy-to-use standard connection type;
5. To meet the requirements of various types of peripheral devices, USB provides four different data transfer types.
  • USB Protocol

The USB bus uses differential signal transmission, where D+ and D- represent the positive and negative data lines of the differential signal respectively;

USB1.1 and USB2.0 use a differential signal level of 3.3V and USB3.0 uses a differential signal level of 5V.

xxxxxxxxxx
USB related knowledge can go to the "USB Encyclopedia of USB Chinese network" for understanding and learning, the following only introduces the common concepts
  • Full speed/low speed USB bus device connection method

High speed/full speed equipment:D+ connected with 1.5k pull-up resistor;

Low speed equipment:D-connected 1.5k pull-up resistor;

  • Bus status
Level typeScope
Difference 1D+>2.8V,D-<0.3V
Difference 0D+<0.3V,D-<0.3V
Single ended 0(SE0)D+<0.3V,D-<0.3V
Single ended 1(SE1)D+>2.8V,D->2.8V
J state:
Low speed
Full speed
High speed

Difference 0
Difference 1
Difference 1
K state
Low speed
Full speed
High speed

Difference 1
Difference 0
Difference 0
Restore statusK state
Packet start(SOF)The USB data bus switches from the idle state to the K state
Packet end(EOP)The SE0 lasts for two basic time units, and the J state lasts for one time unit
  • Encoding of USB signals

The data in USB is encoded by NRZI (none-return to zero inverted), and the different states of D+ and D- lines are defined as J and K.

Encoding/decoding of data (reverse non-return-to-zero code)

 

img

xxxxxxxxxx
Note: The edge that meets 0 changes its state. If it is 1, the original state remains
Before the data is NRZI encoded, a 0 signal is inserted after every six consecutive 1 signals so as not to lose synchronization.
  • USB Protocol layer

Packet is the basic unit of information transmission in USB system. All data is transmitted on the bus after being packaged.

Each packet consists of six parts: synchronization field (SYNC), packet identifier (PID), address field (ADDR), DATA field (including frame number), validation field (CRC), End of Packet (EOP).

USB包

  • Practical Applications

The STM32F103ZET6 has an embedded device controller compatible with full speed USB, which complies with the standard for full speed USB devices (12 MBPS).

The USB-specific 48MHz clock is generated directly from the internal main PLL (the clock source must be a HSE crystal oscillator).

source filefunction
usb_device.cUSB device initialization function
usbd_conf.cUSB protocol parameters, GPIO initialization, and other functions
usbd_cdc_if.cVirtual serial port receiving and sending functions
usbd_desc.cUSB descriptor and USB enumeration processing
xxxxxxxxxx
USB related knowledge does not do too much introduction, you can consult the information on the Internet, mainly introduces the functions used in engineering

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.

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

image-20231107151148486

  • I2C

image-20231107114437253

  • USB

image-20231107114544460

  • Clock Configuration

image-20231107115033161

  • Advanced Settings

image-20231107115141369

  • Generating code

image-20231107115208498

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

function:USB_Init

Function prototypesvoid USB_Init(void)
Functional DescriptionUSB pin initialization
Input parametersNone
Return valueNone
TipsPrevent the need to plug and unplug the USB port again after downloading the program

function:VCP_Status

Function prototypesvoid VCP_Status(void)
Functional DescriptionCheck the USB connection status
Input parametersNone
Return valueNone

function:usb_printf

Function prototypesvoid usb_printf(const char *format, ...)
Functional Descriptionprintf redefined to usb serial port (send function)
Input parametersSpecifies the content and format to output
Return valueNone

function:Deal_Recv

Function prototypesvoid Deal_Recv(void)
Functional DescriptionProcess the received data
Input parametersNone
Return valueNone
TipsThis routine prints the received data and displays the length of the data

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

Function prototypesvoid MX_USB_DEVICE_Init(void)
Functional DescriptionInitialize the USB device
Input parametersNone
Return valueNone

function:MX_USB_DEVICE_Init

Function prototypesUSBD_StatusTypeDef USBD_Init
(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *pdesc, uint8_t id)
Functional DescriptionInitialize the configuration and parameters of the USB device
Input parameters1pdev:Handle to a USB device
Input parameters2pdesc:USB device descriptor information
Input parameters3id:The identifier of the USB device
Return valueUSB status:USBD_OK、USBD_BUSY、USBD_FAIL

function:USB_LP_CAN1_RX0_IRQHandler

Function prototypesvoid USB_LP_CAN1_RX0_IRQHandler(void)
Functional DescriptionHandle USB_LP_CAN1_RX0_IRQn interrupt (USB low priority and CAN1 receive 0 interrupt)
Input parametersNone
Return valueNone

5、Experimental phenomenon

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

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

phenomenon:

The STM32 USB interface is not connected:LED1 off, OLED display "USB disconnect";

Connect the STM32 USB port:LED1 bright, OLED display "USB connect";

Use the serial debugging assistant to connect the virtual serial port of the USB interface. Sending data will return the same data.

If the virtual serial port shows an exception in the Device Manager:Install "STM32 USB virtual serial port Driver" in the "Project Source" folder

image-20231107150741250

Note the Type-C data line interface location for the following experimental phenomena

image-20231107193120520

image-20231107193125813

DMA:I2C
USB analog U disk

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