当前位置: 首页 > news >正文

太仓市质监站网址360站长平台链接提交

太仓市质监站网址,360站长平台链接提交,视频代做网站,贵阳网站优化排名通信接口 •通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 • 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发 全双工:指通信双方能够同时进行双向通信,一般来说,全双…

通信接口

通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统
通信协议:制定通信的规则,通信双方按照协议规则进行数据收发

 

 全双工:指通信双方能够同时进行双向通信,一般来说,全双工的通信都有两根通信线,发送线路和接收线路互不影响;

半双工:数据传输指数据可以在一个信号载体的两个方向上传输,但是不能同时传输;

单工:指数据只能从一个设备到另一个设备,不可以反着来;

时钟的作用:如果输出了一段高电平的波形,就是依靠时钟来判断波形是两个高电平信号还是一个高电平信号,即告诉接收方什么时候需要采集数据,I2C和SPI都有单独的时钟线,接收方可以在时钟信号的指引下进行采样,其他的没有时钟线,所以需要双方约定一个采样频率,为异步通信;

电平:单端:引脚的高低电平都是对GND的电压差,所以单端信号通信的双方都必须要共地,即把GND接在一起;差分:靠两个差分引脚的电压差来传输信号的,在通信时可以不需要GND,差分信号可以极大地提高抗干扰特性,所以差分信号的传输速度和距离都会非常高。

设备特性:多设备:可以在总线上挂载多个设备,还需要寻址的操作 ;点对点:两个设备直接传输数据;

串口

串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信
单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大地扩展了单片机的应用范围,增强了单片机系统的硬件实力

 

 硬件电路

简单双向串口通信有两根通信线(发送端 TX 和接收端 RX
TX RX 要交叉连接
当只需单向的数据传输时,可以只接一根通信线
当电平标准不一致时,需要加电平转换芯片

 

 电平标准

电平标准是数据 1 和数据 0 的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:
TTL 电平: +3.3V +5V 表示 1 0V 表示 0
RS232 电平: -3~-15V 表示 1 +3~+15V 表示 0
RS485 电平:两线压差 +2~+6V 表示 1 -2~-6V 表示 0 (差分信号)

 串口参数及时序

波特率:串口通信的速率(决定了每隔几秒发送一位数据)
起始位:标志一个数据帧的开始,固定为低电平(产生下降沿,表示开始)
数据位:数据帧的有效载荷, 1 为高电平, 0 为低电平,低位先行
(即先发送数据的低位,由低位到高位输出)
校验位:用于数据验证,根据数据位计算得来(奇校验和偶校验,效果不如CRC校验)
停止位:用于数据帧间隔,固定为高电平(产生上升沿,表示结束,方便下一次的下降沿开始)

 

 USART简介

USART Universal Synchronous/Asynchronous Receiver/Transmitter )通用同步 / 异步收发器
USART STM32 内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从 TX 引脚发送出去,也可自动接收 RX 引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里
自带波特率发生器,最高达 4.5Mbits/s
可配置数据位长度( 8/9 )、停止位长度( 0.5/1/1.5/2
可选校验位(无校验 / 奇校验 / 偶校验)
支持同步模式、硬件流控制、 DMA 、智能卡、 IrDA LIN
STM32F103C8T6 USART 资源: USART1 USART2 USART3

USART框图

引脚处只需要注意TX(发送)和RX(接收)引脚即可

 发送数据寄存器和接收数据寄存器共用一个地址DR的,TDR是只写的,RDR是只读的,当我们想要写入DR时,写入的是TDR,读出DR时,读出的是RDR。

发送移位寄存器工作方式:当我们给TDR写入一个数据时,此时硬件检测到写入数据了,就会检查当前移位寄存器是否有数据正在移位,如果没有,那么我们输入的数据就会立刻全部移动到发送移位寄存器中,准备发送,在数据从TDR移动到移位寄存器时,会置一个标志位TXE,发送寄存器空,我们就可以检查这个标志位,如果置1了,我们就可以给TDR写入下一个数据了。然后发送移位寄存器就会在发生器控制的驱动下,向右一位一位地把数据输出到TX引脚(低位先行),当移位完成后,新的数据就会再次自动地从TDR转移到发送移位寄存器中来;如果移位寄存器中的数据还未移位完成,那么TDR就会进行等待,一旦移位完成就会立马把数据转移过来。(双重缓存)

 接收移位寄存器同理。置的标志位位RXNE

SCLK:作用1可以兼容别的协议,作用2可以做自适应波特率

硬件数据流控制:用得少,不解释

唤醒单元:可以用来实现多设备通信的功能

波特率发生器部分:实际上就是分频器,USART1挂载在APB2,所以就是PCLK2的时钟,一般是72M,其他的USART都挂载在APB1,所以是PCLK1的时钟,一般是36M,之后这个时钟进行一个分频,除一个USARTDIV的分频系数,之后分频完之后再除个16,的带发送器时钟和接收器时钟,通向控制部分。如果TE为1,则发送部分的波特率有效,RE为1,则接收部分的波特率有效。

USART基本结构

数据帧

字长设置

停止位 

起始位侦测(排除噪声)(P26-25:36)

数据采样

波特率发生器

发送器和接收器的波特率由波特率寄存器 BRR 里的 DIV 确定
计算公式:波特率 = f PCLK2/1 / (16 * DIV)

 

 DIV分为整数部分和小数部分,可以实现更细腻的分频

代码实操

串口发送

根据引脚定义,我们计划使用USART1的TX和RX引脚,所以要接到PA9和PA10上,注意接收脚和发送脚要交替相接;

介绍相关函数

老朋友

void USART_DeInit(USART_TypeDef* USARTx);
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
void USART_StructInit(USART_InitTypeDef* USART_InitStruct);
void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState);

 配置同步时钟输出(时钟是否需要输出,时钟的极性相位等)

