回答

收藏

XMEGA128B1如何使用USBCDC串口的例子

#其他 #其他 2166 人阅读 | 0 人回复 | 2015-01-26

在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
关注下面的标签,发现更多相似文章
分享到:
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条