SAMV71实现虚拟串口通信

分享到:

USB与串口,虽然同属于串行通信协议,它们的协议复杂度可谓是天差地别!

完整的USB英文协议,光英文文档就是厚厚一叠,绝对不 是一两天、十天半个月能完全吃透的!更为让人叫绝的是其复杂的协议并没有牺牲传输速度,而是比最简单的串口高出N的档次!各种USB键盘、鼠标、音响,设 置是一个速度要求极低的设备,都给它搭载一个USB接口,大有不整个USB,产品都没法拿出手的赶脚……

还好现在的MCU产商基本都会提供完整的USB开发库,可以非常
容易地实现复杂的协议。

AT官方一般采用的波特率是115200bps,我们将波特率设置为230400
SAMV71实现USB虚拟串口的效果如下------>
将从串口助手接收到的数据原样发回


完整源代码如下-------->

/** UART Interface */
#define CONF_UART            CONSOLE_UART
/** Baudrate setting */
#define CONF_UART_BAUDRATE   (230400UL)
/** Character length setting */
#define CONF_UART_CHAR_LENGTH  US_MR_CHRL_8_BIT
/** Parity setting */
#define CONF_UART_PARITY     US_MR_PAR_NO
/** Stop bits setting */
#define CONF_UART_STOP_BITS    US_MR_NBSTOP_1_BIT

/* USB虚拟串口输入输出测试,将从虚拟串口接收到的数据发回虚拟串口 */
void usb_uart_test(void)
{
        sysclk_init();
        ioport_init();
        
        ioport_set_pin_mode(USART1_RXD_GPIO, USART1_RXD_FLAGS);
        ioport_disable_pin(USART1_RXD_GPIO);
        MATRIX->CCFG_SYSIO |= CCFG_SYSIO_SYSIO4;
        ioport_set_pin_mode(USART1_TXD_GPIO, USART1_TXD_FLAGS);
        ioport_disable_pin(USART1_TXD_GPIO);
        
        const usart_serial_options_t uart_serial_options = {
                .baudrate = CONF_UART_BAUDRATE,
                .charlength = CONF_UART_CHAR_LENGTH,
                .paritytype = CONF_UART_PARITY,
                .stopbits = CONF_UART_STOP_BITS,
        };
        sysclk_enable_peripheral_clock(ID_USART1);
        stdio_serial_init(USART1, &uart_serial_options);
        
        puts("Usb uart test start --->");
        
        uint32_t tmp;
        while(1) {
                while(usart_read(USART1,&tmp));
                printf("You input -> %c\r\n",tmp);
        }
}

 

 

更多Atmel及科技资讯请关注:  
Atmel中文官网:https://www.atmel.com/zh/cn/
Atmel技术论坛:https://atmel.eefocus.com/
Atmel中文博客:https://blog.sina.com.cn/u/2253031744
Atmel新浪微博:https://www.weibo.com/atmelcn

继续阅读
Microchip5款新型USB 2.0智能集线器IC,支持智能手机连接汽车信息娱乐系统

随着车载信息娱乐系统的兴起,汽车制造商需要在汽车显示屏和多台智能手机或者平板电脑之间建立可靠而智能的连接。Microchip Technology Inc.(美国微芯科技公司)是提供支持此类连接的集成电路(IC)的业界翘楚,推出的5款新型USB 2.0智能集线器IC为用户提供了多种选择。

3D打印出的便携电池,长得像个腕带,可做手机急救包

10月25日消息,英国布鲁内尔大学的研究团队在《材料科学与工程学》杂志上发表一篇论文称,他们已经借助一款基本的开源打印机制造出一种柔软的超级电容腕带。这种方法代表着韧性超级电容腕带首次通过一个单一的连续过程制造出来。目前制造韧性超级电容的方法通常依靠的是昂贵的3D激光选择熔化设备,并且使用不同的设备打印不同的部分。

飞一般的速度:USB3.2传输标准可达2GB/S

早在今年7月份,由苹果、惠普、英特尔以及微软等科技公司组成的USB 3.0 Promoter Group联盟公布了USB 3.2传输标准,该标准将USB 3.1上的理论传输速率从1GB/S提升到了2GB/s。

USB 3.2标准公布:传输速度大幅度提高,2GB/秒!还可兼容旧设备

与USB 3.1标准相比,USB 3.2标准在兼容旧版本设备的同时,使用USB 3.2主机连接USB 3.2储存设备,可以实现2GB/秒的数据传输速度。

基于ATmega128和CH374的USB接口设计

以ATmega128和CH374为核心,通过SPI串口通讯方式设计了一款USB接口,系统硬件简单,不需要编写复杂的USB驱动程序,利用其动态链接库即可实现USB与PC的通信,研发简单,易于实现。

©2019 Microchip Corporation
facebook google plus twitter linkedin youku weibo rss