硬件电路设计学习

设计需求:正点原子407芯片+USB接口。

1、USB基础知识

1.1USB发展历程

1.2 USB接口类型

USB的接口类型,根据接口形状不同,主要可以分为三大类:

1、TYPE类型

2、Mini类型

3、Micro类型

其中每一种大类中,又都可以分为两类A类和B类(如Type A、Type B)

TYPE类型

Micro系列

1.3 USB1.x/2.0接口的引脚定义及颜色

以嘉立创商城的商品编号为C456015,商品名称为AF 180°ZJB13.7的TYPE2.0为例。

 

Type-A/B接口引脚定义
Type-A/B接口引脚定义

bilibili:第199讲 提高篇-USB(下)_哔哩哔哩_bilibili

1.4 硬件设计思路

USB+磁珠的设计:满足EMC的需求,在电源端和地各连接一个磁珠,减少设备的噪声和USB电缆对主机的干扰

1、能有效地抑制USB线中的高频噪声和干扰信号,从而提高信号的清晰度和传输效率。它就像是一个小小的“过滤器”,能让信号传输更加纯净、稳定。

2、磁珠主要作用是抑制高频干扰,如果电路中两只磁珠的谐振频率为100MHz。那么在USB2.0的480Mbs通信时,这两只磁珠已经不再适用了。磁珠不是加了一定好,磁珠要根据抑制的频率选择,其谐振频率一定要高于至少5倍工作频率,在这个基础上再看阻抗等参数。

3、USB信号线需要共模电感/共模电容来滤除共模噪声,磁珠对共模噪声效果不大。

1.5 CH340G为USB转不同通讯的串口芯片

1.5.1 USB转UART

1.5.2 USB转RS232

        MAX232是一种把电脑的串行口RS232信号电平(-10 ,+10v)转换为单片机所用到的TTL信号点平(0 ,+5)的芯片

 1.5.3 USB转RS485

【往期直播】第三期 第2次直播 串口CH340G模块电路设计 完成实物焊接调试 51单片机下载程序调试 微信小程序蓝牙通信调试_哔哩哔哩_bilibili

1.5.4 USB电路设计(TTL)

GYJ-0016_USB-TTL通信模组 一款非常简单的USB转UART接口电路设计支持单片机下载程序及串口通讯 最高支持115200波特率_哔哩哔哩_bilibili

DTR#和RTS#是串行通信中的控制信号,用于管理和协调数据传输。

DTR#(Data Terminal Ready)是输出信号,表示数据终端(如计算机或单片机)已经准备好进行通信。在CH340G中,DTR#是输出引脚,通常连接到对端的DSR(Data Set Ready)输入引脚。在RS232标准中,低电平表示设备已上电并处于工作状态。

RTS#(Request to Send)是终端机的输出引脚,而CTS#(Clear to Send)是终端机的输入引脚。RTS#和CTS#用于实现硬件握手,以防止慢速终端接收数据时接收缓冲区溢出。当RTS#有效(高电平)时,表示本设备有数据要发送,并连接到对端的CTS#。当对端设备处理完缓冲区中的数据后,会在其RTS#引脚上发出有效信号,发送到本机的CTS#,本机检测到后开始发送数据。如果对端缓冲区已满,对端的RTS#引脚将变为无效(低电平),本机检测到后会暂停数据发送,直到对端RTS#再次有效。

1.5.5 电路设计

1.5.5.1 RS232电路设计(一)

VCC提供3.3V或5V供电。

四个电容产生+10V和-10V的电源,为RS232提供串口高低电平的需要。

1.5.5.2 RS232电路设计(二)

1.5.6.1 RS485电路设计(一)

发送数据过程
发送数据,用的是单片机的TX引脚,也就是说,在TX引脚上表现数据。要发送数据0x32,写成二进制就是0x00110010,TXD引脚上就会依次的用高低电平体现1和0。

当TX发送0时,三极管不导通,DE接高电平,进入发送模式,485芯片会把DI上的电平反应到AB引脚上输出,因为DI已经接地,所以AB引脚会传输0。所以,当TXD发送0时,AB引脚发送0。

当TX发送1时,三极管导通,RE接低电平,进入接收模式,485芯片的AB引脚进入高阻状态,因为R3把A拉高,R2把B拉低,所以,AB传输的是1。所以,当TXD发送1时,AB引脚发送1。

一句话:TXD发1,AB就发1;TXD发0,AB就发0。

