USART串口

一、通信接口

        通信目的:将一个设备的数据传送到另一个设备。

        通信协议:通信双方按照协议规则进行数据收发。

        全双工:可以同时收发数据;半双工:同一时间只能收或发。

二、USART串口协议

        串口是一种十分广泛的通讯接口,可以使单片机与单片机、单片机与电脑、单片机与各式各样模块互相通信。

1.硬件电路

        TX发送端,RX接收端。TX与RX要交叉连接。电平标准不一致需要加电平转换芯片。

        电平标准:TTL电平,+3.3V~+5V表示1,0V表示0。

                          RS232电平,-3V~-15V表示1,+3V~+15V表示0。

                          RS485电平,两线压差+2V~+6V表示1,-2V~-6V表示0。(差分信号)

2.串口参数及时序

        波特率:串口通信速度。(9600波特率,每传送一位所需时间1/9600)

        起始位:标志一个数据帧开始,固定为低电平。(下降沿触发)

        停止位:用于数据帧间隔,固定为高电平。

        数据位:数据帧的有效负荷,1为高电平,0为低电平,低位先行

        校验位:用于数据验证,根据数据位计算的来。(无校验、奇校验、偶校验,判断1的个数)

三、USART串口外设

        USART(Universal Synchronous/Asynchronous Receiver/Transmitter),通用同步/异步收发器。USART使STM32内部集成的硬件外设,可以根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可以自动接收RX引脚数据帧时序,拼接为一个字节数据,存放在数据寄存器里。

        USART自带波特率发生器,最高达4.5Mbits/s。数据位长度(8/9),停止位长度(0.5/1/1.5/2),可选校验位(无校验/奇校验/偶校验)。支持同步模式、硬件流控制、DMA、智能卡、IrDA、LIN。

        STM32F103C8T6的USART资源:USART1、USART2、USART3。

1.USART框图

        RX连接接收移位寄存器,接收移位寄存器接收到数据置一个位,把数据送到接收数据寄存器(RDR),然后接可以读取RDR的值。

        把发送的数据送到发送数据寄存器(TDR),TDR接收到数据置一个标志位,TDR数据送到发送移位寄存器,发送移位寄存器把数据发送至TX。

        硬件数据流控,nRTS连接其他USART的nCTS,如果不能处理过来发来的数据,就会置一个标志位给发送端。

        SCLK只能输出,用于扩展USART的其他协议。

        USART中断控制,能不能进NVIC。TXE发送中断标志位,RXNE接收中断标志位。

        波特率发生器,fpclk_x,APB1频率36MHz,APB2频率72MHz,先预分频,然后再16分频。

2.USART基本结构

        RX通过GPIO到接收移位寄存器,接收移位寄存器把数据送到接受数据寄存器(RDR),置标志位位RXEN,判断RXEN是否接收到数据。

        发送数据寄存器(TDR)把数据送到发送移位寄存器,置标志位TXE,判断TXE是否可以发送数据。

①数据帧

        时钟上升沿,读取数据。

②输入数据策略

起始位侦测:16倍频速率进行采样,8、9、10采样准确。

数据采样:16倍频速率进行采样,8、9、10采样准确。

③波特率发生器

        发送器和接收器的波特率由波特率寄存器BRR里的DIV确定。(整数部分和小数部分)

④数据模式

        HEX模式/十六进制模式/二进制模式:以原始数据显示。

        文本模式/字符模式:以原始数据编码后的形式显示。

3.CH340原理图

        USB接CH340,接稳压芯片,引出VCC+5V、CH340 VCC、CH340 TXD、CH340 RXD、CH340 3.3V、GND。

四、实验1

1.串口发送

①实验现象

        利用串口助手,在串口助手上显示接收到的的数据。

HEX模式、文本模式

②硬件设计

③软件设计

Usart.c

Usart.h

main.c

④用到函数

外设时钟使能:RCC_APB2PeriphClockCmd

GPIO结构体重命名:GPIO_InitTypeDef

GPIO初始化:GPIO_Init

USART结构体重命名:USART_InitTypeDef

USART初始化:USART_Init

USART使能:USART_Cmd

2.串口发送+接收

①实验现象

        OLED显示电脑端发送来的数据,电脑端串口助手显示STM32发送来的数据。

②硬件设计

③软件设计

用到OLED模块。

查询的方法:

Serial.c

Serial.h

main.c