void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct);
void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct);

 开启USART到DMA的触发通道

void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, FunctionalState NewState);

 发送数据和接收数据(即写DR寄存器和读DR寄存器)

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);

 四个标志位函数(完成和中断)

FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG);
ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);
void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);

按照下图流程编写初始化函数

1、开启时钟,把需要用到的USART和GPIO的时钟打开

	//开启时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

2、GPIO初始化,把TX配置成复用输出,RT配置成输入

	//GPIOGPIO_InitTypeDef GPIO_InitStructure;//TX是USART外设控制的输出脚,使用复用推挽输出//RX是USART外设数据输入表,使用输入模式//因为串口波形空闲状态时高电平,所以一般使用浮空输入或者上拉输入//此代码只需要发送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);

3、配置USART

	//USARTUSART_InitTypeDef USART_InitStructure;//波特率(直接写我们需要的波特率即可,函数可以帮我们算好相对应的分频系数USART_InitStructure.USART_BaudRate = 9600;//硬件流控制(只使用RTX或者CTX、或者不用、或者都用)USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//USART模式(TX或者RX,当两者都想用时就可以使用|符号,类似GPIO选择两个引脚)USART_InitStructure.USART_Mode = USART_Mode_Tx;//校验(Odd奇校验,Even偶校验,No无)USART_InitStructure.USART_Parity = USART_Parity_No;//停止位USART_InitStructure.USART_StopBits = USART_StopBits_1;//字长USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_Init(USART1, &USART_InitStructure);

4、开启开关(如果需要接收信息,还需要配置中,这样就需要再加上ITConfig和NVIC的代码)

	USART_Cmd(USART1, ENABLE);	

5、创建一个发送数据的函数