接收数据过程
接收数据,用的是单片机引脚RX,在RXD引脚上表现数据。在接收数据的过程中,TX引脚是一直保持高电平的,当TXD是高电平时,RE是低电平,正好变成了接收状态,然后485芯片的RO引脚(也就是接RX的引脚)就会接收AB传输过来的数据。

1.5.6.2 RS485电路设计(二)

终于讲透了,史上最详细的RS485自动收发电路你一定要掌握-优快云博客文章浏览阅读10w+次,点赞288次,收藏2k次。摘要:关于485通讯大家肯定不陌生,那么你会设计一个485电路而且能自带收发功能的吗?或者还是直接随便找一个电路甚至不管其中的原理就用上了。485通信一般离不了单片机控制,所以一般单片机尤其是STM32单片机之类的开发板上面都有RS485通信模块,因为485通讯只需要你的MCU有串口就可以了。下面再某宝上找了几款STM32开发板上面关于485通信模块的电路图,发现有几家竟然电路图一模一样,而且画法也一模一样。原子哥硬石普中洋桃安富莱野火可以发现,485通讯模块大家普遍用的只有_485自动收发电路https://blog.youkuaiyun.com/qq_39400113/article/details/122387133?ops_request_misc=%257B%2522request%255Fid%2522%253A%25220ab5dc580faf623bd2f51c5019028f89%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=0ab5dc580faf623bd2f51c5019028f89&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-122387133-null-null.142^v101^pc_search_result_base1&utm_term=RS485%E7%94%B5%E8%B7%AF%E8%AE%BE%E8%AE%A1&spm=1018.2226.3001.4187https://blog.youkuaiyun.com/qq_39400113/article/details/122387133?ops_request_misc=%257B%2522request%255Fid%2522%253A%25220ab5dc580faf623bd2f51c5019028f89%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=0ab5dc580faf623bd2f51c5019028f89&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-122387133-null-null.142^v101^pc_search_result_base1&utm_term=RS485%E7%94%B5%E8%B7%AF%E8%AE%BE%E8%AE%A1&spm=1018.2226.3001.4187https://blog.youkuaiyun.com/qq_39400113/article/details/122387133?ops_request_misc=%257B%2522request%255Fid%2522%253A%25220ab5dc580faf623bd2f51c5019028f89%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=0ab5dc580faf623bd2f51c5019028f89&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-122387133-null-null.142^v101^pc_search_result_base1&utm_term=RS485%E7%94%B5%E8%B7%AF%E8%AE%BE%E8%AE%A1&spm=1018.2226.3001.4187https://blog.youkuaiyun.com/qq_39400113/article/details/122387133?ops_request_misc=%257B%2522request%255Fid%2522%253A%25220ab5dc580faf623bd2f51c5019028f89%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=0ab5dc580faf623bd2f51c5019028f89&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-122387133-null-null.142^v101^pc_search_result_base1&utm_term=RS485%E7%94%B5%E8%B7%AF%E8%AE%BE%E8%AE%A1&spm=1018.2226.3001.4187

1.6计算机和MCU通信的方法

1.只有串口接口的台式机(很老)
        交叉串口线>>>MAX232芯片>>>MCU(单片机)
2.既有串口接口又有USB接口的电脑(台式机)
        (1)电脑串口接口>>>交叉串口线>>>MAX232芯片>>>MCU(单片机)
        (2)电脑USB接口>>>USB转串口线>>>MAX232芯片>>>MCU(单片机)
        (3)电脑USB接口>>>USB2.0数据线>>>PL2303或CH340>>>MCU(单片机)
3.只有USB接口的电脑(笔记本)
        (1)电脑USB接口>>>USB转串口线>>>MAX232芯片>>>MCU(单片机)
        (2)电脑USB接口>>>USB2.0数据线>>>PL2303或CH340>>>MCU(单片机)

1.7 407芯片I/0口的使用

立创商城找编号: C5269943的STM32F407VET6TR

确定需要USART的RX和TX口进行通讯。比如说,STM32的串口1的引脚对应的I/O位PA9、PA10。而PA9、PA10默认的功能都是GPIO,所以说当PA9、PA10引脚作为串口1使用的时候就是端口复用。

