精华内容
下载资源
问答
  • 目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。 RS-232与RS-485都是串行数据接口标准,最开始是由电子工业协会(EIA)制订并发布的,RS-232...

    目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。

    RS-232与RS-485都是串行数据接口标准,最开始是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。

    为扩展应用范围,EIA又于1983年制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。由于EIA提出的建议标准都是以“RS”作为前缀,所以在通讯工业领域,仍然习惯将上述标准以RS作前缀称谓。

    这是一个比较实在好用的一个usb转4路rs232和4路rs485电路图,实际验证比较好用。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • USB转串口工作原理 一. 串口通信协议 1. 简介 串口通信:指串口按位(bit)发送和接收字节,是一种设备间非常常用的串行通讯方式。串口可以在使用一根线发送数据的同时用另一根线接收数据。 串口通信协议:指规定...

    一. 串口通信协议

    1. 简介

    • 串口通信:指串口按位(bit)发送和接收字节,是一种设备间非常常用的串行通讯方式。串口可以在使用一根线发送数据的同时用另一根线接收数据。
      进行串口通信时发送或者接收的每个字(即字节或字符)一次发送一位,每一位都是逻辑‘1’或者‘0’。
    • 串口通信协议:指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232、RS-422和RS-485。

    2. RS-232 标准

    RS-232 标准主要规定了信号的用途、通讯接口以及信号的电平标准

    • 如下图为使用 RS-232 标准的串口设备间常见的通讯结构
      在这里插入图片描述
      由图可知:“DB9接口”之间通过串口信号线建立起连接,串口信号线使用”RS-232标准“传输数据信号,这些信号通过记过电平转换芯片转换成控制器能识别的TLL标准的电平信号,实现通信。

      RS-232串口简介

    • 台式机电脑后面的9针接口就是com口(串口) 在工业控制 数据采集上应用广泛
      在这里插入图片描述

    • RS232接口(封装DB9)
      在这里插入图片描述

    • PC串口与单片机串口连接方式图:
      在这里插入图片描述
      其中DB91是在电脑上的 DB92是在单片机实验板上焊接着的

    • 如果电脑没有rs232口,只有USB口,可以用串口转接线转出串口,在电脑上位机上安装驱动程序(用串口通信比USB简单,因为串口通信没有协议,使用方便简单)

    3. RS232电平与TTL电平的区别

    根据通讯使用的电平标准不同,串口通讯可分为 TTL标准及 RS-232标准

    • 下图为TTL 电平标准与 RS232 电平标准
      在这里插入图片描述
      TTL 电平标准在理想状态下,使用 5V 表示二进制逻辑 1,使用 0V 表示逻辑 0;
      为了增加串口通讯的远距离传输及抗干扰能力,它使用-15V 表示逻辑 1,+15V 表示逻辑 0
    • 下图为使用 RS232 与 TTL 电平校准表示同一个信号时的对比
      在这里插入图片描述
      因为控制器一般使用 TTL 电平标准,所以常常使用 MA3232 芯片对 TTL 及 RS-232电平的信号进行互相转换

    二. USB转串口工作原理

    USB转串口即实现计算机USB接口到物理串口之间的转换。可以为没有串口的计算机或其他USB主机增加串口,使用USB转串口设备等于将传统的串口设备变成了即插即用的USB设备

    串口发送
    串口应用发送数据->USB串口驱动获取数据->驱动将数据经过USB通道发送给USB串口设备->USB串口设备接收到数据通过串口发送

    串口接收
    USB串口设备接收串口数据->将串口数据经过USB打包后上传给USB主机->USB串口驱动获取到通过USB上传的串口数据->驱动将数据保存在串口缓冲区提供给串口应用读取

    USB转串口CH340接线

    • 下图是USB转串口模块的一些功能模块的标示,USB转串口电路板背后还预留了一些全信号输出的接口,可以将电线直接焊接在这些引脚上来使用预留的功能
      在这里插入图片描述
    • 下图是对USB转串口模块的引脚标示
      在这里插入图片描述

    三. 实例——STM32的USART串口通信

    完成一个STM32的USART串口通讯程序(查询方式即可,暂不要求采用中断方式),要求:
    (1)设置波特率为115200,1位停止位,无校验位;
    (2)STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收;
    (3)在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。用此功能观察串口输出波形,并分析其波形反映的时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。

    1. CH340驱动安装

    • 安装驱动
      在这里插入图片描述
    • 在电脑设备管理器处查看有COM端口出现,说明安装成功
      在这里插入图片描述

    2. 编写代码

    • 新建工程
    • 因为是汇编语言,不用勾选 在这里插入图片描述
    • 添加汇编文件
      在这里插入图片描述
    • 写入代码:
    ;RCC寄存器地址映像             
    RCC_BASE            EQU    0x40021000 
    RCC_CR              EQU    (RCC_BASE + 0x00) 
    RCC_CFGR            EQU    (RCC_BASE + 0x04) 
    RCC_CIR             EQU    (RCC_BASE + 0x08) 
    RCC_APB2RSTR        EQU    (RCC_BASE + 0x0C) 
    RCC_APB1RSTR        EQU    (RCC_BASE + 0x10) 
    RCC_AHBENR          EQU    (RCC_BASE + 0x14) 
    RCC_APB2ENR         EQU    (RCC_BASE + 0x18) 
    RCC_APB1ENR         EQU    (RCC_BASE + 0x1C) 
    RCC_BDCR            EQU    (RCC_BASE + 0x20) 
    RCC_CSR             EQU    (RCC_BASE + 0x24) 
                                  
    ;AFIO寄存器地址映像            
    AFIO_BASE           EQU    0x40010000 
    AFIO_EVCR           EQU    (AFIO_BASE + 0x00) 
    AFIO_MAPR           EQU    (AFIO_BASE + 0x04) 
    AFIO_EXTICR1        EQU    (AFIO_BASE + 0x08) 
    AFIO_EXTICR2        EQU    (AFIO_BASE + 0x0C) 
    AFIO_EXTICR3        EQU    (AFIO_BASE + 0x10) 
    AFIO_EXTICR4        EQU    (AFIO_BASE + 0x14) 
                                                               
    ;GPIOA寄存器地址映像              
    GPIOA_BASE          EQU    0x40010800 
    GPIOA_CRL           EQU    (GPIOA_BASE + 0x00) 
    GPIOA_CRH           EQU    (GPIOA_BASE + 0x04) 
    GPIOA_IDR           EQU    (GPIOA_BASE + 0x08) 
    GPIOA_ODR           EQU    (GPIOA_BASE + 0x0C) 
    GPIOA_BSRR          EQU    (GPIOA_BASE + 0x10) 
    GPIOA_BRR           EQU    (GPIOA_BASE + 0x14) 
    GPIOA_LCKR          EQU    (GPIOA_BASE + 0x18) 
                                                           
    ;GPIO C口控制                   
    GPIOC_BASE          EQU    0x40011000 
    GPIOC_CRL           EQU    (GPIOC_BASE + 0x00) 
    GPIOC_CRH           EQU    (GPIOC_BASE + 0x04) 
    GPIOC_IDR           EQU    (GPIOC_BASE + 0x08) 
    GPIOC_ODR           EQU    (GPIOC_BASE + 0x0C) 
    GPIOC_BSRR          EQU    (GPIOC_BASE + 0x10) 
    GPIOC_BRR           EQU    (GPIOC_BASE + 0x14) 
    GPIOC_LCKR          EQU    (GPIOC_BASE + 0x18) 
                                                               
    ;串口1控制                       
    USART1_BASE         EQU    0x40013800 
    USART1_SR           EQU    (USART1_BASE + 0x00) 
    USART1_DR           EQU    (USART1_BASE + 0x04) 
    USART1_BRR          EQU    (USART1_BASE + 0x08) 
    USART1_CR1          EQU    (USART1_BASE + 0x0c) 
    USART1_CR2          EQU    (USART1_BASE + 0x10) 
    USART1_CR3          EQU    (USART1_BASE + 0x14) 
    USART1_GTPR         EQU    (USART1_BASE + 0x18) 
                                
    ;NVIC寄存器地址                
    NVIC_BASE           EQU    0xE000E000 
    NVIC_SETEN          EQU    (NVIC_BASE + 0x0010)     
    ;SETENA寄存器阵列的起始地址 
    NVIC_IRQPRI         EQU    (NVIC_BASE + 0x0400)     
    ;中断优先级寄存器阵列的起始地址 
    NVIC_VECTTBL        EQU    (NVIC_BASE + 0x0D08)     
    ;向量表偏移寄存器的地址     
    NVIC_AIRCR          EQU    (NVIC_BASE + 0x0D0C)     
    ;应用程序中断及复位控制寄存器的地址                                                
    SETENA0             EQU    0xE000E100 
    SETENA1             EQU    0xE000E104 
                                
                                  
    ;SysTick寄存器地址            
    SysTick_BASE        EQU    0xE000E010 
    SYSTICKCSR          EQU    (SysTick_BASE + 0x00) 
    SYSTICKRVR          EQU    (SysTick_BASE + 0x04) 
                                  
    ;FLASH缓冲寄存器地址映像     
    FLASH_ACR           EQU    0x40022000 
                                 
    ;SCB_BASE           EQU    (SCS_BASE + 0x0D00) 
                                 
    MSP_TOP             EQU    0x20005000               
    ;主堆栈起始值                
    PSP_TOP             EQU    0x20004E00               
    ;进程堆栈起始值             
                                
    BitAlias_BASE       EQU    0x22000000               
    ;位带别名区起始地址         
    Flag1               EQU    0x20000200 
    b_flas              EQU    (BitAlias_BASE + (0x200*32) + (0*4))               
    ;位地址 
    b_05s               EQU    (BitAlias_BASE + (0x200*32) + (1*4))               
    ;位地址 
    DlyI                EQU    0x20000204 
    DlyJ                EQU    0x20000208 
    DlyK                EQU    0x2000020C 
    SysTim              EQU    0x20000210 
     
     
    ;常数定义 
    Bit0                EQU    0x00000001 
    Bit1                EQU    0x00000002 
    Bit2                EQU    0x00000004 
    Bit3                EQU    0x00000008 
    Bit4                EQU    0x00000010 
    Bit5                EQU    0x00000020 
    Bit6                EQU    0x00000040 
    Bit7                EQU    0x00000080 
    Bit8                EQU    0x00000100 
    Bit9                EQU    0x00000200 
    Bit10               EQU    0x00000400 
    Bit11               EQU    0x00000800 
    Bit12               EQU    0x00001000 
    Bit13               EQU    0x00002000 
    Bit14               EQU    0x00004000 
    Bit15               EQU    0x00008000 
    Bit16               EQU    0x00010000 
    Bit17               EQU    0x00020000 
    Bit18               EQU    0x00040000 
    Bit19               EQU    0x00080000 
    Bit20               EQU    0x00100000 
    Bit21               EQU    0x00200000 
    Bit22               EQU    0x00400000 
    Bit23               EQU    0x00800000 
    Bit24               EQU    0x01000000 
    Bit25               EQU    0x02000000 
    Bit26               EQU    0x04000000 
    Bit27               EQU    0x08000000 
    Bit28               EQU    0x10000000 
    Bit29               EQU    0x20000000 
    Bit30               EQU    0x40000000 
    Bit31               EQU    0x80000000 
     
     
    ;向量表 
        AREA RESET, DATA, READONLY 
        DCD    MSP_TOP            ;初始化主堆栈 
        DCD    Start              ;复位向量 
        DCD    NMI_Handler        ;NMI Handler 
        DCD    HardFault_Handler  ;Hard Fault Handler 
        DCD    0                   
        DCD    0 
        DCD    0 
        DCD    0 
        DCD    0 
        DCD    0 
        DCD    0 
        DCD    0 
        DCD    0 
        DCD    0 
        DCD    0 
        DCD    SysTick_Handler    ;SysTick Handler 
        SPACE  20                 ;预留空间20字节 
     
     
     
     
     
     
     
     
                     
    ;代码段 
        AREA |.text|, CODE, READONLY 
        ;主程序开始 
        ENTRY                            
        ;指示程序从这里开始执行 
    Start 
        ;时钟系统设置 
        ldr    r0, =RCC_CR 
        ldr    r1, [r0] 
        orr    r1, #Bit16 
        str    r1, [r0] 
        ;开启外部晶振使能  
        ;启动外部8M晶振 
                                                
    ClkOk           
        ldr    r1, [r0] 
        ands   r1, #Bit17 
        beq    ClkOk 
        ;等待外部晶振就绪 
        ldr    r1,[r0] 
        orr    r1,#Bit17 
        str    r1,[r0] 
        ;FLASH缓冲器 
        ldr    r0, =FLASH_ACR 
        mov    r1, #0x00000032 
        str    r1, [r0] 
                
        ;设置PLL锁相环倍率为7,HSE输入不分频 
        ldr    r0, =RCC_CFGR 
        ldr    r1, [r0] 
        orr    r1, #(Bit18 :OR: Bit19 :OR: Bit20 :OR: Bit16 :OR: Bit14) 
        orr    r1, #Bit10 
        str    r1, [r0] 
        ;启动PLL锁相环 
        ldr    r0, =RCC_CR 
        ldr    r1, [r0] 
        orr    r1, #Bit24 
        str    r1, [r0] 
    PllOk 
        ldr    r1, [r0] 
        ands   r1, #Bit25 
        beq    PllOk 
        ;选择PLL时钟作为系统时钟 
        ldr    r0, =RCC_CFGR 
        ldr    r1, [r0] 
        orr    r1, #(Bit18 :OR: Bit19 :OR: Bit20 :OR: Bit16 :OR: Bit14) 
        orr    r1, #Bit10 
        orr    r1, #Bit1 
        str    r1, [r0] 
        ;其它RCC相关设置 
        ldr    r0, =RCC_APB2ENR 
        mov    r1, #(Bit14 :OR: Bit4 :OR: Bit2) 
        str    r1, [r0]      
     
     
        ;IO端口设置 
        ldr    r0, =GPIOC_CRL 
        ldr    r1, [r0] 
        orr    r1, #(Bit28 :OR: Bit29)          
        ;PC.7输出模式,最大速度50MHz  
        and    r1, #(~Bit30 & ~Bit31)   
        ;PC.7通用推挽输出模式 
        str    r1, [r0] 
                
        ;PA9串口0发射脚 
        ldr    r0, =GPIOA_CRH 
        ldr    r1, [r0] 
        orr    r1, #(Bit4 :OR: Bit5)          
        ;PA.9输出模式,最大速度50MHz  
        orr    r1, #Bit7 
        and    r1, #~Bit6 
        ;10:复用功能推挽输出模式 
        str    r1, [r0]    
     
     
        ldr    r0, =USART1_BRR   
        mov    r1, #0x271 
        str    r1, [r0] 
        ;配置波特率-> 115200 
                       
        ldr    r0, =USART1_CR1   
        mov    r1, #0x200c 
        str    r1, [r0] 
        ;USART模块总使能 发送与接收使能 
        ;71 02 00 00   2c 20 00 00 
                 
        ;AFIO 参数设置             
        ;Systick 参数设置 
        ldr    r0, =SYSTICKRVR           
        ;Systick装初值 
        mov    r1, #9000 
        str    r1, [r0] 
        ldr    r0, =SYSTICKCSR           
        ;设定,启动Systick 
        mov    r1, #0x03 
        str    r1, [r0] 
                
        ;NVIC                     
        ;ldr   r0, =SETENA0 
        ;mov   r1, 0x00800000 
        ;str   r1, [r0] 
        ;ldr   r0, =SETENA1 
        ;mov   r1, #0x00000100 
        ;str   r1, [r0] 
                  
        ;切换成用户级线程序模式 
        ldr    r0, =PSP_TOP                   
        ;初始化线程堆栈 
        msr    psp, r0 
        mov    r0, #3 
        msr    control, r0 
                  
        ;初始化SRAM寄存器 
        mov    r1, #0 
        ldr    r0, =Flag1 
        str    r1, [r0] 
        ldr    r0, =DlyI 
        str    r1, [r0] 
        ldr    r0, =DlyJ 
        str    r1, [r0] 
        ldr    r0, =DlyK 
        str    r1, [r0] 
        ldr    r0, =SysTim 
        str    r1, [r0] 
                   
    ;主循环            
    main            
        ldr    r0, =Flag1 
        ldr    r1, [r0] 
        tst    r1, #Bit1                 
        ;SysTick产生0.5s,置位bit 1 
        beq    main                  ;0.5s标志还没有置位       
         
        ;0.5s标志已经置位 
        ldr    r0, =b_05s                
        ;位带操作清零0.5s标志 
        mov    r1, #0 
        str    r1, [r0] 
        bl     LedFlas 
     
     
        mov    r0, #'H' 
        bl     send_a_char
    	
    	mov    r0, #'e' 
        bl     send_a_char
    	
    	mov    r0, #'l' 
        bl     send_a_char
    	
    	mov    r0, #'l' 
        bl     send_a_char
    	
    	mov    r0, #'o' 
        bl     send_a_char
    	
    	mov    r0, #' ' 
        bl     send_a_char
    	
    	mov    r0, #'w' 
        bl     send_a_char
    	
    	mov    r0, #'o' 
        bl     send_a_char
    	
    	mov    r0, #'r' 
        bl     send_a_char
    	
    	mov    r0, #'l' 
        bl     send_a_char
    	
    	mov    r0, #'d' 
        bl     send_a_char
    	
    	mov    r0, #'\n' 
        bl     send_a_char
    	
    	b      main
                
                  
                
    ;子程序 串口1发送一个字符 
    send_a_char 
        push   {r0 - r3} 
        ldr    r2, =USART1_DR   
        str    r0, [r2] 
    b1 
        ldr    r2, =USART1_SR  
        ldr    r2, [r2] 
        tst    r2, #0x40 
        beq    b1 
        ;发送完成(Transmission complete)等待 
        pop    {r0 - r3} 
        bx     lr 
     
     
                     
    ;子程序 led闪烁 
    LedFlas      
        push   {r0 - r3} 
        ldr    r0, =Flag1 
        ldr    r1, [r0] 
        tst    r1, #Bit0 
        ;bit0 闪烁标志位 
        beq    ONLED        ;0 打开led灯 
        ;1 关闭led灯 
        ldr    r0, =b_flas 
        mov    r1, #0 
        str    r1, [r0] 
        ;闪烁标志位置为0,下一状态为打开灯 
        ;PC.7输出0 
        ldr    r0, =GPIOC_BRR 
        ldr    r1, [r0] 
        orr    r1, #Bit7 
        str    r1, [r0] 
        b      LedEx 
    ONLED       
        ;0 打开led灯 
        ldr    r0, =b_flas 
        mov    r1, #1 
        str    r1, [r0] 
        ;闪烁标志位置为1,下一状态为关闭灯 
        ;PC.7输出1 
        ldr    r0, =GPIOC_BSRR 
        ldr    r1, [r0] 
        orr    r1, #Bit7 
        str    r1, [r0] 
    LedEx        
        pop    {r0 - r3} 
        bx     lr 
                                    
    ;异常程序 
    NMI_Handler 
        bx     lr 
     
     
    HardFault_Handler 
        bx     lr 
                  
    SysTick_Handler 
        ldr    r0, =SysTim 
        ldr    r1, [r0] 
        add    r1, #1 
        str    r1, [r0] 
        cmp    r1, #500 
        bcc    TickExit 
        mov    r1, #0 
        str    r1, [r0] 
        ldr    r0, =b_05s  
        ;大于等于500次 清零时钟滴答计数器 设置0.5s标志位 
        ;位带操作置1 
        mov    r1, #1 
        str    r1, [r0] 
    TickExit    
        bx     lr 
                                                                               
        ALIGN            
        ;通过用零或空指令NOP填充,来使当前位置与一个指定的边界对齐 
        END
    
    
    • 打开魔法棒->output生成hex文件
      在这里插入图片描述
    • 进行编译,没有错误即成功

    3. 烧录程序

    在这里插入图片描述

    4.串口调试

    • 打开SSCOM串口调试助手,点击打开串口,并设置波特率为115200
      在这里插入图片描述

    • 显示接收到Hello world,成功!
      在这里插入图片描述

    四. 总结

    本文介绍了STM32F103C单片机的串口协议以及RS-232 标准、RS232电平与TTL电平的区别,阐述了USB转接串口基本原理,并以CH340模块为案例介绍,并实际操作串口通信hello windows,将理论的学习运用到实践中,过程中虽然出现了不少问题,但通过不断的查询资料最终将问题解决,收获颇多。

    五. 参考文献

    RS232串口简介
    USB转串口接线方法
    USB转串口

    展开全文
  • 看了小马哥的多功能调试工具真是羡慕啊,于是也做了个高速USBhub托了个xlink, 用stm32实现 USB转串口TTL/串口232/串口485(通过跳线来实现)/NRF24L01/红外,同时支持输出一路PWM输出。反正也用不到Altra的调试,于是...

    501b52b155ee880ac583aa7c9a7b45bf.png

    看了小马哥的多功能调试工具真是羡慕啊,于是也做了个高速USBhub托了个xlink, 用stm32实现 USB转串口TTL/串口232/串口485(通过跳线来实现)/NRF24L01/红外,同时支持输出一路PWM输出。反正也用不到Altra的调试,于是就将另两路USB接了两个USB座,方便接U盘。测试了下USB转485,(因为485需要控制换向端),发现效果比想象的要好啊!与其说这是个调试工具,到不如说是个简易的stm32的开发板,接两条杜邦线就可以来调试啦。

    USB转485调试截图:

    4cfd4606291f5d5f7badb2149d83e3fd.png

    调试日志:

    2012-10-25:

    实现USB obLink调试以及USB转串口。这基本上都是以前就调好过了的。

    但是调试的时候发现oblink在下载的时候,当在Keil中设置速度最大时不稳定,经常下载失败,但是之前做的单独的oblink就没这问题,怀疑是GL850A的问题,看了下手册才知道其REF管脚要接680欧的电阻,而自己想当然的焊了1.5K的电阻,换后问题解决。

    2012-10-26:

    开始调试NRF24L01,比较顺利,照着例程很容易就给移植过来了,但是突然发现,发送和接收函数中,发送的就是固定的32字节,而接收的也是固定的32字节,于是就想修改成适合程序的风格:send(u8 *buf,u16 len),接收至少要知道接收到了几个字符!于是看了下NRF24L01的寄存器,刚好有这个寄存器,读取便可知道里面有多少数据,于是跟着修改了发送的函数,将发送的数据个数修改成任意设置的,结果发现接收那块死活接收不到数据了,于是增加了发送的个数到32字节,终于收到数据了。于是设置了下接收FIFO的大小,结果发现,发送的数据只有跟接收FIFO一样的时候,接收端才能收到数据!真是变态啊!至少要有个超时吧??于是改了就32字节了,发送的数据如果超过32字节,就拆包发,如果少于32字节,就加个0做结尾符,多发几个无用的数据,接收端就像处理字符串那样去处理吧。

    2012-10-28:

    开始调红外。当初做原理的时候,没想那么多,直接扯了条线接到一个IO上去了,结果看了下原子的程序,用的是定时器的输入捕获来做的,于是想改成收到中断后开定时器的方式来解决问题。刚好找到了他之前的一个版本的程序,修改了下居然OK了。而且效果也很不错,用家里的DVD遥控器试了下,也没问题。OK,暂告一段落。

    展开全文
  • 物理层(1)RS-232 标准 一、串口通讯协议 1.简介 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单、便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常...

    一、串口通讯协议

    1.简介

    • 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单、便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通 讯方式输出调试信息。
    • 在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设;STM32
    • 标准库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。
    名称组成作用
    物理层具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输
    协议层规定通讯逻辑,统一收发双方的数据打包、解包标准。
    • 在串口通讯的物理层有很多标准及变种,下面主要讲解 RS-232 标准

    2.RS-232 标准

    • RS-232 标准主要规定了信号的用途,通讯接口以及信号的电平标准

    RS-232 标准的串口设备间常见的通讯结构:
    在这里插入图片描述
    由图可知两个通讯设备通过DB9接口相连,并使用RS-232标准进行信号的传输。

    • 那为什么需要电平转换芯片呢?

    原因很简单,因为控制器无法直接识别RS-232电平标准的信号,因此信号只能通过“电平转换芯片”转换成控制器能识别的“TTL 标准”的电平信号。接下来就介绍一下“RS232标准”的电平与“TTL标准”的电平有什么区别

    (1)RS232电平与TTL电平的区别

    • 根据通讯使用的电平标准不同,串口通讯可分为 TTL标准和 RS-232标准
    标准名称逻辑1逻辑0
    TLL2.4V~5V0~0.5V
    RS-232-15V~3V+3V~+15V

    从表格中不难看出,两种标准划分的逻辑电压不同。在电子电路中常使用 TTL 的电平标准,理想状态下,使用 5V 表示二进制逻辑 1,使用 0V 表示逻辑 0;而为了增加串口通讯的远距离传输及抗干扰能力,它使用-15V表示逻辑 1,+15V 表示逻辑 0

    • 下图为用RS232与TTL电平校准表示同一个信号时的对比
      在这里插入图片描述

    (2)RS-232 信号线

    • RS-232 串口标准常用于计算机、路由与调制调(MODEN,俗称“猫”)之间的通讯 ,在这种通讯系统中,设备被分为数据终端设备DTE(计算机、路由)和数据通讯设备 DCE(调制调解器)
    • 台式计算机中一般会有 RS-232 标准的 COM 口(也称 DB9 接口)其中接线口以针式引出信号线的称为公头,以孔式引出信号线的称为母头。在计算机中一般引出公头接口,而在调制调解器设备中引出的一般为母头,使用上图中的串口线即可把它与计算机连接起来。通讯时,串口线中传输的信号就是使用前面讲解的 RS-232 标准调制的。
      在这里插入图片描述
    • 下面介绍各个接口的名称和基本作用
    名称符号数据方向说明
    载波检测DCDDTE→DCE用于DTE 告知对方,本机是否收到对方的载波信号
    接收数据RXDDTE←DCE数据接收信号,即输入
    发送数据TXDDTE→DCE数据发送信号,即输出
    数据终端DTRDTE→DCE用于DTE 向对方告知本机是否已准备好
    信号地GND地线,两个通讯设备之间的地电位可能不一样,这会影响收发双方的电平信号,所以两个串口设备之间必须要使用地线连接,即共地
    数据设备DSRDTE←DCE用于 DCE告知对方本机是否处于待命状态
    请求发送RTSDTE→DCEDTE 请求DCE 本设备向 DCE 端发送数据
    允许发送CTSDTE←DCEDCE 回应对方的RTS 发送请求,告知对方是否可以发送数据
    响铃指示RIDTE←DCE表示 DCE 端与线路已接通

    注意:两个设备之间的 TXD 与 RXD 应交叉相连
    在这里插入图片描述

    二、USB转串口

    1.基本工作原理

    USB转串口即实现计算机USB接口到物理串口之间的转换。可以为没有串口的计算机或其他USB主机增加串口,使用USB转串口设备等于将传统的串口设备变成了即插即用的USB设备。

    USB主机检测到USB转串口设备插入后,首先会对设备复位,然后开始USB枚举过程。USB枚举时过程会获取设备描述符、配置描述符、接口描述符等。描述符中会包含USB设备的厂商ID,设备ID和Class类别等信息。操作系统会根据该信息为设备匹配相应的USB设备驱动。

    USB虚拟串口的实现在系统上依赖于USB转串口驱动,一般由厂家直接提供,也可以使用操作系统自带的CDC类串口驱动等。驱动主要分为2个功能,其一注册USB设备驱动,完成对USB设备的控制与数据通讯,其二注册串口驱动,为串口应用层提供相应的实现方法。

    串口收发对应的驱动数据流向一览:

    发生or接收数据流向
    串口发送串口应用发送数据→USB串口驱动获取数据→驱动将数据经过USB通道发送给USB串口设备→USB串口设备接收到数据通过串口发送
    串口接收USB串口设备接收串口数据→将串口数据经过USB打包后上传给USB主机→USB串口驱动获取到通过USB上传的串口数据→驱动将数据保存在串口缓冲区提供给串口应用读取

    2.CH340模块介绍

    • 实物图
      在这里插入图片描述
    • 内部结构图
      在这里插入图片描述
      注意:RXD接收端子接外部TX发送端,TXD发送端子接外部RX接收端

    三、实例

    1.实例描述

    完成一个STM32的USART串口通讯程序(查询方式即可,暂不要求采用中断方式),要求:

    • 设置波特率为115200,1位停止位,无校验位;

    • STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。

    2.实例流程

    (1)创建工程

    • 打开KEIL5 创建一个新项目工程,右击source,添加一个新的文件
      在这里插入图片描述
    • 因为是汇编语言,所以选择创建Asm文件
      在这里插入图片描述
    • 创建完成
      在这里插入图片描述

    (2)代码部分

    代码:

    ;RCC寄存器地址映像             
    RCC_BASE            EQU    0x40021000 
    RCC_CR              EQU    (RCC_BASE + 0x00) 
    RCC_CFGR            EQU    (RCC_BASE + 0x04) 
    RCC_CIR             EQU    (RCC_BASE + 0x08) 
    RCC_APB2RSTR        EQU    (RCC_BASE + 0x0C) 
    RCC_APB1RSTR        EQU    (RCC_BASE + 0x10) 
    RCC_AHBENR          EQU    (RCC_BASE + 0x14) 
    RCC_APB2ENR         EQU    (RCC_BASE + 0x18) 
    RCC_APB1ENR         EQU    (RCC_BASE + 0x1C) 
    RCC_BDCR            EQU    (RCC_BASE + 0x20) 
    RCC_CSR             EQU    (RCC_BASE + 0x24) 
                                  
    ;AFIO寄存器地址映像            
    AFIO_BASE           EQU    0x40010000 
    AFIO_EVCR           EQU    (AFIO_BASE + 0x00) 
    AFIO_MAPR           EQU    (AFIO_BASE + 0x04) 
    AFIO_EXTICR1        EQU    (AFIO_BASE + 0x08) 
    AFIO_EXTICR2        EQU    (AFIO_BASE + 0x0C) 
    AFIO_EXTICR3        EQU    (AFIO_BASE + 0x10) 
    AFIO_EXTICR4        EQU    (AFIO_BASE + 0x14) 
                                                               
    ;GPIOA寄存器地址映像              
    GPIOA_BASE          EQU    0x40010800 
    GPIOA_CRL           EQU    (GPIOA_BASE + 0x00) 
    GPIOA_CRH           EQU    (GPIOA_BASE + 0x04) 
    GPIOA_IDR           EQU    (GPIOA_BASE + 0x08) 
    GPIOA_ODR           EQU    (GPIOA_BASE + 0x0C) 
    GPIOA_BSRR          EQU    (GPIOA_BASE + 0x10) 
    GPIOA_BRR           EQU    (GPIOA_BASE + 0x14) 
    GPIOA_LCKR          EQU    (GPIOA_BASE + 0x18) 
                                                           
    ;GPIO C口控制                   
    GPIOC_BASE          EQU    0x40011000 
    GPIOC_CRL           EQU    (GPIOC_BASE + 0x00) 
    GPIOC_CRH           EQU    (GPIOC_BASE + 0x04) 
    GPIOC_IDR           EQU    (GPIOC_BASE + 0x08) 
    GPIOC_ODR           EQU    (GPIOC_BASE + 0x0C) 
    GPIOC_BSRR          EQU    (GPIOC_BASE + 0x10) 
    GPIOC_BRR           EQU    (GPIOC_BASE + 0x14) 
    GPIOC_LCKR          EQU    (GPIOC_BASE + 0x18) 
                                                               
    ;串口1控制                       
    USART1_BASE         EQU    0x40013800 
    USART1_SR           EQU    (USART1_BASE + 0x00) 
    USART1_DR           EQU    (USART1_BASE + 0x04) 
    USART1_BRR          EQU    (USART1_BASE + 0x08) 
    USART1_CR1          EQU    (USART1_BASE + 0x0c) 
    USART1_CR2          EQU    (USART1_BASE + 0x10) 
    USART1_CR3          EQU    (USART1_BASE + 0x14) 
    USART1_GTPR         EQU    (USART1_BASE + 0x18) 
                                
    ;NVIC寄存器地址                
    NVIC_BASE           EQU    0xE000E000 
    NVIC_SETEN          EQU    (NVIC_BASE + 0x0010)     
    ;SETENA寄存器阵列的起始地址 
    NVIC_IRQPRI         EQU    (NVIC_BASE + 0x0400)     
    ;中断优先级寄存器阵列的起始地址 
    NVIC_VECTTBL        EQU    (NVIC_BASE + 0x0D08)     
    ;向量表偏移寄存器的地址     
    NVIC_AIRCR          EQU    (NVIC_BASE + 0x0D0C)     
    ;应用程序中断及复位控制寄存器的地址                                                
    SETENA0             EQU    0xE000E100 
    SETENA1             EQU    0xE000E104 
                                
                                  
    ;SysTick寄存器地址            
    SysTick_BASE        EQU    0xE000E010 
    SYSTICKCSR          EQU    (SysTick_BASE + 0x00) 
    SYSTICKRVR          EQU    (SysTick_BASE + 0x04) 
                                  
    ;FLASH缓冲寄存器地址映像     
    FLASH_ACR           EQU    0x40022000 
                                 
    ;SCB_BASE           EQU    (SCS_BASE + 0x0D00) 
                                 
    MSP_TOP             EQU    0x20005000               
    ;主堆栈起始值                
    PSP_TOP             EQU    0x20004E00               
    ;进程堆栈起始值             
                                
    BitAlias_BASE       EQU    0x22000000               
    ;位带别名区起始地址         
    Flag1               EQU    0x20000200 
    b_flas              EQU    (BitAlias_BASE + (0x200*32) + (0*4))               
    ;位地址 
    b_05s               EQU    (BitAlias_BASE + (0x200*32) + (1*4))               
    ;位地址 
    DlyI                EQU    0x20000204 
    DlyJ                EQU    0x20000208 
    DlyK                EQU    0x2000020C 
    SysTim              EQU    0x20000210 
     
     
    ;常数定义 
    Bit0                EQU    0x00000001 
    Bit1                EQU    0x00000002 
    Bit2                EQU    0x00000004 
    Bit3                EQU    0x00000008 
    Bit4                EQU    0x00000010 
    Bit5                EQU    0x00000020 
    Bit6                EQU    0x00000040 
    Bit7                EQU    0x00000080 
    Bit8                EQU    0x00000100 
    Bit9                EQU    0x00000200 
    Bit10               EQU    0x00000400 
    Bit11               EQU    0x00000800 
    Bit12               EQU    0x00001000 
    Bit13               EQU    0x00002000 
    Bit14               EQU    0x00004000 
    Bit15               EQU    0x00008000 
    Bit16               EQU    0x00010000 
    Bit17               EQU    0x00020000 
    Bit18               EQU    0x00040000 
    Bit19               EQU    0x00080000 
    Bit20               EQU    0x00100000 
    Bit21               EQU    0x00200000 
    Bit22               EQU    0x00400000 
    Bit23               EQU    0x00800000 
    Bit24               EQU    0x01000000 
    Bit25               EQU    0x02000000 
    Bit26               EQU    0x04000000 
    Bit27               EQU    0x08000000 
    Bit28               EQU    0x10000000 
    Bit29               EQU    0x20000000 
    Bit30               EQU    0x40000000 
    Bit31               EQU    0x80000000 
     
     
    ;向量表 
        AREA RESET, DATA, READONLY 
        DCD    MSP_TOP            ;初始化主堆栈 
        DCD    Start              ;复位向量 
        DCD    NMI_Handler        ;NMI Handler 
        DCD    HardFault_Handler  ;Hard Fault Handler 
        DCD    0                   
        DCD    0 
        DCD    0 
        DCD    0 
        DCD    0 
        DCD    0 
        DCD    0 
        DCD    0 
        DCD    0 
        DCD    0 
        DCD    0 
        DCD    SysTick_Handler    ;SysTick Handler 
        SPACE  20                 ;预留空间20字节 
     
     
     
     
     
     
     
     
                     
    ;代码段 
        AREA |.text|, CODE, READONLY 
        ;主程序开始 
        ENTRY                            
        ;指示程序从这里开始执行 
    Start 
        ;时钟系统设置 
        ldr    r0, =RCC_CR 
        ldr    r1, [r0] 
        orr    r1, #Bit16 
        str    r1, [r0] 
        ;开启外部晶振使能  
        ;启动外部8M晶振 
                                                
    ClkOk           
        ldr    r1, [r0] 
        ands   r1, #Bit17 
        beq    ClkOk 
        ;等待外部晶振就绪 
        ldr    r1,[r0] 
        orr    r1,#Bit17 
        str    r1,[r0] 
        ;FLASH缓冲器 
        ldr    r0, =FLASH_ACR 
        mov    r1, #0x00000032 
        str    r1, [r0] 
                
        ;设置PLL锁相环倍率为7,HSE输入不分频 
        ldr    r0, =RCC_CFGR 
        ldr    r1, [r0] 
        orr    r1, #(Bit18 :OR: Bit19 :OR: Bit20 :OR: Bit16 :OR: Bit14) 
        orr    r1, #Bit10 
        str    r1, [r0] 
        ;启动PLL锁相环 
        ldr    r0, =RCC_CR 
        ldr    r1, [r0] 
        orr    r1, #Bit24 
        str    r1, [r0] 
    PllOk 
        ldr    r1, [r0] 
        ands   r1, #Bit25 
        beq    PllOk 
        ;选择PLL时钟作为系统时钟 
        ldr    r0, =RCC_CFGR 
        ldr    r1, [r0] 
        orr    r1, #(Bit18 :OR: Bit19 :OR: Bit20 :OR: Bit16 :OR: Bit14) 
        orr    r1, #Bit10 
        orr    r1, #Bit1 
        str    r1, [r0] 
        ;其它RCC相关设置 
        ldr    r0, =RCC_APB2ENR 
        mov    r1, #(Bit14 :OR: Bit4 :OR: Bit2) 
        str    r1, [r0]      
     
     
        ;IO端口设置 
        ldr    r0, =GPIOC_CRL 
        ldr    r1, [r0] 
        orr    r1, #(Bit28 :OR: Bit29)          
        ;PC.7输出模式,最大速度50MHz  
        and    r1, #(~Bit30 & ~Bit31)   
        ;PC.7通用推挽输出模式 
        str    r1, [r0] 
                
        ;PA9串口0发射脚 
        ldr    r0, =GPIOA_CRH 
        ldr    r1, [r0] 
        orr    r1, #(Bit4 :OR: Bit5)          
        ;PA.9输出模式,最大速度50MHz  
        orr    r1, #Bit7 
        and    r1, #~Bit6 
        ;10:复用功能推挽输出模式 
        str    r1, [r0]    
     
     
        ldr    r0, =USART1_BRR   
        mov    r1, #0x271 
        str    r1, [r0] 
        ;配置波特率-> 115200 
                       
        ldr    r0, =USART1_CR1   
        mov    r1, #0x200c 
        str    r1, [r0] 
        ;USART模块总使能 发送与接收使能 
        ;71 02 00 00   2c 20 00 00 
                 
        ;AFIO 参数设置             
        ;Systick 参数设置 
        ldr    r0, =SYSTICKRVR           
        ;Systick装初值 
        mov    r1, #9000 
        str    r1, [r0] 
        ldr    r0, =SYSTICKCSR           
        ;设定,启动Systick 
        mov    r1, #0x03 
        str    r1, [r0] 
                
        ;NVIC                     
        ;ldr   r0, =SETENA0 
        ;mov   r1, 0x00800000 
        ;str   r1, [r0] 
        ;ldr   r0, =SETENA1 
        ;mov   r1, #0x00000100 
        ;str   r1, [r0] 
                  
        ;切换成用户级线程序模式 
        ldr    r0, =PSP_TOP                   
        ;初始化线程堆栈 
        msr    psp, r0 
        mov    r0, #3 
        msr    control, r0 
                  
        ;初始化SRAM寄存器 
        mov    r1, #0 
        ldr    r0, =Flag1 
        str    r1, [r0] 
        ldr    r0, =DlyI 
        str    r1, [r0] 
        ldr    r0, =DlyJ 
        str    r1, [r0] 
        ldr    r0, =DlyK 
        str    r1, [r0] 
        ldr    r0, =SysTim 
        str    r1, [r0] 
                   
    ;主循环            
    main            
        ldr    r0, =Flag1 
        ldr    r1, [r0] 
        tst    r1, #Bit1                 
        ;SysTick产生0.5s,置位bit 1 
        beq    main                  ;0.5s标志还没有置位       
         
        ;0.5s标志已经置位 
        ldr    r0, =b_05s                
        ;位带操作清零0.5s标志 
        mov    r1, #0 
        str    r1, [r0] 
        bl     LedFlas 
     
     
        mov    r0, #'H' 
        bl     send_a_char
    	
    	mov    r0, #'e' 
        bl     send_a_char
    	
    	mov    r0, #'l' 
        bl     send_a_char
    	
    	mov    r0, #'l' 
        bl     send_a_char
    	
    	mov    r0, #'o' 
        bl     send_a_char
    	
    	mov    r0, #' ' 
        bl     send_a_char
    	
    	mov    r0, #'w' 
        bl     send_a_char
    	
    	mov    r0, #'o' 
        bl     send_a_char
    	
    	mov    r0, #'r' 
        bl     send_a_char
    	
    	mov    r0, #'l' 
        bl     send_a_char
    	
    	mov    r0, #'d' 
        bl     send_a_char
    	
    	mov    r0, #'\n' 
        bl     send_a_char
    	
    	b      main
                
                  
                
    ;子程序 串口1发送一个字符 
    send_a_char 
        push   {r0 - r3} 
        ldr    r2, =USART1_DR   
        str    r0, [r2] 
    b1 
        ldr    r2, =USART1_SR  
        ldr    r2, [r2] 
        tst    r2, #0x40 
        beq    b1 
        ;发送完成(Transmission complete)等待 
        pop    {r0 - r3} 
        bx     lr 
     
     
                     
    ;子程序 led闪烁 
    LedFlas      
        push   {r0 - r3} 
        ldr    r0, =Flag1 
        ldr    r1, [r0] 
        tst    r1, #Bit0 
        ;bit0 闪烁标志位 
        beq    ONLED        ;0 打开led灯 
        ;1 关闭led灯 
        ldr    r0, =b_flas 
        mov    r1, #0 
        str    r1, [r0] 
        ;闪烁标志位置为0,下一状态为打开灯 
        ;PC.7输出0 
        ldr    r0, =GPIOC_BRR 
        ldr    r1, [r0] 
        orr    r1, #Bit7 
        str    r1, [r0] 
        b      LedEx 
    ONLED       
        ;0 打开led灯 
        ldr    r0, =b_flas 
        mov    r1, #1 
        str    r1, [r0] 
        ;闪烁标志位置为1,下一状态为关闭灯 
        ;PC.7输出1 
        ldr    r0, =GPIOC_BSRR 
        ldr    r1, [r0] 
        orr    r1, #Bit7 
        str    r1, [r0] 
    LedEx        
        pop    {r0 - r3} 
        bx     lr 
                                    
    ;异常程序 
    NMI_Handler 
        bx     lr 
     
     
    HardFault_Handler 
        bx     lr 
                  
    SysTick_Handler 
        ldr    r0, =SysTim 
        ldr    r1, [r0] 
        add    r1, #1 
        str    r1, [r0] 
        cmp    r1, #500 
        bcc    TickExit 
        mov    r1, #0 
        str    r1, [r0] 
        ldr    r0, =b_05s  
        ;大于等于500次 清零时钟滴答计数器 设置0.5s标志位 
        ;位带操作置1 
        mov    r1, #1 
        str    r1, [r0] 
    TickExit    
        bx     lr 
                                                                               
        ALIGN            
        ;通过用零或空指令NOP填充,来使当前位置与一个指定的边界对齐 
        END
    
    • 编译没有出错
      在这里插入图片描述

    (3)烧录程序

    在这里插入图片描述

    • 下载成功
      在这里插入图片描述

    (4)串口调试

    • 下面打开上位机,串口通信助手,我用的是SSCOM,点击打开左上角通信端口选择CH340
      在这里插入图片描述
    • 点击打开串口
      在这里插入图片描述

    3.结果显示

    显示接收到Hello world,成功!
    在这里插入图片描述

    四、总结

    本篇博客介绍了STM32F103单片机的串口协议,介绍了RS-232 标准,解释了RSS-232转为TLL的原因以及其原理,并用两者的电平做了对比。阐述了USB转接串口基本原理,并以CH340模块为案例介绍,并通过串口向上位机输入Hello World,将理论的学习运用到实践中,希望能够给各位读者帮助,同时也希望各位读者能够自己尝试去实验,只有通过实验才能够真正熟知和掌握知识。若博客中有不足或者缺漏,望各位指出

    五、参考文献

    USB转串口CH340接线方法
    USB转串口原理及应用
    基于 MDK 创建 STM32 汇编程序:串口输出 Hello world

    展开全文
  • USB转串口CH340各封装官方原理图、PCB参考电路图下载2018-3-23[复制链接]大家好,针对USB转串口芯片CH340,整理如下资料供大家参考,@管理员,帖子若有不符合要求的地方麻烦联系我修改,谢谢!CH340/CH341系列产品...
  • USB3300 ULPI Board/schematic/USB3300 ULPI Board_SCH.pdfUSB3300 ULPI Board/code/STM32F4XX/USB HS HID/Utilities/Third_Party/fat_fs/readme.txtUSB3300 ULPI Board/code/STM32F4XX/USB HS HID/Utilities/Third_...
  • 1 前言USB是一种应用于PC领域的接口技术,+用于规范电脑与外部设备的连接和通讯。USB接口可支持设备的即插即用和热插拔功能,还可连接多达127种外设,如...这里提出一种基于FT2-232H的USB-RS232转换模块设计方案。2...
  • 产品介绍1、采用原装FT232BL工业级芯片,外置EEPRON(93C46)更稳定2、支持Windows 103、支持3种供电模式:5V对外供电、3.3V对外供电、由外部供电(要求3.3V-5V)4、带3个LED:TXD LED、EXD LED、ROWERLED5、GND、RXD、...
  • 单片机usb供电电路原理图详解

    千次阅读 2021-02-05 07:28:06
    单片机usb供电电路原理图(一)本文以500ms为开关最高开闭时间,介绍一种既能用交流供电又能用电池供电的电源电路。该电源电路供电能力约为1W。该电源电路在正常情况下可用交流供电。用市售的听单放机的小变压器即可。...
  • 描述USB转TTL的硬件设备:USB转TTL主机一台;芯片选用PL-2303HXUSBTTL刷机线,采用进口PL2303HX芯片。连接上电脑并安装驱动后,电脑即扩展出一个COM3或COM4....等的串口,配合相应软件就能对路由器、机顶盒或接收机...
  • CS5266 dmeoboard原理图|TYPECHDMI+PD+USB3.0拓展坞三合一优化方案 CS5266 Capstone是Type-CHDMI带PD3.0快充的音视频转换芯片。 CS5266接收器端口将信道配置(CC)控制器、电源传输(PD)控制器、Billboard...
  • Capstone CS5267AN是一款高性能Type-C/DP1.4至HDMI2.0b转换器,设计用于将USB Type-C源或DP1.4源连接至HDMI2.0b接收器。CS5267AN集成了一个兼容DP1.4的接收器HDMI2.0b兼容发射机。 DP接口包括4条主通道、...
  • 硬件平台:stm32f407+ft232RL按照手册上的电路,我用USB接口给ft232RL供电,如下:0288f358ccd0026690b2443b41d98f0f_224.png (0 Bytes, 下载次数: 12)2010-12-14 22:54 上传我在这个电路的基础上我用单片机串口和...
  • 基于GL3520 USB3.0集线器USB HUB电路AD设计硬件原理图+PCB+集成库,采用2层板设计,板子大小为100x100mm,双面布局布线,1拖4 USB3.0 HUB端口,主要器件为GL3520,XM5062,CP2102,FT232R等。 Altium Designer 设计...
  • 一、串口协议和RS-232标准 1.串口通讯 串口通讯 (Serial Communication)是一种设备间非常常用的串行通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。 通讯协议,我们以分层的方式来理解,最基本...
  • USB转串口电路之CH340G

    2021-01-19 22:36:17
    USB转串口电路之CH340G 在实际应用中,我们经常会使用到USB转串口作为调试工具,USB接到PC电脑上,串口连接开发板。USB转串口是很常见的,在淘宝上也能一搜一大把的。不过我们有时需要把这个电路集成到我们自己的...
  • CP2102 USB转串口电路设计以及介绍

    千次阅读 2021-03-07 16:34:06
    CP2102 USB转串口电路设计以及介绍 CP2102 CP2102是高度集成的USB至UART桥接控制器,可使用最少的组件和PCB面积将RS 232设计更新为USB。 CP2102 / 9包括一个USB 2.0全速功能控制器,USB收发器,振荡器,EEPROM或...
  • YDOOK: USB TTL 模块 连线使用实例教程 © YDOOK JY Lin 文章目录YDOOK: USB TTL 模块 连线使用实例教程© YDOOK JY Lin1. 首先安装 模块的芯片驱动:CH340G 驱动:2. 安装成功后,打开设备管理器:此时,CH...
  • 本文主要介绍串口通讯协议和RS-232的介绍以及USB/TTL转232模块的工作原理 一、串口通讯协议和RS-232 1.简介 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单、便捷,因此大部分...
  • 实验室XILINX下载器常常存在不够用的情况,将下载器集成到PCB上这样调试时只需要一条USB线缆就行啦,再也不用到处找下载器了呜呜,XILINX FPGA支持JTAG最高优先级调试,因此只需要将JTAG转换为USB就行啦 JTAG-SMT2-...
  • 串口通讯2.RS-2323.RS232电平与TTL电平的区别(1).TTL电平标准(2)具体区别二、USB/TTL转232"模块(以CH340芯片模块为例)的工作原理。参考 一、串口协议和RS-232标准 1.串口通讯 串口通讯 (Serial ...
  • 近期使用CH9102 USB转串口芯片成功用在原有使用CP2102的产品板上,整个替换和验证过程还是很顺利的,顺带写个blog做个记录。 原项目上使用CP2102搭载ESP32实现Arduino物联网应用,采用USB转串口芯片实现串口下载,...
  • TTL转USB电路(CH340G)

    千次阅读 2021-01-29 11:58:42
    RS-232C接口定义 引脚 定义 符号 1 载波检测 DCD(Data Carrier Detect) 2 接收数据 RXD(Received Data) 3 发送数据 TXD(Transmit Data) 4 数据终端就绪 DTR(Data Terminal Ready) 5 信号地 SG(Signal ...
  • 开发板是创维特jx2410,usb转串口线的芯片是pl2303。还好是这个芯片,让我没费多少力气,就达成了目的。因为linux对它已经支持了,我们只要编译、加载它的驱动就ok了。驱动源码一般来说USB转串口的驱动已经集成在...
  • 常见芯片方案 按价格从高到低排个序 ... FT232BM为较早型号, FT232RL等为较新的型号, 有多种封装 FT232BM LQFP32封装(四方扁平式密脚) FT232BL LQFP32封装(四方扁平式密脚) FT232RL SSOP28封装(双列密脚) FT...
  • YDOOK: USB TTL 模块 与 ESP8266 WiFi 串口通讯实验 连线实例教程 © YDOOK JY Lin 文章目录YDOOK: USB TTL 模块 与 ESP8266 WiFi 串口通讯实验 连线实例教程© YDOOK JY Lin1. 首先安装 模块的芯片驱动:CH...
  • esp32-cam的原理图

    千次阅读 2021-07-27 11:50:13
  • USB OTG基本原理

    2021-03-24 10:39:55
    说明:USB OTG 标准在完全兼容 USB2.0 标准(ehci)的基础上,增添了电源管理(节省功耗)功能, 它允许设备既可作为主机,也可作为外设操作(两用 OTG)。OTG 两用设备完全符合 USB2.0 标准,并可 提供一定的主机...
  • 硕盟SM-A44是一款USB3.0RJ45千兆网口转换器。这是一种高性能和低开销的解决方案。转换USB端口到10 / 100/ 1000M以太网端口可以让您的笔记本,台式机电脑能够通过USB接口连接千兆端口快速访问以太网网络。无需购买...
  • 很久没有继续研究wddm hook了,最后一次研究还在3年前,不得不说虽然应用的少,但是wddm hook却是很有技术含量的一项技术,而且实用性很高,我们...去年,深圳某硬件公司找到我,他们正在做usb转HDMI或者USB转VGA的硬件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,628
精华内容 14,651
关键字:

usb转232原理图