完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1、串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的电平标准(电信号)。
2、接设备的时候,一般只接GND RX TX。不会接Vcc或者+3.3v的电源线,避免与目标设备上的供电冲突。 3、PL2303、CP2102芯片是USB 转 TTL串口 的芯片,用USB来扩展串口(TTL电平)。 4、MAX232芯片是TTL电平与RS232电平的专用双向转换芯片,可以TTL转RS-232,也可以RS-232转TTL。 5、TTL标准是低电平为0,高电平为1(+5V电平)。RS-232标准是正电平为0,负电平为1(±15V电平)。 6、RS-485与RS-232类似,但是采用差分信号负逻辑。这里略过不讲。 串口、COM口、UART口: COM口即串行通讯端口,简称串口。这里区别于USB的“通用串行总线”和硬盘的“SATA”。 一般我们见到的是两种物理标准。D型9针插头,和 4针杜邦头两种。 这是常见的4针串口,在电路板上常见,经常上边还带有杜邦插针。还有时候有第五根针,3.3V电源端。 由于是预留在电路板上的,协议可以有很多种,要看具体设备。 嵌入式里面说的串口,一般是指UART口, 但是我们经常搞不清楚它和COM口的区别, 以及RS232, TTL等关系, 实际上UART,COM指的物理接口形式(硬件), 而TTL、RS-232是指的电平标准(电信号)。 UART有4个pin(VCC, GND, RX, TX), 用的TTL电平, 低电平为0(0V),高电平为1(3.3V或以上)。 下面这个就是D型9针串口(通俗说法)。在台式电脑后边都可以看到。 记住,这种接口的协议只有两种:RS-232和RS-485。不会是TTL电平的(除非特殊应用)。 我们一般只接出RXD TXD两针,外加GND。 下图是个USB转TTL串口的小板,可以用USB扩展出一个串口。芯片为PL2303HX。 网上经常混淆各种串口,但是这个确实是可以给STC单片机下载程序的。 这是另一种,CP2102芯片的,也是USB转TTL串口。据说比PL2303的好,实际使用中没感觉出来。这个小板就多了+3.3V电源端,以适应不同的目标电路。 下图为USB转RS-232串口 Uart接口的详细解释 简单来说,区别在于UART是一种接口,而RS232/RS485是一种总线。UART这个接口,后面可以接TTL电平,这就是我们俗称的普通的串口。而UART如果接了RS232/RS485的转换芯片,那么后面的总线上就是按照RS232/RS485规则来传输数据。RS232/RS485总线的具体规则我们后续再讨论,本篇主要详解TTL下的情况。UART接TTL电平时,+5V等价于逻辑“1”,0V等价于逻辑“0”。 如下例子主要说明一下UART接TTL电平这种方式是怎么传输二进制数据的。这是我在项目中的一个例子,用STM32F429的Uart4口采集TOF模块测量得到的距离信息。 UART的Rx连接测距模块TOF的Tx。TOF向UART发送了0x32 0x33 0x6d 0x6d 0x0a 五个字节,对应的ASCII码是23mm,表示测到的距离。 0x32 0x33 0x6d 0x6d 0x0a 对应的示波器上测到波形如下所示,我们来一起分析一下。 首先,UART的波特率,配置的是9600。对于串口来说,波特率=比特率,所以串口现在比特率为9600,所以每一个bit需要的时间为100us。所以示波器抓的波形对应的比特流是: 00100110010110011001010110110101011011010010100001 对于Uart,我配置的代码如下: USART_InitStructure.USART_BaudRate = UART4_BAUD; //9600 USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No ; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(UART4, &USART_InitStructure); 所以Uart的数据位宽为8bit,再加上起始位0,结束为1.所以比特流分割为如下: 0 0100 1100 1 0 1100 1100 1 0 1011 0110 1 0 1011 0110 1 0 0101 0000 1 考虑硬件总线上的数据时序,CPU接收到后的比特序列颠倒: 0100 1100 颠倒为 0011 0010 即为0x32 1100 1100 颠倒为 0011 0011 即为0x33 1011 0110 颠倒为 0110 1101 即为0x6d 1011 0110 颠倒为 0110 1101 即为0x6d 0101 0000 颠倒为 0000 1010 即为0x0a 完美! 发送的0x32 0x33 0x6d 0x6d 0x0a 字节与示波器上测量到的高低电平信号完美相符。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1641 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1562 浏览 1 评论
988 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
691 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1608 浏览 2 评论
1869浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
655浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
525浏览 3评论
540浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
512浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 02:57 , Processed in 0.637954 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号