中断的方法:

Serial.c

Serial.h

main.c

④用到函数

外设时钟使能模块:RCC_APB2PeriphClockCmd

GPIO结构体重命名:GPIO_InitTypeDef

GPIO初始化:GPIO_Init

UASRT结构体重命名:USART_InitTypeDef

USART初始化:USART_Init

USART中断配置:USART_ITConfig

NVIC优先级分组:NVIC_PriorityGroupConfig

NVIC结构体重命名:NVIC_InitTypeDef

NVIC初始化:NVIC_Init

USART发送数据:USART_SendData

USART返回标志位状态:USART_GetFlagStatus

USART返回中断状态:USART_GetITStatus

USART清空中断标志位:USART_ClearITPendingBit

五、数据包发送与接收

1.HEX数据包

        0xFF包头,0xFE包尾。

2.文本数据包

        ‘@’包头,‘\r’、‘\n’包尾。

3.HEX数据包接收

        状态机编程思想。等待包头0xFF,状态为0;收到0xFF,状态为1,判断是否收到4个数据;收到4个数据,状态为2,等待包尾0xFE。收到0xFE,状态转为0。

4.文本数据包接收

        状态机编程思想。等待收到包头‘@’,状态为0;收到包头‘@’,状态为1,接收数据,判断是否收到‘\r’;收到‘\r’,状态为2,等待包尾‘\n’;收到‘\n’,状态为0。

六、实验2

1.串口收发HEX数据包

①实验现象

        OLED第一行显示TxDATA;第二行显示发送的数据,按键按下数据加1;第三行显示RxDATA;第四行显示接收的数据。

②硬件设计

③软件设计

用到OLED、Key模块。

Serial.c

Serial.h

main.c

④用到函数

外设时钟使能:RCC_APB2PeriphClockCmd

GPIO结构体重命名:GPIO_InitTypeDef

GPIO初始化:GPIO_Init

USART结构体重命名:USART_InitTypeDef

USART初始化:USART_Init

USART中断配置:USART_ITConfig

NVIC优先级分组:NVIC_priorityGroupConfig

USART使能:USART_Cmd

USART发送数据:USART_SendData

USART返回标志状态:USART_GetFlagStatus

USART返回中断编制位:USART_GetITStatus

USART接收数据:USART_ReceiveData

USART清除中断标志位:USART_ClearITPendingBit

2.串口收发文本数据包

①实验现象

        OLED第一行显示TxData;第二行显示发送的字符串;第三行显示RxData;第四行显示接收到的字符串。

        串口助手发送Led_On,OLED第四行显示接收到的命令字符串,OLED第二行显示Led_On_OK,Led灯亮。串口助手发送Led_Off,OLED第四行显示接收到的命令字符串,OLED第二行显示Led_Off_OK,Led灯灭。串口助手发送Led_abc,OLED第四行显示接收到的命令字符串,OLED第二行显示Error_Command,Led灯无变化。

②硬件设计

③软件设计

用到OLED、Led模块。

Serial.c

Serial.h

main.c

④用到函数

外设时钟使能:RCC_APB2PeriphClockCmd

GPIO结构体重命名:GPIO_InitTypeDef

GPIO初始化:GPIO_Init

USART结构体重命名:USART_InitTypeDef

USART初始化:USART_Init

USART中断配置:USART_ITConfig

NVIC优先级分组配置:NVIC_PriorityGroupConfig

NVIC初始化:NVIC_Init

USART使能:USART_Cmd

USART发送数据:USART_SendData

USART返回标志状态:USART_GetFlagStatus

USART返回中断状态:USART_GetITStatus

USART接收数据:USART_ReceiveData

USART清空中断标志位:USART_ClearITPendingBit

七、两个软件

1.FlyMcu

        串口下载程序。只能用USART1,因为STM32F103C8T6本芯片只适配了USART1下载。

        在魔术棒的Output里勾选Create HEX File,生产.hex文件。切换BOOT0为1,按复位,下载程序。切换BOOT0为0,按复位,程序现象就出来了。

        切换BOOT0为1,FlyMcu勾选编程后执行,编程到FLASH时写选项字节取消勾选,程序现象会执行一次。

        设置一键下载电路,就不要老是切换跳线帽和按复位按键。

        读FLASH,山寨。清楚芯片,读器件信息。设置选项字节等。

2.STLINK Utiliti

        STLINK下载程序。

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值