首页 » 通讯 » 串口通讯还搞不懂?快来看看这篇文章吧_串口_暗记

串口通讯还搞不懂?快来看看这篇文章吧_串口_暗记

神尊大人 2024-12-19 18:20:48 0

扫一扫用手机浏览

文章目录 [+]

什么是串口通讯?

串行通讯是指仅用一根吸收线和一根发送线就能将数据以位进行传输的一种通讯办法。
只管串行通讯的比按字节传输的并行通信慢,但是串口可以在仅仅利用两根线的情形下就能实现数据的传输。

串口通讯还搞不懂?快来看看这篇文章吧_串口_暗记 串口通讯还搞不懂?快来看看这篇文章吧_串口_暗记 通讯

范例的串口通信利用3根线完成,分别是地线、发送、吸收。
由于串口通信是异步的,以是端口能够在一根线上发送数据同时在另一根线上吸收数据。
串口通信最主要的参数是波特率、数据位、停滞位和奇偶的校验。
对付两个须要进行串口通信的端口,这些参数必须匹配,这也是能够实现串口通讯的条件。

串口通讯还搞不懂?快来看看这篇文章吧_串口_暗记 串口通讯还搞不懂?快来看看这篇文章吧_串口_暗记 通讯
(图片来自网络侵删)

图1:串行通讯示数据传输意图

二、串口通讯的通讯协议?

最初数据是仿照旗子暗记输出大略过程量,后来仪表接口涌现了RS232接口,这种接口可以实现点对点的通信办法,但这种办法不能实现联网功能,这就匆匆生了RS485。

我们知道串口通信的数据传输都是0和1,在单总线、I2C、UART中都是通过一根线的高低电平来判断逻辑1或者逻辑0,但这种旗子暗记线的GND再与其他设备形成共地模式的通信,这种共地模式传输随意马虎产生滋扰,并且抗滋扰性能也比较弱。
以是差分通信、支持多机通信、抗滋扰强的RS485就被广泛地利用了。

RS485通信最大特点便是传输速率可以达到10Mb/s以上,传输间隔可以达到3000米旁边。
大家须要把稳的是虽然485最大速率和最大传输间隔都很大,但是传输的速率是会随间隔地增加而变慢的,以是两者是不可以兼得的。

三、串口通讯的物理层

串口通讯的物理层有很多标准,例如上面提到的,我们紧张讲解RS-232标准,RS-232标准紧张规定了旗子暗记的用场、通讯接口以及旗子暗记的电平标准。

在上面的通讯办法中,两个通讯设备的"DB9接口"之间通过串口旗子暗记线建立起连接,串口旗子暗记线中利用"RS-232标准"传输数据旗子暗记。
由于RS-232电平标准的旗子暗记不能直接被掌握器直接识别,以是这些旗子暗记会经由一个"电平转换芯片"转换成掌握器能识别的"TTL校准"的电平旗子暗记,才能实现通讯。

下图为DB9标准串口通讯接口:

DB9引脚解释:

上表中的是打算机真个DB9公头标准接法,由于两个通讯设备之间的收发旗子暗记(RXD与TXD)应交叉相连,以是调制调度器真个DB9母头的收发旗子暗记接法一样平常与公头的相反,两个设备之间连接时,只要利用"直通型"的串口线连接起来即可。

串口线中的RTS、CTS、DSR、DTR及DCD旗子暗记,利用逻辑 1表示旗子暗记有效,逻辑0表示旗子暗记无效。
例如,当打算机端掌握DTR旗子暗记线表示为逻辑1时,它是为了奉告远真个调制调度器,本机已准备好吸收数据,0则表示还没准备就绪。

四、波特率

波特率是指数据旗子暗记对载波的调制速率,它用单位韶光内载波调制状态改变的次数来表示;

比如波特率为9600bps;代表的便是每秒中传输9600bit,也便是相称于每一秒中划分成了9600等份。

因此,那么每1bit的韶光便是1/9600秒=104.1666...us。
约0.1ms。
既然是9600等份,即每1bit紧接着下一个比特,不存在额外的间隔。
两台设备要想实现串口通讯,这收发轫设置的波特率必须相同,否则是没办法实现通讯的。

收发波特率同等可以实现通讯:

收发波特率不一致,导致RX端不能正常吸收。

五、串口通讯的数据构造

起始位: 起始位必须是持续一个比特韶光的逻辑0电平,标志传输一个字符的开始,吸收方可用起始位使自己的吸收时钟与发送方的数据同步。

数据位: 数据位紧跟在起始位之后,是通信中的真正有效信息。
数据位的位数可以由通信双方共同约定。
传输数据时先传送字符的低位,后传送字符的高位。

奇偶校验位: 奇偶校验位仅占一位,用于进行奇校验或偶校验,奇偶考验位不是必须有的。
如果是奇校验,须要担保传输的数据统共有奇数个逻辑高位;如果是偶校验,须要担保传输的数据统共有偶数个逻辑高位。

