您是否曾经想开发自己的设备,可以使用USB连接到计算机?您是否熟悉使用USB <-> UART适配器,但想将您的USB知识和理解带到更高的极限?如果是,那么此课程绝对适合您!
在本课程中应使您免于尝试从任何其他在线来源学习或了解USB时可能遇到的挫败感。USB大多是一个谜,也是一个非常复杂的协议,大多数工程师试图避免使用USB,或者至少尝试将其转换为其他更简单的协议。但是,完成本课程后,您将可以成为一位自信的本地USB工程师,并且无需使用任何库就可以与我一起开发您的第一个裸机USB设备,这将使您完全控制USB的功能。即使您在职业生涯中希望使用USB库,也可以通过本课程全面了解幕后情况,并使您能够开发和微调所需的USB设备。
类型:在线学习| MP4 | 视频:h264,1280×720 | 音频:aac,48000 Hz
语言:英语| VTT | 大小:7.20 GB | 时长:14h 37m、
您将学到的知识
在不使用任何第三方库或代码生成器的情况下,为USB 2.0人机接口设备(HID)编写裸机固件。
实现USB设备驱动程序和USB 2.0协议框架。
从零开始编写功能齐全的USB鼠标。
了解通用USB描述符和特定于人机接口设备(HID)类的描述符。
处理本机USB(无需进行任何UART转换)
使用基于ARM Cortex-M4的微控制器(STM32F4xx),这是世界上最发达,最著名的MCU之一。
使用Wireshark和Linux SysLog调试USB通信。
阅读《 ARM Cortex-M4参考手册》的不同部分,并有效地提取重要信息。
了解USB 2.0协议在全速模式下如何工作。
了解USB端点,管道,传输类型,数据包,事务,帧,电源,拓扑等。
了解USB的基本机械和电气规格(连接器,电缆,速度枚举电阻器等等)。
了解开发通用串行总线(USB)的历史和动机。
了解如何使用单线输出(SWO)将日志发送到调试主机。
通过使用ARM CMSIS,可以提高工作效率和代码可移植性。
使用Doxygen语法记录您的代码。
What you’ll learn
Write a bare-metal firmware for USB 2.0 human interface devices (HID) without using any third-party libraries or code generators.
Implement USB device driver and USB 2.0 protocol framework.
Program a fully functional USB mouse from zero.
Understand the generic USB descriptors and the descriptors specific to human interface device (HID) class.
Deal with native USB (WITHOUT any conversion to UART)
Use ARM Cortex-M4 based microcontroller (STM32F4xx), one of the most developed and famous MCU in the world.
Debug USB communication using Wireshark and Linux SysLog.
Read different parts of ARM Cortex-M4 reference manual and extract the important information efficiently.
Understanding how USB 2.0 protocol works in full speed mode.
Understand USB endpoints, pipes, transfer types, packets, transactions, frames, power supply, topology, and many more.
Learn the basic mechanical and electrical specifications of the USB (connectors, cables, speed enumeration resistors, and many more).
Know the history and motivation behind developing the universal serial bus (USB).
Learn using Single Wire Output (SWO) to send logs to the debugging host.
Increase your productivity and code portability by using ARM CMSIS.
Document your code using Doxygen syntax.
Requirements
Basic knowledge of C programming language (recommended).
Basic knowledge of designing embedded systems.
Any STM32F4 Microcontroller (ARM Coretx-M4 based) on Discovery or Nucleo board to apply the knowledge.
Description
Have you ever wanted to develop your own device that can be connected to a computer using USB? Are you familiar with using USB <-> UART adapters but want to take your USB knowledge and understanding to the next ultimate level? If yes, then this course is absolutely for you!
I made the whole content of slides and code by myself after a lot of preparation and fine-tuning to give you the best experience you can find today online to learn and understand USB protocol and framework in theory and in practice.
Your journey with me in this course should save you from any frustration that could happen when you try to learn or understand USB from any other online source. USB is for most a mystery and a very complex protocol, and most engineers try to avoid it or at least try to convert it to other simpler protocols. However, after taking this course, you will be able to be a confident native USB engineer, and you will be able to develop your first bare-metal USB device with me without using any library, which will give you full control over the powers of USB. Even if you want in your career to use a USB library, taking this course will give you a full understanding of what is going on behind the scenes, and will allow you to be able to develop and fine-tune and USB device you want, because, after the end of this course, I would expect from you to have a full understanding of the concept of USB and how it works.
In this course, we will:
– Start with some theoretical information about USB.
– Understand the essential details of USB protocol.
– Take our time to understand how to configure the clock of any embedded system correctly.
– Implement a bare-metal USB firmware for ARM Cortex M4 based microcontroller (STM32F4xx family).
– Implement a bare-metal USB framework.
– Develop our own USB HID mouse from zero to fully functional!
Of course, the source code of the project we are going to develop together in this course will be available for you to download. You may use it as a template (fully or partially) for your projects in the future.
This course is in its early stages and some new additional content will be added or enhanced if necessary frequently. Nevertheless, the current content is full and sufficient to get a fully functional USB human interface device.
Happy engineering! See you inside the course!
Who this course is for:
Anyone who wants to understand how the complex USB systems work behind the scenes.
Embedded engineers who want to develop USB devices.
Engineers who want to enrich their knowledge in embedded systems in general.
Engineers who want to write modular and maintainable firmware.