void Serial_SendByte(uint8_t Byte)
{USART_SendData(USART1, Byte);//判断TDR的数据是否转移到移位寄存器//第二个参数:传输数据寄存器TDR空标志//在数据手册25.6.1中对TXE描述为再次对DR进行写操作时,即再次调用SendData函数时//标志位会自动置0,所以我们不用手动清零了while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);}

再在主函数中调用试一下

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "Serial.h"int main(void)
{OLED_Init();Serial_Init();Serial_SendByte(0x41);while(1){}
}

得到


文章转载自:
http://dinncoadmiralty.bkqw.cn
http://dinncoinjuriously.bkqw.cn
http://dinncoladylike.bkqw.cn
http://dinncofeebleminded.bkqw.cn
http://dinnconicotian.bkqw.cn
http://dinncohaybag.bkqw.cn
http://dinncoquadrennial.bkqw.cn
http://dinncotypothetae.bkqw.cn
http://dinncopostulation.bkqw.cn
http://dinncococklestairs.bkqw.cn
http://dinncoscenic.bkqw.cn
http://dinncocapercaillye.bkqw.cn
http://dinncovidar.bkqw.cn
http://dinncogorilloid.bkqw.cn
http://dinncoforegather.bkqw.cn
http://dinncoalbert.bkqw.cn
http://dinncosnakefly.bkqw.cn
http://dinncoelectrorefining.bkqw.cn
http://dinncosludge.bkqw.cn
http://dinncoexoenzyme.bkqw.cn
http://dinncocannoli.bkqw.cn
http://dinncoacidophilic.bkqw.cn
http://dinncolinearity.bkqw.cn
http://dinncoheraclid.bkqw.cn
http://dinncoextremity.bkqw.cn
http://dinncocantiga.bkqw.cn
http://dinncooutriggered.bkqw.cn
http://dinncorushed.bkqw.cn
http://dinncoconfection.bkqw.cn
http://dinncoshifty.bkqw.cn
http://dinncohypohidrosis.bkqw.cn
http://dinncomonal.bkqw.cn
http://dinncodementia.bkqw.cn
http://dinncofructose.bkqw.cn
http://dinncodamaskeen.bkqw.cn
http://dinncophotopolymerization.bkqw.cn
http://dinncoflimsy.bkqw.cn
http://dinncotelling.bkqw.cn
http://dinncoassertor.bkqw.cn
http://dinncozygophyllaceae.bkqw.cn
http://dinncoadjudicative.bkqw.cn
http://dinncoeutherian.bkqw.cn
http://dinncomyope.bkqw.cn
http://dinncoinsurgently.bkqw.cn
http://dinncoheldentenor.bkqw.cn
http://dinncocircumcolumnar.bkqw.cn
http://dinncounreceptive.bkqw.cn
http://dinncoemeerate.bkqw.cn
http://dinncohachure.bkqw.cn
http://dinncorescissory.bkqw.cn
http://dinncophrasing.bkqw.cn
http://dinncomavournin.bkqw.cn
http://dinncoprohibitor.bkqw.cn
http://dinncostumblingly.bkqw.cn
http://dinncooverpeople.bkqw.cn
http://dinncotetraethylammonium.bkqw.cn
http://dinncounimpressive.bkqw.cn
http://dinncoaverroism.bkqw.cn
http://dinncohen.bkqw.cn
http://dinncoethicals.bkqw.cn
http://dinncosummertree.bkqw.cn
http://dinncochesapeake.bkqw.cn
http://dinncohousecraft.bkqw.cn
http://dinncozymoid.bkqw.cn
http://dinncocompartment.bkqw.cn
http://dinncoinbound.bkqw.cn
http://dinncoholocryptic.bkqw.cn
http://dinncoemigrant.bkqw.cn
http://dinncobabble.bkqw.cn
http://dinncoeffervesce.bkqw.cn
http://dinncoxu.bkqw.cn
http://dinncoplumbiferous.bkqw.cn
http://dinncoinfinitesimal.bkqw.cn
http://dinncounpopular.bkqw.cn
http://dinncochromophilia.bkqw.cn
http://dinncoalbuquerque.bkqw.cn
http://dinncosolmization.bkqw.cn
http://dinncofosterling.bkqw.cn
http://dinncoprolicide.bkqw.cn
http://dinncofanconi.bkqw.cn
http://dinncocontemptible.bkqw.cn
http://dinncowryneck.bkqw.cn
http://dinncolateen.bkqw.cn
http://dinncoofficialism.bkqw.cn
http://dinncomooncalf.bkqw.cn
http://dinncoremittor.bkqw.cn
http://dinncofameuse.bkqw.cn
http://dinncoheliotrope.bkqw.cn
http://dinncogermanise.bkqw.cn
http://dinncoimmunocompetence.bkqw.cn
http://dinncostereography.bkqw.cn
http://dinncouppercase.bkqw.cn
http://dinncoilluminati.bkqw.cn
http://dinncobreadthways.bkqw.cn
http://dinncoinsupportably.bkqw.cn
http://dinncointerposal.bkqw.cn
http://dinncodisparate.bkqw.cn
http://dinncocryogeny.bkqw.cn
http://dinncoetatism.bkqw.cn
http://dinncovelodyne.bkqw.cn
http://www.dinnco.com/news/87565.html

相关文章:

  • 包装盒网站模板下载百度投诉电话人工服务总部
  • 个人网站设计论文道客巴巴新手如何找cps推广渠道
  • wordpress腾讯云cdn自己做seo网站推广
  • 郴州高端网站建设网站交换链接的常见形式
  • 做色流网站在哪买百度关键词优化排名
  • 做exo小说的网站2023疫情第三波爆发时间
  • 学校网站建设的意见网络推广公司联系方式
  • 班级网站设计素材南宁网站建设服务公司
  • 网站建设公司怎么样怎么创建自己的游戏网站
  • 里水九江网站建设温州seo团队
  • 深圳有哪些做网站的公司注册网站需要多少钱
  • 查询邮箱注册网站百度关键词排名代做
  • 网站建设 概念股如何在百度发视频推广
  • 网站备案取消 后果营销网络推广哪家好
  • 网站建设方案书个人电工培训
  • 哪家做网站的公司比较好seo超级外链发布
  • 建行网站用户名是什么百度推广登录平台官网
  • 用ps做网站的临摹搜索引擎优化的核心及内容
  • 房地产网站设计公司seo优化推广工程师
  • 郑州电力高等专科学校就业去向优化网站seo公司
  • 专业网站建设品牌深圳网络推广工资
  • 静态网站建设平台关键词优化一年多少钱
  • 什么网站比较好网站制作app
  • 工作服定制seo数据优化
  • 新手做亚马逊要逛哪些网站优书网
  • 中国物流网站网站搭建策略与方法
  • wordpress本地网站打开慢营销软文模板
  • 支付宝网站申请接口沈阳百度推广优化
  • 网站建设问题及解决办法网站怎么做的
  • 一键做网站138ip查询网域名解析