=========STM32串口===================================

一、什么是串口(USART)

    串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
    

二、处理器与外部设备通信的两种方式:

    并行通信
            -传输原理:数据各个位同时传输。
            -优点:速度快
            -缺点:占用引脚资源多

    串行通信
            -传输原理:数据按位顺序传输。
            -优点:占用引脚资源少
            -缺点:速度相对较慢
        

    
三、通道方式

      
    对于大部分的芯片,在通信方面节省IO,所以串口作为 MCU 的重要外部接口, 同时也是软件开发重要的调试手段, 其重要性不言而喻。
    现在基本上所有的 MCU 都会带有串口。而STM32F407ZGT6 最多可提供 6 路串口。
    串行通信按传送方向分:
    a.单工:
               数据传输只支持数据在一个方向上传输(收音机、遥控器)
    b.半双工:
               允许数据在两个方向上传输,但是,在某一时刻,只允许数
                据在一个方向上传输,它实际上是一种切换方向的单工通信;(对讲机)
    c.全双工:
               允许数据同时在两个方向上传输,因此,全双工通信是两个
               单工通信方式的结合,它要求发送设备和接收设备都有独立
               的接收和发送能力。(电话机)
               

四、STM32串口

    1、全双工通信方式
    2、有两根数据线(信息线)
    RXD    :接受数据 Receive(rx) Data
    TXD    :发送数据 Transmit(tx) Data
    
    3、串口模块连接方式
        MCU            MCU
        TXD——–>RXD
        RXD<——–TXD
        
    4、串口波特率
    单片机或计算机在串口通信时的速率。指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如数据传送速率为240b/s, 而每个字符格式包含10位(1个起始位,1个停止位,8个有效数据位),这时的波特率为240 baud (波特),比特率(有效数据位的传送速率)为 240*10=2400 bps(比特每秒)。(但是一般调制速率大于波特率,比如曼彻斯特编码)。波特率,可以通俗的理解为一个设备在一秒钟内发送(或接收)了多少码元的数据。它是对符号传输速率的一种度量,1波特即指每秒传输1个码元符号(通过不同的调制方式,可以在一个码元符号上负载多个bit位信息),
    1比特每秒是指每秒传输1比特(bit)。
    
    9600bps:每秒传输9600位数据数据  那么发送的有效字节:9600/10 = 960个字节
    

五、USART1配置流程

    1、理解电路原理图
        PA9  — TX(发送端)
        PA10 — RX(接收端)
        
    2、串口时钟使能,GPIO 时钟使能。
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);    
    
    
    3、 设置引脚复用器映射:调用 GPIO_PinAFConfig 函数。
        GPIO_InitStruct.GPIO_Pin    = GPIO_Pin_9|GPIO_Pin_10;             //引脚9 10
        GPIO_InitStruct.GPIO_Mode    = GPIO_Mode_AF;                       //复用功能
        //4、初始化IO口为复用功能输出。
        GPIO_Init(GPIOA, &GPIO_InitStruct);
    
    4、 GPIO 初始化设置:要设置模式为复用功能。
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);     //选择TX
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);     //选择RX
    
    5、串口参数初始化:设置波特率,字长,奇偶校验等参数。
        USART_Init(USART1,&USART_InitStruct);
    
    6、开启中断并且初始化 NVIC,使能中断(如果需要开启串口中断才需要这个步骤)。
    
    7、选择中断方式
       USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

    
    8、使能串口。
        TIM_Cmd
    7) 编写中断处理函数:函数名格式为 USARTx_IRQHandler(x 对应串口号)。
    
    

    
六、蓝牙操作

    1、下载蓝牙开发资料
    
    2、双鸡安装USB转TTL驱动(D:\STM32\006\资料\串口调试助手和驱动\CH341SerSetup.exe)
    
    3、按照图示当的连接方法,连接蓝牙
    
    4、按住蓝牙模块的按键,再将USB转TTL插入电脑,插入电脑后,蓝牙模块的LED灯处于慢闪状态(慢闪状态表示处于AT指令操作模式)
        快闪处于数据透传模式(透传相当数据无障碍传输)
        
    5、打开蓝牙AT指令手册(D:\STM32\006\资料\HC-05\HC-05\HC05指令集.pdf),并安装AT调试的串口助手软件(波特率:38400)
    (D:\STM32\006\资料\HC-05\HC-05\HC-05AT测试版\setup\setup.exe),安装后使用AT指令修改蓝牙名字
     AT+NAME=CHEN  (软件当中记得按回车)
     
    6、将USB转TTL重新插入电脑,让蓝牙处于数据透传模式(LED处于快闪)
    
    7、安装安卓手机APK(D:\STM32\006\资料\HC-05\BlueSPP_downcc.apk),连接蓝牙,并使用APP连接
    
    8、打开一个串口软件(波特率:9600),此时手机串口助手的数据即可与电脑串口数据交互

物联沃分享整理
物联沃-IOTWORD物联网 » STM32自学笔记第六天

发表评论