网站建设制作设计seo优化南宁,wordpress header js,网站建设技术网,wordpress访客函数目录
1、通信接口
2、 硬件电路
3、电平标准
4、串口参数及时序
5、USART简介 6、USART工作
#xff08;1#xff09;写操作
#xff08;2#xff09;读操作
#xff08;3#xff09;帧头和帧尾的添加和除由电路自动执行
#xff08;4#xff09;硬件数据控制…目录
1、通信接口
2、 硬件电路
3、电平标准
4、串口参数及时序
5、USART简介 6、USART工作
1写操作
2读操作
3帧头和帧尾的添加和除由电路自动执行
4硬件数据控制流
5中断输出控制USART
6波特率发生器 7、USART基本结构 8、数据帧 9、波特率发生器 1、通信接口 •通信的目的将一个设备的数据传送到另一个设备扩展硬件系统 •通信协议制定通信的规则通信双方按照协议规则进行数据收发 异步需要双方约定一个频率 2、 硬件电路 •简单双向串口通信有两根通信线发送端TX和接收端RX •TX与RX要交叉连接 •当只需单向的数据传输时可以只接一根通信线 •当电平标准不一致时需要加电平转换芯片 两个设备之间的GND一定要接在一起但是VCC可以各自接 3、电平标准 •TTL电平3.3V或5V表示10V表示0 •RS232电平-3~-15V表示13~15V表示0 •RS485电平两线压差2~6V表示1-2~-6V表示0差分信号 4、串口参数及时序 •波特率串口通信的速率 速率的参数就是波特率波特率就是每秒传输码元的个数单位是码元/sbaud 比特率每秒传输的比特数单位是bit/s,或者是bps 在二进制的情况下一个码元及时一个bit此时波特率等于比特率 •起始位标志一个数据帧的开始固定为低电平 •数据位数据帧的有效载荷1为高电平0为低电平低位先行 •校验位用于数据验证根据数据位计算得来 •停止位用于数据帧间隔固定为高电平 字节装载在数据帧中数据帧由起始位、数据位、停止位组成数据位有8个代表一个字节的8位置可以在最右边加一个奇偶校验位则数据位总共是9位。接收方在接收数据后会验证数据位和校验位若规定发送的波特率是1000bps表示1s要发1000位每一位的时间就是1ms发送方每隔1ms发送一位接收方每隔1ms接受一位决定了每隔多久发送一位空闲状态下起始位为高电平起始位给低电平使其产生下降沿表示数据帧要开始5、USART简介 •USART通用同步/异步收发器 •USART是STM32内部集成的硬件外设可根据数据寄存器的一个字节数据自动生成数据帧时序从TX引脚发送出去也可自动接收RX引脚的数据帧时序拼接为一个字节数据存放在数据寄存器里. •自带波特率一般设置为9600/115200发生器最高达4.5Mbits/s •可配置数据位长度8/9、停止位长度0.5/1/1.5/2 •可选校验位无校验/奇校验/偶校验 •支持同步模式、硬件流控制、DMA、智能卡、IrDA、LIN 同步模式多了个时钟CLK的输出 •STM32F103C8T6 USART资源 USART1APB2总线上的设备、 USART2APB1、 USART3APB1 6、USART工作
1写操作 当数据移位完成后数据会立刻自动从TDR发送移位寄存器 TDR和移位寄存器的双重缓存保证在连续发送数据时数据帧之间不会有空闲提高了工作效率 2读操作 因为串口协议规定是低位先行所以接收移位寄存器时从高位往低位方向移动 3帧头和帧尾的添加和除由电路自动执行
4硬件数据控制流 A向B发送数据当A一直发B处理不过来 若无硬件控制流B只能抛弃新数据或者覆盖元数据 有硬件控制流硬件电路上会多出一条线B没准备好置高电平准备好置低电平 A收到B的反馈决定数据发送防止因为B处理慢而导致数据丢失。 能接收的时候RTS就置低电平请求对方发送对方的CTS接收到后就可以一直发 处理不过来时RTS就置高电平对方的CTS接收到后就会暂停发送 5中断输出控制USART TXE发送寄存器空RXNE接收寄存器非空是判断发送状态和接收状态的必要标志位 中断输出控制就是配置中断是不是能通向NVIC 6波特率发生器 波特率发生器是分频器APB时钟进行分频得到发送和接收移位的时钟 时钟输入时fPCLKxx1或2USART1挂载在APB2所以就是PCLK2的时钟为72M 其他的USART挂载在APB1就是PCLK1的时钟,为36M 之后对时钟进行分频除以USARTDIV的分频系数分频后再除以16得到发送器时钟和接收器时钟通向控制部分 若TE1,发送器使能发送部分的波特率就有效 若RE1,接收器使能接收部分的波特率有效 7、USART基本结构 8、数据帧 有8位字长和9位字长分别可以选择有校验和无校验 9位建议有校验8位建议无校验 停止位有0.511.52建于选择1位 9、波特率发生器 发送器和接收器的波特率由波特率寄存器BRR里的DIV确定 计算公式波特率 fPCLK2/1 / (16 * DIV)//内部有16倍波特率的采样时钟 配置USART1为9600的波特率 960072MUSART1的时钟/(16*DIV DIV72M/9600/16468.75(二进制11101 0100.11) 用库函数配置需要多少波特率直接写就行