要将 I/O 配制成所需功能,请按照以下步骤操作:
1. 系统功能
将 I/O 连接到 AF0,然后根据所用功能进行配置:
— JTAG/SWD:在各器件复位后,会将这些引脚指定为专用引脚,可供片上调试模块立即使用(不受 GPIO 控制器控制)。
— RTC_REFIN:此引脚应配置为输入浮空模式。
— MCO1 和 MCO2:这些引脚必须配置为复用功能模式。
注意: 可禁止部分或全部 JTAG/SWD 引脚,以释放相关联的引脚供 GPIO 使用。
2. GPIO
在 GPIOx_MODER 寄存器中将所需 I/O 配置为输出或输入。
3. 外设复用功能
对于 ADC 和 DAC,在 GPIOx_MODER 寄存器中将所需 I/O 配置为模拟通道。
对于其它外设:
— 在 GPIOx_MODER 寄存器中将所需 I/O 配置为复用功能
— 通过 GPIOx_OTYPER、GPIOx_PUPDR 和 GPIOx_OSPEEDER 寄存器,分别选择类型、上拉/下拉以及输出速度。
— 在 GPIOx_AFRL 或 GPIOx_AFRH 寄存器中,将 I/O 连接到所需 AFx
4. EVENTOUT
配置用于输出 Cortex™-M4F EVENTOUT 信号的 I/O 引脚(通过将其连接到 AF15)
注意: EVENTOUT 不会映射到以下 I/O 引脚: PC13 、 PC14 、 PC15 、 PH0 、 PH1 和 PI8 。有关系统和外设的复用功能 I/O 引脚映射的详细信息,请参见数据手册中的“复用功能映射”表。

USART1_TX(AF7)-PB6,USART3_RX(AF7)-PB7

USART2_TX(AF7)-PD5,USART2_RX(AF7)-PD6

USART3_TX(AF7)-PC10,USART3_RX(AF7)-PC11

USART6_TX(AF8)-PC6,USART6_RX(AF8)-PC7

端口复用初始化步骤
接下来看一下端口复用初始化过程的步骤,拿串口1为例:

1、GPIO端口时钟使能。要使用到端口复用,首先是要使能端口的时钟了;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

2、复用的外设时钟使能。比如要将PA9、PA10引脚复用成串口,必须也要使能串口时钟;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

3、端口模式配置。在I/O复用位内置外设功能引脚的时候,必须设置GPIO端口的模式。**至于在复用功能下,GPIO的模式怎么设置,可以查看手册《STM32F4中文参考手册》。这里拿USART1为例,进行配置,要配置全双工的串口1,TX引脚需要推挽复用输出,RX引脚需要浮空输入或者上拉输入;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9//复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure);
  
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10 PA.10 浮空输入
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); 


void Serial_Init(void)
{
	/*开启时钟*/
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);	//开启USART1的时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	//开启GPIOA的时钟
	
	/*GPIO初始化*/
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);					//将PA9引脚初始化为复用推挽输出
	
	/*USART初始化*/
	USART_InitTypeDef USART_InitStructure;					//定义结构体变量
	USART_InitStructure.USART_BaudRate = 9600;				//波特率
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;	//硬件流控制,不需要
	USART_InitStructure.USART_Mode = USART_Mode_Tx;			//模式,选择为发送模式
	USART_InitStructure.USART_Parity = USART_Parity_No;		//奇偶校验,不需要
	USART_InitStructure.USART_StopBits = USART_StopBits_1;	//停止位,选择1位
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;		//字长,选择8位
	USART_Init(USART1, &USART_InitStructure);				//将结构体变量交给USART_Init,配置USART1
	
	/*USART使能*/
	USART_Cmd(USART1, ENABLE);								//使能USART1,串口开始运行
}

1.8 参考资料

硬件电路设计-RS232串口通信_哔哩哔哩_bilibili硬件电路设计-RS232串口通信, 视频播放量 9081、弹幕量 2、点赞数 111、投硬币枚数 43、收藏人数 360、转发人数 21, 视频作者 若忘即安-, 作者简介 硬件、考研、摄影、数码知识分享!,相关视频:URAT、RS232、RS485硬件电路设计,10分钟学会RS232 RS422 RS485如何使用,硬件工程师零基础入门到精通教程114讲全集【学不会来找我】,RS232串口通讯详细讲解,RS485+RS232+USB转TTL,全套三种串口通信综合,电路原理图设计,嘉立创免费打样,proteus对51单片机串口通信的仿真,36. RS485介绍,SPI、UART、RS232、RS485、IIC 5种嵌入式经典通信总线协议精讲「附赠课件资料&项目源码」,40、基于STM32的串口通信,超简单的USB转串口方案,支持国产!https://www.bilibili.com/video/BV1p4421X7PL?spm_id_from=333.788.videopod.sections&vd_source=09cae05f6fb370c3daad44524bb34024

2、USB基础知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值