精华内容
下载资源
问答
  • STM32串口通讯实现——USB转串口

    千次阅读 2021-10-22 16:35:06
    一、RS232,TTL简介 ... TTL电平为5V为逻辑正,0为逻辑负,这样的数据...了解了RS232和TTL两种通信标准后,就可以开始了解串口通信USART了。 UART :通用异步收发传输器,它将要传输的资料在串行通信与并行通信之间加以

    一、RS232,TTL简介

    RS232是个人计算机的通讯接口之一,一般会有两组RS323接口,分别为COM1和COM2,电平标准为+12V为逻辑负,-12为逻辑正。
    TTL电平为5V为逻辑正,0为逻辑负,这样的数据通信及电平规定方式,被称做TTL(晶体管-晶体管逻辑电平)信号系统。这是计算机处理器控制的设备内部各部分之间通信的标准技术。

    二、串口通讯原理

    了解了RS232和TTL两种通信标准后,就可以开始了解串口通信USART了。
    UART :通用异步收发传输器,它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片。同样它是串行通信接口 UART只有数据线收和发,并无时钟线,故为异步串行通信接口,可以实现全双工传输和接收;在嵌入式中,常用与上位机与外设通信。
    串口通信的概念非常简单,串口按位发送和接收字节。尽管比按字节的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。一般来说有3种串口通讯方式。

    1. 两设备通过232标准通讯
      用控制器发出TTL电平,然后经过电平转换芯片转换为RS232电平,然后通过D89接口进行通讯

    2. 用USB转串口进行通讯
      用控制器发出TTL电平,然后经过电平转换芯片转换,然后通过USB接口和USB转串口进行通讯,需要安装CH340驱动。本博客就主要针对这种方式进行串口通讯。

    3. TTL电平之间直接通讯
      不需要控制器和转换芯片,直接使用TTL电平进行通讯。

    三、生成文件

    1.建立工程

    打开Keil5软件,新建一个工程,然后添加一个.s文件,点击魔法棒选择Output选项,勾选Creat Hex File。
    在这里插入图片描述

    2.输入代码

    在.s文件当中输入以下代码,代码是在别人的博客当中复制的。

    ;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.生成.hex文件

    输入代码编译后就会在工程目录下生成一个.hex文件
    在这里插入图片描述

    四、烧录程序

    打开mcuisp软件,然后选择生成的.hex文件进行烧录,记得进行设置,如图所示
    在这里插入图片描述

    五、运行调试

    烧录完成后复位,打开串口调试助手,找到生成的.hex文件,然后将参数设置好,因为都是默认的,所以这里不需要设置,然后点击打开串口就完成了
    在这里插入图片描述

    六、波形观测

    同样的,我们可以通过Keil5进行仿真,用逻辑分析仪观测波形,不需要接入硬件。具体打开方法可以参考我的上一篇博客链接: 使用STM32CubeMX生成代码点亮流水灯——基于HAL库.
    点击Setup Logic Analyzer添加引脚,在也可以选择View里面选择Symbol window然后在Special Funtion Register里面选择USART1_SR引脚,然后拖到逻辑分析仪窗口,点击Setup Logic Analyzer设置一下,Type设置为Bit
    在这里插入图片描述
    最后点击run运行即可
    在这里插入图片描述

    七、总结

    通过此次实验,了解到了串口通讯的方式之一——USB转串口进行通讯。具体的操作其实很简单,但是需要了解背后的原理,才能进一步掌握串口通讯的方式。并且通过Keil5的逻辑分析仪的仿真波形也是非常有用的观测实验结果的方式,并且能够迅速的查找错误,如果程序出错,根据波形能够直观的了解程序运行错误的步骤。
    参考资料: 基于 MDK 创建 STM32 汇编程序:串口输出 Hello world.

    展开全文
  • [知道串口轉usb](https://img-ask.csdn.net/upload/201811/22/1542851006_844269.png) 圖二: ![這是串口的](https://img-ask.csdn.net/upload/201811/22/1542851037_642924.png) # **提問:圖一圖二可...
  • FTDI USB转串口32位WIN7驱动及安装注意事项
  • USB转串口电路设计详解

    千次阅读 2021-11-19 20:28:05
    USB转串口电路设计一:简介二:原理图设计 一:简介 USB转串口芯片有CH340、CP2102、PL2303、FT232等。我们选择哪一个呢?CH340是国产芯片,其他的是进口芯片。CH340批量价1.5元每个,一般应用方面,性能已经足够。...

    USB转串口电路设计

    一:简介

    USB转串口芯片有CH340、CP2102、PL2303、FT232等。我们选择哪一个呢?CH340是国产芯片,其他的是进口芯片。CH340批量价1.5元每个,一般应用方面,性能已经足够。PL2303山寨货太多,8块左右。CP2102批量价5.2元,它是QFN封装,对于新手不易焊接。FT232批量价在30元左右,一般用在工业级环境。
    一般情况下:我们选择CH340作为USB转串口芯片。
    CH340是什么芯片:
    CH340是一个USB总线的转接芯片,可以实现USB转串口、USB转IrDA红外或者USB转打印口。
    功能划分:
    在这里插入图片描述

    功能确定好之后,就需要根据具体的应用需求来进行具体型号选型。根据表格中内容,主要的区别在于转串口功能芯片之间。首先先列举下芯片共同特性。
    支持5V与3.3V供电;通讯波特率:50bps~2Mbps
    下面再根据芯片间功能差异进行划分,如下表所示:
    USB转串口类划分
    在这里插入图片描述
    备注:
    3线串口:TXD、RXD、GND
    6线串口:RTS/CTS、DTR/DSR、DCD、RI
    9线串口:3线普通串口 + 6线的MODEM信号,可用于MODEM设备连接,串口硬件流控等。
    设计注意点:
    电压匹配问题:芯片是5V供电,那么串口输出和采样都是5V;如果是3.3V供电,那么标准就成了3.3V,因此在实际使用的时候,串口连接到的对端设备需要注意电压匹配的问题。其中在5V供电模式下,是可以与3.3V系统兼容的,反过来则不可以,如果 CH340是3.3V供电,那么不可以接5V系统,会损坏芯片。另外如果对端是1.8V系统,那么是不能与CH340的3.3V模式兼容的,此时输出和采样会出错。最好加一些器件来升降压来进行电压匹配。因此设计时确认好对端串口电平范围,然后决定 CH340 工作在3.3V或者5V工作模式。
    5V供电时芯片V3引脚需要接一个104电容到地,3.3V供电时直接将V3脚与 3.3V 电源引脚短接就可以了。

    二:原理图设计

    在这里插入图片描述
    CP2105:
    CP2105在嵌入式系统中应用的优势:
    1、双串口转换成USB,可以节省线缆数量,方便调试、生产
    2、尺寸小,利于小型化
    3、电路简单,外围器件少
    CP2105采用24-pin QFN (4 x 4 mm)封装,非常适合高密度设计的嵌入式系统应用,其内部具有一个3.45V输出电压调节器,因此可以允许将其配置成通过USB总线供电设备或者自供电设备。
    1、通过USB总线供电,此时REGIN引脚与VBUS相连,其VDD引脚会有电压输出,可以用来给其他设备供电。
    2、若采用自供电,则需要将REGIN引脚连接到板载5V。

    更多内容,请关注硬件帮!
    在这里插入图片描述

    展开全文
  • USB转RS485串口电路设计

    千次阅读 2020-06-28 19:54:24
    USB转串口芯片的串口信号一般为TTL/CMOS电平,在实现半双工 RS485 串口时需要外接485电平转换芯片,设计中需要有信号来控制 485 转接芯片的发送和接收使能端,建议选择自带485控制引脚的转接芯片(如 CH340/CH342...

    USB转串口芯片的串口信号一般为 TTL/CMOS电平,在实现半双工 RS485 串口时需要外接485电平转换芯片,设计中需要有信号来控制 485 转接芯片的发送和接收使能端,建议选择自带485控制引脚的转接芯片(如 CH340/CH342 系列芯片的 TNOW 引脚),该引脚默认为低电平,当串口处于发送状态时会自动拉高处于有效状态,发送完成再恢复低电平。同理,可以延伸到其他应用场景,如单片机串口转485电路设计中可以使用GPIO口来控制485转接芯片的发送和接收使能。

    以MAX485为例:

    1. DE为发送使能,RE为接收使能,DI为TTL/CMOS串口发送,RO为TTL/CMOS串口接收。

    2. TNOW控制信号脚同时连接DE和RE;串口发送状态下,TNOW输出高电平,打开DE接收使能;串口不发送时,TNOW输出低电平,默认打开RE接收使能;

    常见问题Q&A

    Q:串口端经常收到0x00误码值?

    A:接收使能状态下,一般485的A和B信号端为高阻态,发送和接收切换过程中A和B信号保持,没有恢复到空闲态。导致RO端采样出错。此时,在A端接一个上拉电阻,B端接一个下拉电阻,阻值需根据手册和实际应用计算。

    Q:AB端是否需要并联终端匹配电阻?

    A:根据手册来定,目前很多芯片内置120欧匹配电阻,并不是必须选项。

    Q:级联设备数量怎么计算?

    A:需根据手册标注的接收输入阻抗来确定,一般也会直接标注出允许的最大收发器数量。

    应用电路1

    下图为使用自带TNOW引脚485控制信号的USB 转双串口芯片 CH342F 设计的双路RS485串口电路:

    注:CH342F的DTR引脚在接下拉电阻时会切换为TNOW引脚,上图中所用为4.7K。

    应用电路2

    若选用型号没有485控制信号,只使用 TXD 和 RXD 两根信号线来完成 485 电路转换的需求也是十分普遍的。下面为原理图:

    实现原理:将RE一直置0,使能接收使能(RE 与 DE 直接短接也可以),将TXD反向后连接发送使能端 DE。TXD 输出为高电平时,连接的485芯片的发送使能无效,总线输出为空闲(高电平),TXD 输出低电平时,发送使能有效。相较于应用1,因有三极管反向电路,信号输出控制会有延迟,高波特率通讯下不建议选用。

    以上转换电路与设计原理在485转换电路中使用频率较高,用户可根据需要灵活选用。

    展开全文
  • 安卓USB转串口

    2021-08-25 11:47:34
    2.一根USB专接线,把手机USB成电脑USB口。 3.USB转串口板。随便在某宝上买一下CH340芯片的就行,几块钱。 硬件测试: 安装个串口调试工具APP,先测试一下当前硬件的收发功能是否正常。 ...

     准备硬件

    1.先得准备一个有OTG功能的手机,也就是可以作为USB主机的手机,当然,现在绝大部分手机都是支持这个功能的,除非是早期的安卓老爷机才不支持。我的旧手机荣耀6plus都支持。

    2.一根USB专接线,把手机USB口转成电脑USB口。

    3.USB转串口板。随便在某宝上买一下CH340芯片的就行,几块钱。

    硬件测试:

    安装个串口调试工具APP,先测试一下当前硬件的收发功能是否正常。

    源码

    在网上可以搜到很多例程,关键是要找个日期比较新的,因为这样编译才不会出错,版本太旧的话,SDK,IDE,什么都对应不上,问题一大堆。

     例如:

    《利用AndroidStudio开发的USB转串口程序代码》

    https://download.csdn.net/download/mm13420109325/12018905?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162986382316780261931850%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162986382316780261931850&biz_id=1&utm_medium=distribute.pc_search_result.none-task-download-2~download~baidu_landing_v2~default-1-12018905.pc_v2_rank_dl_default&utm_term=Android+studio+ch340&spm=1018.2226.3001.4451

    这个例程可直接用Android Studio 4.2.2 版本编译并安装到手机里。

    这个例程挺好的,一打开APP就会不断地检测CH340是否插入,一检测到就会有相应提示,非常的方便,如下,经测试,可以正常串口通信。

    Pixel 3a (谷歌手机)开发者模式

    连续点击多次“设置-->关于手机-->版本号”就会提示打开打开者模式。

    然后,开发者模式路径为:

    “设置-->系统-->高级-->开发者选项”

    展开全文
  • 卸载设备,然后安装,然后再拔出来插一次。解决WIN10系统下PL2303_USB转串口驱动兼容性问题
  • QT4 USB串口设备打开出错的解决办法

    千次阅读 2017-05-15 11:27:50
    在 Windows 下只需要使用其中的6个文件...(Linux下不存在以上问题) 在PC机上,一般是用USB转串口,则应当是 "/dev/ttyUSB0" ,具体端口号是多少,自己去查看一下。如果是做嵌入式开发,在交叉编译的时候记得改回来。
  • USB转串口与虚拟串口相关

    千次阅读 2019-10-29 16:18:34
    二、USB转串口、虚拟串口概念 三、串口占用问题 四、其他:多个程序共享一个串口数据 五、COM、COM+和DCOM与COM端口无关 一、串口与并口 (一)串行接口(即COM口): 简称串口,也称串行通信接口。按电气...
  • win10 usb转串口驱动是一个电脑端的驱动程序,由于近来...其实这一切都是因为系统升级之后,PL2303USB转串口线程序出错无法工作导致的,本次带来的win10 usb转串口驱动主要解决这个问题,只要是错误代码为10的情况,...
  • 通过去除串口、并口以及PS2口等老式端口,然后用诸如USB之类即插即用端口加以替代,最终用户现在终于能够体验到这一方面的显著改善(图1)。  USB为消费类电子产品提供了轻松的扩展功能,许多设备操作系统本身...
  • /********************************** (C) COPYRIGHT ******************************* * File Name :Composite_Dev.C * Author : WCH * Version : V1.0 * Date : 2017/01/20 * Description : CH559模拟USB复合...
  • 这里需要注意的是,当usb转串口模块插到usb上面/dev下面才能有设备,拔了设备就没了,所以操作的时候要注意。 #include <stdio.h> //标准输入输出,如printf、scanf以及文件操作 #include <stdlib.h> /...
  • 主要是suoervivi上用的u串的应用
  • USB转串口芯片目前主流的几种USB类别有: 1、USB厂商类; 2、USBCDC类; 3、USBHID类; 其中若使用USBCDC系统内置驱动时,使用时会有诸多特殊性,如下为使用说明: 1、测试中出现若打开串口状态下,拔掉USB硬件...
  • 文章目录一、串口通讯协议1.简介2.物理层(1)RS-232 标准 一、串口通讯协议 1.简介 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单、便捷,因此大部分电子设备都支持该通讯方式...
  • STM32 之 USB 虚拟串口

    千次阅读 2020-10-26 16:48:28
    USB虚拟串口提供了绕过这个问题的一个简单的解决方案。         为了让USB被视为一个COM端口,USB设备必须根据通信设备类(CDC)规范来实现两个接口: 1.抽象控制模型通信,在端点中有1个中断...
  • 1:USB通信 2:网络通信 3:串口通信(一般是RS232) 4:蓝牙通信(东芝标签打印机B-FV4T,没有蓝牙,所以本人没办法测试) 原因:因为想要打印机做到即插即用,所以需要绕过官方提供的打印机驱动,使用打印机指令来...
  • STM32 USB虚拟串口 小记

    2019-08-29 10:54:29
    1.usb发送存在64字节或者64字节整数倍发送的问题 usb的发送缓存区为4096字节,若发送64字节或者64整数倍字节,当usb存满4096后,会发送一次,剩下的会存在下次的4096里面。 如果要直接发送,在发送64字节之后,...
  • USB串口助手

    2011-10-22 09:36:58
    用笔记本时,如果在启动串口调试助手时出错出错,请先插下USB转串口,再启动串口调试助手. 或者您可以用你自己习惯的串口调试工具,此工具只供参考
  • A问:看原理图时,经常看到串一些小电阻,...简单的例子:一个串口通讯的提示信号,当接上串口时,因为瞬间的插拔产生了一个很窄的电压脉冲,如果这个脉冲直接打到GPIO口,很可能打坏芯片,但是串了一个小电阻,很容...
  • STM32操作NRF24L01与USB串口无线模块通讯问题记录

    千次阅读 多人点赞 2018-04-16 20:33:57
    近日毕业设计需要使用32去控制NRF24L01进行无线通讯,为了方便,遂想移植原子的程序。...调试NRF24L01需要两块模块,所以准备一个用单片机STM32F103C8T6操作,另外一个NRF24L01直接用USB串口转NRF24L01的...
  • 出现的问题 ...-自己安装完驱动后能正常使用,但是重新插拔之后又不能正常使用了 ...-所以按照这个思路,我把WIN10的自动更新给关掉了,但是当你接入PL2303,WIN10还是会自动安装驱动 ...-后来是每次使用时,先到...
  • 工控机USB串口常见故障及解决方法日期:2020年8月25日 下午4:51浏览:297 次工控机USB串口常见故障及解决方法USB是一种外部总线标准,可用于工控机和外部设备之间的连接和通信。一般来说,当工业个人计算机的外部...
  • 编写VB上位机时,如果串口使用的是USB转串,那么在使用ONCOMN事件时,必须加如下语句,否则数据会丢失,因为   .RThreshold = 1 '接收到一个字符就触发OnComm时间 其实应该是接收到一个以上字符的意思...
  • STM32 USB_TxWrite虚拟串口打印乱码

    千次阅读 多人点赞 2019-10-21 16:51:43
    1.关于USB_TxWrite输出乱码的问题   使用printf打印UWB时间戳,会有延迟,所以采用USB打印。...  输出汉字没问题,但是数据有问题说明不是波特率出错了。一定是格式控制相关的有问题。后来检查发现USB_TxWrit...
  • CH340的usb转串口驱动

    2012-10-14 19:23:33
    CH340的usb转串口驱动,记得下对了,不弄错了,不然会出错
  • STM32HAL----USB模拟串口(VCP)

    万次阅读 多人点赞 2018-05-10 10:30:48
    想要实现的功能是,USB模拟串口收发数据。串口助手发送数据至MCU,MCU接收后返回给串口助手。 当初是想用标准库做这个功能的。但是因为后来了解到STM32CubeMX这个软件,在尝试之后实在是感觉,太方便了。所以,并...
  • 0.快车 下载 ko文件 解压并复制到开发板的/mnt ...gedit .config将CP210X所在行改为CONFIG_USB_SERIAL_CP210X=m ...最好不要使用make menuconfig生成配置文件,因为会编译很多东西,容易出错

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,858
精华内容 2,343
关键字:

串口转usb出错