查看: 1365|回复: 0

XMEGA128B1如何使用USBCDC串口的例子

[复制链接]
  • TA的每日心情
    奋斗
    2019-12-1 10:07
  • 签到天数: 1617 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2015-1-26 09:14:35 | 显示全部楼层 |阅读模式
    分享到:
    在ASF中有一个STDIO_USB_EXAMPLE的例子,可以方便的演示CDC串口。但是为了更好的理解这个例子,我们自己重新创建,然后通过ASF添加函数,这样可以更好的掌握整个过程。下面是我创建项目的过程,供大家参考。

    • 首先创建项目,选择gcc c asf project。


    • 然后选择xmega128B1以及xmega128B1-xplained模板。


    • 在ASF向导中,添加USB Device(server)- cdc_stdio


    • 然后打开config_usb.h。先注释掉第49行的强制警告提示,不然每次编译都会产生一个警告。
    //#warning You must refill the following definitions with a correct values

    • 然后将124/125行修改为下面语句
    #define UDI_CDC_ENABLE_EXT(port) stdio_usb_enable()#define UDI_CDC_DISABLE_EXT(port) stdio_usb_disable()

    • 最后添加包含头文件 <stdio_usb.h>
    #include <stdio_usb.h>

    • 再打开文件conf_clock.h,先将系统时钟改为SYSCLK_SRC_RC32MHZ。
    //#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_RC2MHZ#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_RC32MHZ//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_RC32KHZ//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_XOSC//#define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_PLL

    • 然后允许CONFIG_OSC_RC32_CAL 和CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC
    #define CONFIG_USBCLK_SOURCE USBCLK_SRC_RCOSC#define CONFIG_OSC_RC32_CAL 48000000UL#define CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC OSC_ID_USBSOF

    • 最后在打开main.c,在main函数中输入下面代码
    sysclk_init();board_init();// Initialize interrupt vector table support.irq_initialize_vectors();// Enable interruptscpu_irq_enable();stdio_usb_init();uint8_t ch;while (true) {ch = getchar();putchar(ch);LED_Toggle(LED2_GPIO);}

    • 编译项目文件,通过Flip将编译后HEX写入芯片。



    • 重新上电(记得先取下短路块),应该就可以找到串口了。



    • 打开一个串口终端,选择上面的串口,并设置波特率为115200,随便输入什么,如果屏幕上可以显示出你输入的字符,LED同时闪动,就代表成功了。





    • 完整项目文件
    GccBoardProject_USBCDC.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    手机版|小黑屋|与非网

    GMT+8, 2024-4-24 09:27 , Processed in 0.127917 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.