停滞位: 停滞位可以是是1位、1.5位或2位,可以由软件设定。
它一定是逻辑1电平,标志着传输一个字符的结束。

空闲位: 空闲位是指从一个字符的停滞位结束到下一个字符的起始位开始,表示线路处于空闲状态,必须由高电平来添补。

六、单双工通讯

单工: 数据传输只支持数据在一个方向上传输;

半双工: 许可数据在两个方向上传输,但某一时候只许可数据在一个方向上传输,实际上是一种切换方向的单工通信,不须要独立的吸收端和发送端,两者可合并为一个端口;

全双工: 许可数据同时在两个方向上传输,因此全双工通信是两个单工办法的结合,须要独立的吸收端和发送端。

七、STM32中的串口通讯

STM32串口通信接口有两种,分别是:UART(通用异步收发器)、USART(通用同步异步收发器),对付大容量STM32F10x系列芯片,分别由3个USART和两个UART。

TXD:数据发送引脚;RXD:数据输入引脚

对付两芯片的间的连接,两个芯片GND共地,同时TXD和RXD交叉连接,这样两个芯片间可进行TTL电平通信。

但如果对付芯片和PC机相连,除了共地条件外,不能利用如上的直接交叉连接,虽然两者都有TXD和RXD引脚,但常日PC机利用的是RS232接口(9针),常日是TXC和RXD经由电平转换得到,故如果要使芯片与PC机的RS232接口直接通信,须要将芯片的输入输出端口也电平转换为RS232类型,再交叉连接,二者的电平标准不同:

单片机的点评标准(TTL电平):+5V表示1,0V表示0;

RS232电平标准:+15/+13V表示0,-15/-13表示1。

因此单片机与PC机进行串口通信该当遵照:在单片机串口与上位机给出的RS232口之间,通过电平转换电路实现TTL电平与RS232电平间的转换.

如果利用USB转串口也可以实现串口通讯,USB转串口电路图如下所示

STM32串口通讯代码

STM32中串口通讯已经给大家建好了相应的库函数,大家在利用和配置串口的时候直接进行调用库函数和配置就行了,请大家参照一下代码:

1、初始化构造体代码

typedefstruct{uint32_tUSART_BaudRate;//波特率uint16_tUSART_WordLength;//字长uint16_tUSART_StopBits;//停滞位uint16_tUSART_Parity;//校验位uint16_tUSART_Mode;//USART模式uint16_tUSART_HardwareFlowControl;//硬件流掌握}USART_InitTypeDef;

2、NVIC配置中断优先级

NVIC_Configuration(void){NVIC_InitTypeDefNVIC_InitStructure;/嵌套向量中断掌握器组选择/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/配置USART为中断源/NVIC_InitStructure.NVIC_IRQChannel=DEBUG_USART_IRQ;/抢断优先级/NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;/子优先级/NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;/使能中断/NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;/初始化配置NVIC/NVIC_Init(&NVIC_InitStructure);}

3、USART配置函数

voidDEBUG_USART_Config(void){GPIO_InitTypeDefGPIO_InitStructure;USART_InitTypeDefUSART_InitStructure;/第一步:初始化GPIO ///打开串口GPIO的时钟DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK,ENABLE);//将USARTTx的GPIO配置为推挽复用模式GPIO_InitStructure.GPIO_Pin=DEBUG_USART_TX_GPIO_PIN;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(DEBUG_USART_TX_GPIO_PORT,&GPIO_InitStructure);//将USARTRx的GPIO配置为浮空输入模式GPIO_InitStructure.GPIO_Pin=DEBUG_USART_RX_GPIO_PIN;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(DEBUG_USART_RX_GPIO_PORT,&GPIO_InitStructure);/第二步:配置串口的初始化构造体///打开串口外设的时钟DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK,ENABLE);//配置串口的事情参数//配置波特率USART_InitStructure.USART_BaudRate=DEBUG_USART_BAUDRATE;//配置针数据字长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(DEBUG_USARTx,&USART_InitStructure);/--------------------------------------------------------///串口中断优先级配置NVIC_Configuration();//使能串口吸收中断USART_ITConfig(DEBUG_USARTx,USART_IT_RXNE,ENABLE);/--------------------------------------------------------//第三步:使能串口///使能串口USART_Cmd(DEBUG_USARTx,ENABLE);}

标签:

相关文章

CAN总线事理-精华整理_节点_报文

为了大家阅读有所侧重,以下内容用★号做了标识:★★★★★表示汽车电子工程师必须熟习的★★★★表示汽车电子工程师推举理解的★★★及以...

通讯 2024-12-21 阅读0 评论0

BB机电路赏析_丝印_可调

两块板子安装在一起的正面图两块板子安装在一起的侧面图在BB机的年代我还是个小孩子,现在发展为了电子工程师,还好家里人把一些老物件留...

通讯 2024-12-21 阅读0 评论0