Human interface on SAM4E-EK:
Introduction
This example shows how to implement a USB Device CDC on Atmel MCU with USB module. The application note AVR4907 http://ww1.microchip.com/downloads/en/appnotes/doc8447.pdf provides more information about this implementation.
Description of the Communication Device Class (CDC)
The Communication Device Class (CDC) is a general-purpose way to enable all types of communications on the Universal Serial Bus (USB). This class makes it possible to connect communication devices such as digital telephones or analog modems, as well as networking devices like ADSL or Cable modems. While a CDC device enables the implementation of quite complex devices, it can also be used as a very simple method for communication on the USB. For example, a CDC device can appear as a virtual COM port, which greatly simplifies application development on the host side.
Startup
The example is a bridge between a USART from the main MCU and the USB CDC interface.
In this example, we will use a PC as a USB host: it connects to the USB and to both RS232 board connectors.
- Connect the two board RS232 ports to a PC or another RS232 device.
- Connect the application to a USB host (e.g. a PC) with a mini-B (embedded side) to A (PC host side) cable. The application will behave as two virtual COMs (see Windows Device Manager).
- Open a HyperTerminal on COM ports (two RS232 ports and two virtual COMs)
- Select the same configuration for a couple RS232 ports and virtual COM up to 115200 bauds.
- Type a character in one HyperTerminal and it will echo in the other.
- Note
- On the first connection of the board on the PC, the operating system will detect a new peripheral:
- This will open a new hardware installation window.
- Choose "No, not this time" to connect to Windows Update for this installation
- click "Next"
- When requested by Windows for a driver INF file, select the atmel_devices_cdc.inf file in the directory indicated in the Atmel Studio "Solution Explorer" window.
- click "Next"
- SAM4E USART used UART on J7 connector and USART1 on J5 connector
- Jumpers for USART1 RS232 serial mode:
- JP11: Connect 2 and 3
- JP10, JP12, JP13: Open
- Led 0 (D2) blinks when USB host has checked and enabled CDC interface, and data transfer is stopped. It's on when any CDC port starts data transfer.
- Led 1 (D3) is on when UART CDC interface is not enabled or UART CDC port is open
- Led 2 (D4) is on when USART CDC interface is not enabled or USART CDC port is open
About example
The example uses the following module groups:
- Basic modules: Startup, board, clock, interrupt, power management
- USB Device stack and CDC modules:
services/usb/
services/usb/udc/
services/usb/class/cdc/
- Specific implementation:
- main.c,
initializes clock
initializes interrupt
manages UI
- uart_xmega.c,
implementation of RS232 bridge for XMEGA parts
- uart_uc3.c,
implementation of RS232 bridge for UC3 parts
- uart_sam.c,
implementation of RS232 bridge for SAM parts
- specific implementation for each target "./examples/product_board/":
- conf_foo.h configuration of each module
- ui.c implement the user's interface (leds,buttons...)