AT91 ARM Thumb Microcontrollers. Application Note. AT91 USB CDC Driver Implementation. 1. Introduction. 2. Related Documents
|
|
|
- Mark Nicholson
- 10 years ago
- Views:
Transcription
1 AT91 USB CDC Driver Implementation 1. Introduction 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 telecommunication 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 programming on the host side. The purpose of this document is to explain how to implement CDC on AT91 ARM Thumb based microcontrollers using the AT91 USB Framework offered by Atmel. For this purpose, a sample implementation of a USB to Serial converter is described step-by-step. 2. Related Documents [1] Universal Serial Bus Class Definitions for Communication Devices, Version 1.1, January 19, [2] Atmel Corp., AT91 USB Framework, AT91 ARM Thumb Microcontrollers Application Note
2 3. Communication Device Class Basics This section gives some basic information about the Communication Device Class, such as when to use it and which drivers are available for it. Its architecture is also described. 3.1 Purpose CDC is used to connect communication devices, such as modems (digital or analog), telephones or networking devices. Its generic framework supports a wide variety of physical layers (xdsl, ATM, etc.) and protocols. In this document, CDC is used to implement a USB to a serial data converter. Serial ports (also known as COM or RS-232 ports) are still widely used, but most modern PCs (especially laptops) are now shipped without serial ports. A USB to serial converter can be used in this case to bridge a legacy RS-232 interface with a USB port. 3.2 Architecture Interfaces Endpoints Two interfaces are defined by the CDC specification 1.1. The first one, the Communication Class Interface, is used for device management. This includes requests to manage the device state, its responses, as well as event notifications. This interface can also be optionally used for call management, i.e., setting up and terminating calls as well as managing their parameters. Another interface is defined for generic data transmissions. It is referred to as the Data Class Interface. It provides a means for a communication device to actually transfer data to and from the host. In addition, it also enables the multiplexing of data and commands on the same interface, through the use of wrappers. The Communication Class Interface requires at least one endpoint, which is used for device management. Default control endpoint 0 is used for this task. Optionally, another endpoint can be dedicated to events notification. This will usually be an Interrupt IN endpoint. For the Data Class Interface, endpoints must exist in pairs of the same type. This is necessary to allow both IN and OUT communication. Only the Bulk and Isochronous types can be used for these endpoints. Figure 3-1. CDC Class Driver Architecture 2 Application Note
3 Application Note Models To account for the wide variety of existing communication devices, several models have been defined. They describe the requirements in term of interfaces, endpoints and requests that a device must fulfill to perform a particular role. Here is a list of models defined in the CDC specification 1.1, grouped by their intended functionality: POTS (Plain Old Telephone Service) Direct Line Control Model Datapump Model Abstract Control Model Telephone Telephone Control Model ISDN Multi-Channel Model USB CAPI Model Networking Ethernet Networking Model ATM Networking Control Model Some of these models and their uses will be detailled further in this document, along with the corresponding implementation cases Class-Specific Descriptors CDC-specific information is described using Functional Descriptors. They define various parameters of an interface, such as how the device handles call management, or model-specific attributes. Since the CDC specification defines quite a number of functional descriptors, they are not detailed here. Instead, they are presented in the various case studies of this document in which they are used. 3.3 Host Drivers Most Operating Systems (OS) now include generic drivers for a wide variety of USB classes. This makes developing a device simpler, since the host complexity is now handled by the OS. Manufacturers can thus concentrate on the device itself, not on developing specific host drivers. Here is a brief list of the various CDC implementations supported by several OS: Windows Abstract Control Model Remote NDIS Linux Abstract Control Model Ethernet Model 4. USB to Serial Converter This section describes the implementation of an USB to serial converter using the CDC class and the AT91 USB Framework. Refer to the Atmel document, literature no for information 3
4 on the USB framework, and to the CDC Specification 1.1 and the USB Specification 2.0 for USB/CDC-related details. 4.1 Purpose While the USB is increasingly used for a lot of new products, many legacy devices still use a basic RS-232 (also named serial or COM) port to connect to a PC. This kind of product is still widely available, but most computer manufacturers are starting to ship their machines without any COM port. A USB to serial converter can be used to add a virtual COM port to a computer, enabling the connection to a legacy RS-232 device. A virtual COM port could also be used to provide a way for an USB device to connect to older PC applications. This is also a simple way to communicate through the USB, as no custom driver programming is needed. Figure 4-1. Bridging a Legacy Device and a PC with a USB to Serial Converter 4.2 Architecture The AT91 USB Framework offers an API which makes it easy to build USB class drivers. The example software provided with this application note is based on this framework. Figure 4-2 shows the application architecture with the framework. Figure 4-2. Software Architecture Using the AT91 USB Framework CDC serial driver Standard Specific User application Methods USB API Events Callbacks Hardware layer UDP Controller 4.3 Model The CDC specification defines a model which suits this application perfectly: the Abstract Control Model (ACM). It implements the requests and notifications necessary to communicate with an RS-232 interface. The Abstract Control Model requires two interfaces, one Communication Class Interface and one Data Class Interface. Each of them must have two associated endpoints. The former shall have one endpoint dedicated to device management (default Control endpoint 0) and one for events notification (additional Interrupt IN endpoint). The Data Class Interface needs two endpoints through which to carry data to and from the host. Depending on the application, these endpoints can either be Bulk or Isochronous. In the case of 4 Application Note
5 Application Note a USB to serial converter, using Bulk endpoints is probably more appropriate, since the reliability of the transmission is important and the data transfers are not time-critical. 4.4 Descriptors The descriptors used by the USB to serial converter are mostly standard ones, i.e., defined in the USB Specification 2.0. The following code examples thus use the structures described in the AT91 USB Framework application note. For CDC-specific descriptors, new types are needed. Their implementation is trivial however, as they are fully described in the CDC specification. Only the values contained in each descriptor are detailed, but the list of the necessary structures for this example is found below: CDCHeaderDescriptor CDCCallManagementDescriptor CDCAbstractControlManagementDescriptor CDCUnionDescriptor Device Descriptor The Device Descriptor must specify the value 02h, corresponding to the Communication Device Class, in its bdeviceclass field. This is necessary to have the host driver correctly enumerate the device: since a CDC device often displays more than one interface, they have to be logically grouped together and not considered separate functionalities. No subclass codes or protocol codes are defined for the CDC. Here is how the device descriptor looks when using the S_usb_device_descriptor structure of the AT91 USB Framework: const USBDeviceDescriptor devicedescriptor = { sizeof(usbdevicedescriptor), USBGenericDescriptor_DEVICE, USBDeviceDescriptor_USB2_00, CDCDeviceDescriptor_CLASS, CDCDeviceDescriptor_SUBCLASS, CDCDeviceDescriptor_PROTOCOL, BOARD_USB_ENDPOINTS_MAXPACKETSIZE(0), CDCDSerialDriverDescriptors_VENDORID, CDCDSerialDriverDescriptors_PRODUCTID, CDCDSerialDriverDescriptors_RELEASE, 0, // No string descriptor for manufacturer 1, // Index of product string descriptor is #1 0, // No string descriptor for serial number 1 // Device has 1 possible configuration }; The Vendor ID and Product ID fields are used to determine which driver to use when the device is enumerated. The Vendor ID is provided by the USB-IF organization after registration; the product ID is completely vendor-specific. In the example implementation provided with this document, the Atmel vendor ID (03EBh) is used along with a custom product ID (6119h). 5
6 4.4.2 Configuration Descriptor When requested by the host, the configuration descriptor is followed by interface, endpoint and class-specific descriptors. While the CDC specification does not define any special values for the configuration descriptor, a set of class-specific descriptors is provided. They are referred to as Functional Descriptors, and some of them have to be implemented. // Standard configuration descriptor { sizeof(usbconfigurationdescriptor), USBGenericDescriptor_CONFIGURATION, sizeof(cdcdserialdriverconfigurationdescriptors), 2, // There are two interfaces in this configuration 1, // This is configuration #1 0, // No string descriptor for this configuration BOARD_USB_BMATTRIBUTES, USBConfigurationDescriptor_POWER(100) }, Communication Class Interface Descriptor The first interface to follow the configuration descriptor should be the Communication Class Interface descriptor. It should specify the Communication Class Interface code (02h) in its binterfaceclass field. The binterfacesubclass value selects the CDC Model used by the interface. In this case, the code corresponding to the Abstract Control Model is 02h. Finally, a protocol code can be supplied if needed. Since this is not necessary for the USB to serial converter, it can be left at 0x00. // Communication class interface standard descriptor { sizeof(usbinterfacedescriptor), USBGenericDescriptor_INTERFACE, 0, // This is interface #0 0, // This is alternate setting #0 for this interface 1, // This interface uses 1 endpoint CDCCommunicationInterfaceDescriptor_CLASS, CDCCommunicationInterfaceDescriptor_ABSTRACTCONTROLMODEL, CDCCommunicationInterfaceDescriptor_NOPROTOCOL, 0 // No string descriptor for this interface }, While the Communication Class Interface uses two endpoints (one for device management and one for events notification), the interface descriptor should have its bnumendpoints field set to 0x01: the default control endpoint 0 is not included in the count Functional Descriptors Several Functional Descriptors must follow the communication class interface descriptor. They are necessary to define several attributes of the device. The functional descriptor structure contains the descriptor length, type and subtype, followed by functional information. 6 Application Note
7 Application Note The bdescriptortype value is always equal to CS_INTERFACE (24h), since CDC-specific descriptors only apply to interfaces. The values for the other two fields, bfunctionlength and bdescriptorsubtype, are function-dependent Header The first functional descriptor must always be the Header Functional Descriptor. It is used to specify the CDC version on which the device is based (current version is 1.1): // Class-specific header functional descriptor { sizeof(cdcheaderdescriptor), CDCGenericDescriptor_INTERFACE, CDCGenericDescriptor_HEADER, CDCGenericDescriptor_CDC1_10 }, Call Management Next comes the Call Management Functional Descriptor. This one indicates how the device processes call management. If the device performs the call management duty itself, the first bit of the bmcapabilities field must be set to one. In addition, call management requests can be multiplexed over the data class interface instead of being sent on the Control endpoint 0, by setting the second bit. According to the CDC specification, a device using the Abstract Control Model should process call management itself, so bit D0 will be set. The last byte (bdatainterface) has no meaning here, since bit D1 of bmcapabilities is cleared. // Class-specific call management functional descriptor { sizeof(cdccallmanagementdescriptor), CDCGenericDescriptor_INTERFACE, CDCGenericDescriptor_CALLMANAGEMENT, CDCCallManagementDescriptor_SELFCALLMANAGEMENT, 0 // No associated data interface }, Abstract Control Management Since the USB to serial converter uses the Abstract Control Model, the corresponding functional descriptor (Abstract Control Management Functional Descriptor) must be transmitted to give more information on which requests/notifications are implemented by the device. For this example, the driver is going to support all optional requests/notification except NetworkConnection; thus, the bmcapabilities field value will be set to 07h. // Class-specific abstract control management functional descriptor { sizeof(cdcabstractcontrolmanagementdescriptor), CDCGenericDescriptor_INTERFACE, CDCGenericDescriptor_ABSTRACTCONTROLMANAGEMENT, CDCAbstractControlManagementDescriptor_LINE }, 7
8 Union Finally, the Union Functional Descriptor makes it possible to group several interfaces into one global function. In this case, the Communication Class Interface will be set as the master interface of the group, with the Data Class Interface as slave 0: // Class-specific union functional descriptor with one slave interface { sizeof(cdcuniondescriptor), CDCGenericDescriptor_INTERFACE, CDCGenericDescriptor_UNION, 0, // Number of master interface is #0 1 // First slave interface is #1 }, Notification Endpoint Descriptor As said previously, the notification element used by the Abstract Control Model is an Interrupt IN endpoint. The user-defined attributes are the endpoint address and the polling rate. When choosing endpoint addresses, the specificities of the USB controller should be taken into account. For example, on AT91SAM7S chips, the UDP has only four endpoints, one of which is used by the default Control endpoint 0. Since only the second and third endpoints have dual FIFO banks, it seems wiser to use them for the Data Class Interface and have the last one used for events notification. Finally, the polling rate should be set depending on the interrupt source. In this case, this will be a USART. Since this is a fairly slow interface, the polling rate can be relatively low, meaning the binterval value can be high. Here is how the notification endpoint descriptor is declared in the example software: // Notification endpoint standard descriptor { sizeof(usbendpointdescriptor), USBGenericDescriptor_ENDPOINT, USBEndpointDescriptor_ADDRESS(USBEndpointDescriptor_IN, CDCDSerialDriverDescriptors_NOTIFICATION), USBEndpointDescriptor_INTERRUPT, MIN( BOARD_USB_ENDPOINTS_MAXPACKETSIZE(CDCDSerialDriverDescriptors_NOTIFICATION), USBEndpointDescriptor_MAXINTERRUPTSIZE_FS), 10 // Endpoint is polled every 10ms }, Data Class Interface Descriptor The Data Class Interface Descriptor follows the Communication Class Interface and its related functional and endpoint descriptors. The Data Class Interface itself will have two endpoint descriptors following it. The Data Class Interface code is 0Ah, and there is no subclass code. Several protocol codes are available; in this example, none is used. However, the v.42bis protocol could be used to compress the data if supported by the legacy device. // Data class interface standard descriptor 8 Application Note
9 Application Note { }, sizeof(usbinterfacedescriptor), USBGenericDescriptor_INTERFACE, 1, // This is interface #1 0, // This is alternate setting #0 for this interface 2, // This interface uses 2 endpoints CDCDataInterfaceDescriptor_CLASS, CDCDataInterfaceDescriptor_SUBCLASS, CDCDataInterfaceDescriptor_NOPROTOCOL, 0 // No string descriptor for this interface Data IN & OUT Endpoint Descriptors The Data Class Interface requires two additional endpoints, so the corresponding Endpoint Descriptors must follow. It was decided previously that those endpoints would be Bulk IN/OUT, since it is more appropriate for this particular application. Since addresses 00h and 03h are already taken by the default Control endpoint 0 and the Interrupt IN notification endpoint (respectively), the data OUT and IN endpoints will take addresses 01h and 02h. Here are the two descriptors: // Bulk-OUT endpoint standard descriptor { sizeof(usbendpointdescriptor), USBGenericDescriptor_ENDPOINT, USBEndpointDescriptor_ADDRESS(USBEndpointDescriptor_OUT, CDCDSerialDriverDescriptors_DATAOUT), USBEndpointDescriptor_BULK, MIN(BOARD_USB_ENDPOINTS_MAXPACKETSIZE(CDCDSerialDriverDescriptors_DATAOUT), USBEndpointDescriptor_MAXBULKSIZE_FS), 0 // Must be 0 for full-speed bulk endpoints }, // Bulk-IN endpoint descriptor { sizeof(usbendpointdescriptor), USBGenericDescriptor_ENDPOINT, USBEndpointDescriptor_ADDRESS(USBEndpointDescriptor_IN, CDCDSerialDriverDescriptors_DATAIN), USBEndpointDescriptor_BULK, MIN(BOARD_USB_ENDPOINTS_MAXPACKETSIZE(CDCDSerialDriverDescriptors_DATAIN), USBEndpointDescriptor_MAXBULKSIZE_FS), 0 // Must be 0 for full-speed bulk endpoints }, 9
10 4.4.8 String Descriptors Several descriptors (device, configuration, interface, etc.) can specify the index of a string descriptor to comment their use. These strings are completely user-defined and have no impact on the actual choice of driver made by the OS for the device. 4.5 Class-specific Requests The CDC specification defines a set of class-specific requests for devices implementing the Abstract Control Model. This section details those requests, including their uses and implementation. Please refer to section of the CDC specification 1.1 for more information about the Abstract Control Model Serial Emulation and the associated requests and notifications SendEncapsulatedCommand, GetEncapsulatedResponse Purpose These two requests are used when a particular control protocol is used with the communication class interface. This is not the case for a virtual COM port, so they do not have to be implemented, even though they are supposed to be mandatory. In practice, they should never be received SetCommFeature, GetCommFeature, ClearCommFeature Purpose The Set/Get/ClearCommFeature requests are used to modify several attributes of the communication. The first attribute is the currently used Country Code. Some devices perform differently, or have different legal restrictions depending on the country in which they operate. Therefore, a country code is necessary to identify the corresponding parameters. However, this is useless for a USB to serial converter, since it does not connect to a national or country-dependent network. The Abstract State of the device can also be modified through the use of those requests. The first feature which can be altered is whether or not calls are multiplexed over the data class interface. Since it has already been specified in the call management functional descriptor (see Section on page 7) that this is not supported in this example, it is not meaningful. The Idle state of the device can be toggled using this request. When in idle state, a device shall not accept or send data to and from the host SetLineCoding, GetLineCoding Purpose These two requests are sent by the host to either modify or retrieve the configuration of the serial line, which includes: Baudrate Number of stop bits Parity check Number of data bits When the terminal application (such as HyperTerminal) on the host (PC) side changes the setting of the COM port, a SetLineCoding request is sent with the new parameters. The host may also retrieve the current setting using GetLineCoding, not modifying them if they are correct. 10 Application Note
11 Application Note Implementation When a SET_LINE_CODING request is received, the device should first read the new parameters, which are held in a 7-byte structure described in the CDC specification 1.1, section The device must then program the new parameters in the USART. A callback must be provided to the USBD_Read function, with a pointer to access the received data SetControlLineState The code handling GET_LINE_CODING shall simply invoke the USBD_Write function to send the current settings of the USART to the host. There are two possible options for storing the current settings. The most obvious one is to store and retrieve them directly from the USART. This has the advantage of saving memory. But, since the parameters are unlikely to be stored in the same way as the CDC-defined structure, they will have to be parsed for each GET_LINE_CODING request. Another option is to store the received values in a dedicated member structure of the class driver, for easy access Purpose This request is sent by the host to notify the device of two state changes. The first bit (D0) of the wvalue field of the request indicates whether or not a terminal is connected to the virtual COM port. Bit D1 indicates that the USART should enable/disable its carrier signal to start/stop receiving and transmitting data. In practice, the USB to serial converter should operate only when those two bits are set. Otherwise, it should not transmit or receive data Implementation Since the SET_CONTROL_LINE_STATE request does not have a data payload, the device only has to acknowledge the request by sending a ZLP (zero-length packet), using the USBD_Write method with data sent zero SendBreak Before that, the wvalue field should be parsed to retrieve the new control line state. A single boolean variable can be used to keep track of the connection state. If both the D0 and D1 bits are set, then the converter should operate normally, i.e., forward data between the USART and the USB host. Otherwise, it should stop its activity Purpose 4.6 Notifications The SendBreak request is used to instruct the device to transmit a break of the specified length on the RS-232 line. This signal is sometimes used to get the attention of the connected machine. Notifications are sent by the device when an event, such as a serial line state change, has occurred. In this example, they are transmitted through a dedicated Interrupt IN endpoint. A special header must precede the data payload of each notification. This header has the same format of a SETUP request, so the USBGenericRequest structure defined in the AT91 USB framework can be used. Note that the device should only send a notification when there is a state change, and not continuously. This does not really matter in practice, but only sending notifications sporadically will reduce the stress on the device. 11
12 4.6.1 NetworkConnection Purpose The NetworkConnection notification is used to tell the host whether the USB to serial converter is connected on its RS-232 side. In the case of a USART, there is no way get this information, unless coupled with an extra signal. Therefore, this notification is not supported by the USB to serial converter ResponseAvailable Purpose This notification allows the device to tell the host that a response is available. However, since it has already been mentioned that the GetEncapsulatedResponse request is not relevant to this case study (see Section on page 10), this notification is useless SerialState Purpose This command acts as an interrupt register for the serial line. It notifies the host that the state of the device has changed, or that an event has occured. The following events are supported: Buffer overrun Parity error Framing error Ring signal detection mechanism state Break detection mechanism state Transmission carrier state Receiver carrier detection mechanism state Several of these values are only used for modem device, namely ring signal detection, transmission carrier state and receiver carrier detection Implementation This notification can be directly tied with the status register of the USART. Indeed, the latter contains all the required information. An interrupt can be used to notify the device when the USART state changes; the corresponding notification can then be sent to the host. To send a SERIAL_STATE notification, the device should first transmit the corresponding notification header. As noted previously, it has a format identical to a SETUP request, so a USBGenericRequest instance can be used to store the necessary information. In the following example, a typedef has been defined to rename USBGenericRequest to CDCNotificationHeader: CDCNotificationHeader cdcnotificationheader = { }; CDC_NOTIFICATION_TYPE, CDC_NOTIFICATION_SERIAL_STATE, 0, 0, 0 12 Application Note
13 Application Note The actual state information is transmitted in two bytes. Only the first 7 bits of the first byte are significant; the others can be set to 0. The device should set the bits corresponding to the current USART state, and then send the data using USBD_Write. Depending on the size of the interrupt endpoint, the header and data will have either have to be transmitted in one chunk (size superior to 8 bytes), or separately. In the first case, the simplest is probably to define a CDCSerialState structure to hold both the header and the data payload. In the second case, the transmission can be done by two consecutive USBD_Write calls (since the header is 8 bytes long); however, this may not be convenient, as the first transfer must be finished before the second one can start. This means that the second call must either be done in a callback function (invoked upon the first transfer completion), or in a loop verifying that the returned result code is USB_STATUS_SUCCESS (indicating that the endpoint is not locked anymore). 4.7 Main Application The job of the main application is to bridge the USART and the USB. This means that data read from one end must be forwarded to the other end. This section describes several possibilities to do this USB Operation Reading data coming from the host is done using the USBD_Read function on the correct endpoint. Since this is an asynchronous function, it does not block the execution flow. This means that other actions (like reading data from the USART) can be performed while the transfer is going on. Whenever some data is sent by the host, the transfer terminates and the associated callback function is invoked. This callback can be programmed to forward the received data through the USART. Likewise, the USBD_Write function can be called as soon as there is data to transmit, again without block the program flow. However, there cannot be two write operations at the same time, so the program must check whether or not the last transfer is complete. This can be done by checking the result code of the USBD_Write method. If USB_STATUS_LOCKED is returned, then there is already another operation in progress. The device will have to buffer the data retrieved from the USART until the endpoint becomes free again USART Operation The USART peripheral present on AT91 chips can be used in two different ways. The classic way is to read and write one byte at a time in the correct registers to send and receive data. 4.8 Example Software Usage A more powerful method is available on AT91SAM chips, by using the embedded Peripheral DMA Controller (PDC). The PDC can take care of transfers between the processor, memory and peripherals, thus freeing the processor to perform other tasks. Since the focus of this application note is on the USB component, the USART usage will not be described further here File Architecture In the example program provided with this application note, the actual driver is divided into three files: 13
14 at91lib\usb\common\cdc: folder contains all generic CDC definitions and methods. CDCAbstractControlManagementDescriptor.h: header file with CDC ACM definitions. CDCCallManagementDescriptor.h: header file with CDC Call Management definitions. CDCCommunicationInterfaceDescriptor.h: header file with Communication Interface Definitions. CDCDataInterfaceDescriptor.h: header file with definitions for the Data Interface. CDCDeviceDescriptor.h: definitions used in CDC device descriptor. CDCGenericDescriptor.h: definitions used for CDC descriptors. CDCGenericRequest.h: definitions used for CDC requests handling. CDCHeaderDescriptor.h: definitions for CDC Header Descriptor. CDCUnionDescriptor.h: definitions for CDC Union Descriptor. CDCLineCoding.h: definitions for CDC LineCoding requests. CDCLineCoding.c: methods to handle CDC LineCoding requests. CDCSetControlLineStateRequest.h: definitions for CDC SetControlLineState request. CDCSetControlLineStateRequest.c: methods to handle CDC SetControlLineState request. at91lib\usb\device\cdc-serial: Folder with all files used for CDC serial driver. CDCSerialDriver.h: header file with definitions for the USB to serial converter driver. CDCSerialDriver.c: source file for the USB to serial converter driver. CDCSerialDriverDescriptors.h: header file with definitions for the USB to serial converter driver descriptors. CDCSerialDriverDescriptors.c: source file for the USB to serial converter driver descriptors. usb-device-cdc-serial-project: folder containes main application code. main.c: main application source code Having all generic CDC definitions in a separate file makes it possible to easily reuse it for other CDC-related drivers. The main application, which uses the driver to bridge the USART and USB interfaces, is implemented in the main.c file Compilation The software is provided with a Makefile to build it. It requires the GNU make utility, which is available on Please refer to the AT91 USB Device Framework application note for more information on general options and parameters of the Makefile. To build the USB to serial converter example just run make in directory usb-device-cdcserial-project, and two parameters may be assigned in command line, the CHIP= and BOARD=, the default value of these parameters are at91sam7s256 and at91sam7s-ek : make CHIP=at91sam7se512 BOARD=at91sam7se-ek In this case, the resulting binary will be named usb-device-cdc-serial-project-at91sam7se-ekat91sam7se512-flash.bin and will be located in the usb-device-cdc-serial-project/bin directory. 4.9 Using a Generic Host Driver Both Microsoft Windows and Linux offer a generic driver for using a USB to serial converter device. This section details the steps required to make use of them. 14 Application Note
15 Application Note Windows On Microsoft Windows, the standard USB serial driver is named usbser.sys and is part of the standard set of drivers. It has been available since Windows 98SE. However, conversely to other generic driver such as the one for Mass Storage Devices (MSD), usbser.sys is not automatically loaded when a CDC device is plugged in Writing a Windows Driver File For Windows to recognize the device correctly, it is necessary to write a.inf file. The Windows Driver Development Kit (DDK) contains information on this topic. A basic driver, named 6119.inf in the example software provided, will now be described. The driver file is made up of several sections. The first section of the.inf file must be the [Version] section. It contains information about the driver version, provider, release data, and so on. [Version] Signature="$Chicago$" Class=Ports ClassGuid={4D36E978-E325-11CE-BFC BE10318} Provider=%ATMEL% DriverVer=09/12/2006, The Signature attribute is mandatory and can be either $Windows 95$, $Windows NT$ or $Chicago$, depending on which Windows version(s) the driver supports. $Chicago$ is used to notify that every Windows version is supported. Since in this example, the USB to serial converter is a virtual COM port, the Class attribute should be equal to Ports. The value of ClassGuid depends on which class the device uses. The Provider value indicates that the string descriptor for the driver provider will be defined further, under the tag ATMEL. Finally, the last tag show the driver version and release date. For the version number, each digit is optional (except the first one), but must not be null if present. Next come two sections, [SourceDisksNames] and [SourceDisksFiles]. They are used to specify the installation disks required and the location of each needed files on these disks. [SourceDisksNames] 1="Windows Install CD" [SourceDisksFiles] usbser.sys=1 The first one lists the names of source disks on which the user can find missing files. Since the driver requires usbser.sys, present on the Windows install CD, it will have to be listed here. The disk ID must be a unique and non-null digit. The second section indicates on which disk each file can be found. In this case, usbser.sys can be found on disk #1 (which is Windows Install CD ). Optionally, the exact path of the file on the CD can be specified. The driver file must now specify where copied files will be stored, using the [DestinationDirs] section. [DestinationDirs] DefaultDestDir=12 The target directory must be identified by its ID, which is system-defined. The ID for the drivers directory is
16 The [Manufacturer] section lists the possible manufacturers for all devices supported by this driver. In this case, the only supported device is an ATMEL one, so this will be the only value. [Manufacturer] %ATMEL%=AtmelMfg The attribute must be a string tag; its value must be the name of the Models section in which all supported devices from this manufacturer will be listed. In this case, it will be named AtmelMfg, which is the next section. Each Models section must list the hardware ID of each supported device. For USB devices, the hardware ID is made up of the Vendor ID, the Product ID and (optionally) the Device Release Number. Those values are extracted from the device descriptor provided during the enumeration phase. [AtmelMfg] %USBtoSerialConverter%=USBtoSer.Install,USB\VID_03EB&PID_6119 The attribute name is again a string tag, which will be used to describe the device. The value is comprised of both the device install section name (USBtoSer.Install) and the hardware ID. The hardware ID is the same as the one specified in Section on page 5. Now, the.inf file must detail the install section of each device previously listed. In this example, there is only one install section, named USBtoSer.Install: [USBtoSer.Install] CopyFiles=USBtoSer.CopyFiles AddReg=USBtoSer.AddReg [USBtoSer.CopyFiles] usbser.sys,,,0x [USBtoSer.AddReg HKR,,DevLoader,,*ntkern HKR,,NTMPDriver,,usbser.sys [USBtoSer.Install.Services] AddService=usbser,0x ,USBtoSer.AddService [USBtoSer.AddService] DisplayName=%USBSer% ServiceType=1r StartType=3 ServiceBinary=%12%\usbser.sys The install section is actually divided in five. In the first section, two other section names are specified: one for the list of files to copy, and one for the keys to add to the Windows registry. There is only one file to copy, usbser.sys; a flag (0x ) is used to specify that the user cannot skip copying it. The registry keys are needed to install the driver on older versions of Windows (such as Windows 98). For newer versions, the [USBtoSer.Install.Services] registers the needed kernel services; each service is actually listed in a section on its own. Finally, the last section, [Strings], defines all the string constants used through this file: [Strings] 16 Application Note
17 Application Note ATMEL="ATMEL Corp." USBtoSerialConverter="AT91 USB to Serial Converter" USBSer="USB Serial Driver" Using the Driver When a new device is plugged in for the first time, Windows looks for an appropriate specific or generic driver to use it. If it does not find one, the user is asked what to do. This is the case with the USB to serial converter, since there is no generic driver for it. To install the custom driver given in the previous section, Windows must be told where to look for it. This can be done by selecting the second option, Install from a list or specific location, when the driver installation wizards pops up. It will then ask for the directory where the driver is located. After that, it should recognize the AT91 USB to Serial Converter driver as an appropriate one and display it in the list. During the installation, the wizard asks for the location of the usbser.sys file. If it is already installed on the system, it can be found in C:\Windows\System32\Drivers\. Otherwise, it is present on the Windows installation CD. Once the driver is installed properly, a new COM port is added to the system and can be used with HyperTerminal, for example Linux Linux has two different generic drivers which are appropriate for a USB to serial converter. The first one is an Abstract Control Model driver designed for modem devices, and is simply named acm. The other one is a generic USB to serial driver named usbserial. If the support for the acm driver has been compiled in the kernel, Linux will automatically load it. A new terminal device will be created under /dev/ttyacmx. The usbserial driver must be loaded manually by using the modprobe command with the vendor ID and product ID values used by the device: modprobe usbserial vendor=0x03eb product=0x6119 Once the driver is loaded, a new terminal entry appears and should be named /dev/ttyusbx. 17
18 5. Revision History Table 5-1. Document Ref. Date Comments Change Request Ref. 6269A 10-Oct-06 First issue. 6269B 17-Jun-09 Section 4.8.2: Need more informations on the nmake utility Entire document: Update with new framework Application Note
19 Application Note 19
20 Headquarters International Atmel Corporation 2325 Orchard Parkway San Jose, CA USA Tel: 1(408) Fax: 1(408) Atmel Asia Unit 1-5 & 16, 19/F BEA Tower, Millennium City Kwun Tong Road Kwun Tong, Kowloon Hong Kong Tel: (852) Fax: (852) Atmel Europe Le Krebs 8, Rue Jean-Pierre Timbaud BP Saint-Quentin-en- Yvelines Cedex France Tel: (33) Fax: (33) Atmel Japan 9F, Tonetsu Shinkawa Bldg Shinkawa Chuo-ku, Tokyo Japan Tel: (81) Fax: (81) Product Contact Web Site Technical Support AT91SAM Support Atmel techincal support Sales Contacts Literature Requests Disclaimer: The information in this document is provided in connection with Atmel products. No license, express or implied, by estoppel or otherwise, to any intellectual property right is granted by this document or in connection with the sale of Atmel products. EXCEPT AS SET FORTH IN ATMEL S TERMS AND CONDI- TIONS OF SALE LOCATED ON ATMEL S WEB SITE, ATMEL ASSUMES NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED OR STATUTORY WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDEN- TAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, OR LOSS OF INFORMATION) ARISING OUT OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF ATMEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Atmel makes no representations or warranties with respect to the accuracy or completeness of the contents of this document and reserves the right to make changes to specifications and product descriptions at any time without notice. Atmel does not make any commitment to update the information contained herein. Unless specifically provided otherwise, Atmel products are not suitable for, and shall not be used in, automotive applications. Atmel s products are not intended, authorized, or warranted for use as components in applications intended to support or sustain life Atmel Corporation. All rights reserved. Atmel, Atmel logo and combinations thereof, and others are registered trademarks or trademarks of Atmel Corporation or its subsidiaries. ARM and Thumb are registered trademarks of ARM Ltd. Windows and others are registered trademarks or trademarks of Microsoft Corporation in U.S. and/or other countries.. Other terms and product names may be trademarks of others.
AVR32701: AVR32AP7 USB Performance. 32-bit Microcontrollers. Application Note. Features. 1 Introduction
AVR32701: AVR32AP7 USB Performance Features Linux USB bulk transfer performance ATSTK1000 (32-bit SDRAM bus width) ATNGW100 (16-bit SDRAM bus width) GadgetFS driver and gadgetfs-test application USB performance
Application Note. 8-bit Microcontrollers. AVR270: USB Mouse Demonstration
AVR270: USB Mouse Demonstration Features Runs with AT90USB Microcontrollers at 8MHz USB Low Power Bus Powered Device (less then 100mA) Supported by any PC running Windows (98SE or later), Linux or Mac
Atmel AVR4903: ASF - USB Device HID Mouse Application. Atmel Microcontrollers. Application Note. Features. 1 Introduction
Atmel AVR4903: ASF - USB Device HID Mouse Application Features USB 2.0 compliance - Chapter 9 compliance - HID compliance - Low-speed (1.5Mb/s) and full-speed (12Mb/s) data rates Standard USB HID mouse
AVR287: USB Host HID and Mass Storage Demonstration. 8-bit Microcontrollers. Application Note. Features. 1 Introduction
AVR287: USB Host HID and Mass Storage Demonstration Features Based on AVR USB OTG Reduced Host Runs on AT90USB647/1287 Support bootable/non-bootable standard USB mouse Support USB Hub feature (Mass Storage
8-bit. Application Note. Microcontrollers. AVR282: USB Firmware Upgrade for AT90USB
AVR282: USB Firmware Upgrade for AT90USB Features Supported by Atmel FLIP program on all Microsoft O/S from Windows 98SE and later FLIP 3.2.1 or greater supports Linux Default on chip USB bootloader In-System
AVR115: Data Logging with Atmel File System on ATmega32U4. Microcontrollers. Application Note. 1 Introduction. Atmel
AVR115: Data Logging with Atmel File System on ATmega32U4 Microcontrollers 01101010 11010101 01010111 10010101 Application Note 1 Introduction Atmel provides a File System management for AT90USBx and ATmegaxxUx
AVR1922: Xplain Board Controller Firmware. 8-bit Microcontrollers. Application Note. Features. 1 Introduction
AVR1922: Xplain Board Controller Firmware Features USB interface - Mass-storage to on-board DataFlash memory Atmel AVR XMEGA TM reset control 1 Introduction The Xplain board controller, an AT90USB1287,
Atmel AVR4921: ASF - USB Device Stack Differences between ASF V1 and V2. 8-bit Atmel Microcontrollers. Application Note. Features.
Atmel AVR4921: ASF - USB Device Stack Differences between ASF V1 and V2 Features Advantages Implementation differences Integration Migration from stack V1 to stack V2 8-bit Atmel Microcontrollers Application
AVR1309: Using the XMEGA SPI. 8-bit Microcontrollers. Application Note. Features. 1 Introduction SCK MOSI MISO SS
AVR1309: Using the XMEGA SPI Features Introduction to SPI and the XMEGA SPI module Setup and use of the XMEGA SPI module Implementation of module drivers Polled master Interrupt controlled master Polled
Application Note. 8-bit Microcontrollers. AVR272: USB CDC Demonstration UART to USB Bridge
AVR272: USB CDC Demonstration UART to USB Bridge Features Supported by Windows 2000 or later No driver installation Virtual COM Port Enumeration USB to RS232 Bridge with dynamic baudrate Bus powered 8-bit
AVR1510: Xplain training - XMEGA USART. 8-bit Microcontrollers. Application Note. Prerequisites. 1 Introduction
AVR1510: Xplain training - XMEGA USART Prerequisites Required knowledge AVR1500: Xplain training XMEGA Basics AVR1502: Xplain training XMEGA Direct Memory Access Controller Software prerequisites Atmel
32-bit AVR UC3 Microcontrollers. 32-bit AtmelAVR Application Note. AVR32769: How to Compile the standalone AVR32 Software Framework in AVR32 Studio V2
AVR32769: How to Compile the standalone AVR32 Software Framework in AVR32 Studio V2 1. Introduction The purpose of this application note is to show how to compile any of the application and driver examples
Using CryptoMemory in Full I 2 C Compliant Mode. Using CryptoMemory in Full I 2 C Compliant Mode AT88SC0104CA AT88SC0204CA AT88SC0404CA AT88SC0808CA
Using CryptoMemory in Full I 2 C Compliant Mode 1. Introduction This application note describes how to communicate with CryptoMemory devices in full I 2 C compliant mode. Full I 2 C compliance permits
AVR1900: Getting started with ATxmega128A1 on STK600. 8-bit Microcontrollers. Application Note. 1 Introduction
AVR1900: Getting started with ATxmega128A1 on STK600 1 Introduction This document contains information about how to get started with the ATxmega128A1 on STK 600. The first three sections contain information
AT91SAM ARM-based Flash MCU. Application Note
Modbus Slave Stack for the Atmel Family of SAM3 Microcontrollers (Free Modbus Stack from Embedded Solutions) 1. Scope This application note provides directions and instructions to application engineers
AVR32138: How to optimize the ADC usage on AT32UC3A0/1, AT32UC3A3 and AT32UC3B0/1 series. 32-bit Microcontrollers. Application Note.
AVR32138: How to optimize the ADC usage on AT32UC3A0/1, AT32UC3A3 and AT32UC3B0/1 series 1 Introduction This application note outlines the steps necessary to optimize analog to digital conversions on AT32UC3A0/1,
AVR1318: Using the XMEGA built-in AES accelerator. 8-bit Microcontrollers. Application Note. Features. 1 Introduction
AVR1318: Using the XMEGA built-in AES accelerator Features Full compliance with AES (FIPS Publication 197, 2002) - Both encryption and decryption procedures 128-bit Key and State memory XOR load option
How To Use An Atmel Atmel Avr32848 Demo For Android (32Bit) With A Microcontroller (32B) And An Android Accessory (32D) On A Microcontroller (32Gb) On An Android Phone Or
APPLICATION NOTE Atmel AVR32848: Android Accessory Demo 32-bit Atmel Microcontrollers Features Control an accessory from an Android device Send data to and from an Android device to an accessory Supported
Application Note. 8-bit Microcontrollers. AVR280: USB Host CDC Demonstration. 1. Introduction
AVR280: USB Host CDC Demonstration 1. Introduction The RS232 interface has disappeared from the new generation of PCs replaced by the USB interface. To follow this change, applications based on UART interface
Atmel AVR4920: ASF - USB Device Stack - Compliance and Performance Figures. Atmel Microcontrollers. Application Note. Features.
Atmel AVR4920: ASF - USB Device Stack - Compliance and Performance Figures Features Compliance to USB 2.0 - Chapters 8 and 9 - Classes: HID, MSC, CDC, PHDC Interoperability: OS, classes, self- and bus-powered
Application Note. 8-bit Microcontrollers. AVR293: USB Composite Device
AVR293: USB Composite Device Features Combining several USB applications using ONE DEVICE No HUB needed Bus powered 1. Introduction Adding to the flexibility given to the user with the Hot Plug & Play,
AVR1301: Using the XMEGA DAC. 8-bit Microcontrollers. Application Note. Features. 1 Introduction
AVR1301: Using the XMEGA DAC Features 12 bit resolution Up to 1 M conversions per second Continuous drive or sample-and-hold output Built-in offset and gain calibration High drive capabilities Driver source
AVR317: Using the Master SPI Mode of the USART module. 8-bit Microcontrollers. Application Note. Features. Introduction
AVR317: Using the Master SPI Mode of the USART module Features Enables Two SPI buses in one device Hardware buffered SPI communication Polled communication example Interrupt-controlled communication example
APPLICATION NOTE. Atmel AT02985: User s Guide for USB-CAN Demo on SAM4E-EK. Atmel AVR 32-bit Microcontroller. Features. Description.
APPLICATION NOTE Atmel AT02985: User s Guide for USB-CAN Demo on SAM4E-EK Atmel AVR 32-bit Microcontroller Features USB-CAN gateway USB CDC class (virtual serial port) provides low level data stream Customized
AVR32788: AVR 32 How to use the SSC in I2S mode. 32-bit Microcontrollers. Application Note. Features. 1 Introduction
AVR32788: AVR 32 How to use the SSC in I2S mode Features I²S protocol overview I²S on the AVR32 I²S sample rate configurations Example of use with AT32UC3A on EVK1105 board 32-bit Microcontrollers Application
AVR1600: Using the XMEGA Quadrature Decoder. 8-bit Microcontrollers. Application Note. Features. 1 Introduction. Sensors
AVR1600: Using the XMEGA Quadrature Decoder Features Quadrature Decoders 16-bit angular resolution Rotation speed and acceleration 1 Introduction Quadrature encoders are used to determine the position
AVR033: Getting Started with the CodeVisionAVR C Compiler. 8-bit Microcontrollers. Application Note. Features. 1 Introduction
AVR033: Getting Started with the CodeVisionAVR C Compiler Features Installing and Configuring CodeVisionAVR to Work with the Atmel STK 500 Starter Kit and AVR Studio Debugger Creating a New Project Using
USER GUIDE EDBG. Description
USER GUIDE EDBG Description The Atmel Embedded Debugger (EDBG) is an onboard debugger for integration into development kits with Atmel MCUs. In addition to programming and debugging support through Atmel
AVR319: Using the USI module for SPI communication. 8-bit Microcontrollers. Application Note. Features. Introduction
AVR319: Using the USI module for SPI communication Features C-code driver for SPI master and slave Uses the USI module Supports SPI Mode 0 and 1 Introduction The Serial Peripheral Interface (SPI) allows
AT89C5131A Starter Kit... Software User Guide
AT89C5131A Starter Kit... Software User Guide Table of Contents Section 1 Introduction... 1-1 1.1 Abbreviations...1-1 Section 2 Getting Started... 2-3 2.1 Hardware Requirements...2-3 2.2 Software Requirements...2-3
AVR305: Half Duplex Compact Software UART. 8-bit Microcontrollers. Application Note. Features. 1 Introduction
AVR305: Half Duplex Compact Software UART Features 32 Words of Code, Only Handles Baud Rates of up to 38.4 kbps with a 1 MHz XTAL Runs on Any AVR Device Only Two Port Pins Required Does Not Use Any Timer
Universal Serial Bus Class Definitions for Communication Devices
Universal Serial Bus Class Definitions for Communication Devices Version 1.0 May 8, 1998 Scope of this Revision This version 1.0 of this class specification is intended for product design. Every attempt
Application Note. Atmel CryptoAuthentication Product Uses. Atmel ATSHA204. Abstract. Overview
Application Note Atmel CryptoAuthentication Product Uses Atmel Abstract Companies are continuously searching for ways to protect property using various security implementations; however, the cost of security
AVR353: Voltage Reference Calibration and Voltage ADC Usage. 8-bit Microcontrollers. Application Note. Features. 1 Introduction
AVR353: Voltage Reference Calibration and Voltage ADC Usage Features Voltage reference calibration. - 1.100V +/-1mV (typical) and < 90ppm/ C drift from 10 C to +70 C. Interrupt controlled voltage ADC sampling.
Application Note. C51 Bootloaders. C51 General Information about Bootloader and In System Programming. Overview. Abreviations
C51 General Information about Bootloader and In System Programming Overview This document describes the Atmel Bootloaders for 8051 family processors. Abreviations ISP: In-System Programming API : Applications
Application Note. Atmel ATSHA204 Authentication Modes. Prerequisites. Overview. Introduction
Application Note Atmel Authentication Modes Prerequisites Hardware Atmel AT88CK454BLACK Evaluation Board Atmel AT88CK109STK8 Kit Software Atmel Crypto Evaluation Studio (ACES) Overview Understand which
Software Prerequisites Linux Ubuntu 12.04 LTS. Estimated completion time: 15min. The goal of this hands-on is to:
TRAINING MANUAL Using SAM-BA for Linux on SAMA5D3 Xplained AN-8995 Prerequisites Hardware Prerequisites Atmel SAMA5D3 Xplained USB serial TTL adapter (optional) FTDI TTL-232R-3V3 USB to TTL serial cable
APPLICATION NOTE. Atmel AT04389: Connecting SAMD20E to the AT86RF233 Transceiver. Atmel SAMD20. Description. Features
APPLICATION NOTE Atmel AT04389: Connecting SAMD20E to the AT86RF233 Transceiver Description Atmel SAMD20 This application note describes a method to connect an Atmel ATSAMD20E microcontroller to an Atmel
Atmel AVR4950: ASF - USB Host Stack. 8-bit Atmel Microcontrollers. Application Note. Features. 1 Introduction
Atmel AVR4950: ASF - USB Host Stack Features USB 2.0 compliance - Chapter 9 - Control, Bulk, Isochronous and Interrupt transfer types - Low Speed (1.5Mbit/s), Full Speed (12Mbit/s), High Speed (480Mbit/s)
AVR2006: Design and characterization of the Radio Controller Board's 2.4GHz PCB Antenna. Application Note. Features.
AVR26: Design and characterization of the Radio Controller Board's 2.4GHz PCB Antenna Features Radiation pattern Impedance measurements WIPL design files NEC model Application Note 1 Introduction This
SMARTCARD XPRO. Preface. SMART ARM-based Microcontrollers USER GUIDE
SMART ARM-based Microcontrollers SMARTCARD XPRO USER GUIDE Preface Atmel SMARTCARD Xplained Pro is an extension board to the Atmel Xplained Pro evaluation platform. Atmel SMARTCARD Xplained Pro is designed
General Porting Considerations. Memory EEPROM XRAM
AVR097: Migration between ATmega128 and ATmega2561 Features General Porting Considerations Memory Clock sources Interrupts Power Management BOD WDT Timers/Counters USART & SPI ADC Analog Comparator ATmega103
8-bit RISC Microcontroller. Application Note. AVR910: In-System Programming
AVR910: In-System Programming Features Complete In-System Programming Solution for AVR Microcontrollers Covers All AVR Microcontrollers with In-System Programming Support Reprogram Both Data Flash and
Application Note. USB Mass Storage Device Implementation. USB Microcontrollers. References. Abbreviations. Supported Controllers
USB Mass Storage Device Implementation References Universal Serial Bus Specification, revision 2.0 Universal Serial Bus Class Definition for Communication Devices, version 1.1 USB Mass Storage Overview,
APPLICATION NOTE. Atmel LF-RFID Kits Overview. Atmel LF-RFID Kit. LF-RFID Kit Introduction
APPLICATION NOTE Atmel LF-RFID Kits Overview Atmel LF-RFID Kit LF-RFID Kit Introduction Atmel offers several design and evaluation kits for a fast and easy way to test the LF-RFID technology but also developing
APPLICATION NOTE. Atmel AVR134: Real Time Clock (RTC) Using the Asynchronous Timer. Atmel AVR 8-bit Microcontroller. Introduction.
APPLICATION NOTE Atmel AVR134: Real Time Clock (RTC) Using the Asynchronous Timer Introduction Atmel AVR 8-bit Microcontroller This application note describes how to implement a real time counter (RTC)
AVR151: Setup and Use of the SPI. Introduction. Features. Atmel AVR 8-bit Microcontroller APPLICATION NOTE
Atmel AVR 8-bit Microcontroller AVR151: Setup and Use of the SPI APPLICATION NOTE Introduction This application note describes how to set up and use the on-chip Serial Peripheral Interface (SPI) of the
3-output Laser Driver for HD-DVD/ Blu-ray/DVD/ CD-ROM ATR0885. Preliminary. Summary. Features. Applications. 1. Description
Features Three Selectable Outputs All Outputs Can Be Used Either for Standard (5V) or High Voltage (9V) Maximum Output Current at All Outputs Up to 150 ma On-chip Low-EMI RF Oscillator With Spread-spectrum
8051 Flash Microcontroller. Application Note. A Digital Thermometer Using the Atmel AT89LP2052 Microcontroller
A Digital Thermometer Using the Atmel AT89LP2052 Microcontroller Features Temperature range -55 C to +125 C in.5 C increments LCD Display RS485 Interface Applicable to any AT89LP Microcontroller C and
Application Note. Migrating from RS-232 to USB Bridge Specification USB Microcontrollers. Doc Control. References. Abbreviations
Migrating from RS-232 to USB Bridge Specification USB Microcontrollers Doc Control Rev Purpose of Modifications Date 0.0 Creation date 24 Nov 2003 Application Note 1.0 updates 22 Dec 2003 References Universal
AT91 ARM Thumb Microcontrollers. AT91SAM CAN Bootloader. AT91SAM CAN Bootloader User Notes. 1. Description. 2. Key Features
User Notes 1. Description The CAN bootloader SAM-BA Boot4CAN allows the user to program the different memories and registers of any Atmel AT91SAM product that includes a CAN without removing them from
AN249 HUMAN INTERFACE DEVICE TUTORIAL. Relevant Devices This application note applies to all Silicon Labs USB MCUs. 1.
HUMAN INTERFACE DEVICE TUTORIAL Relevant Devices This application note applies to all Silicon Labs USB MCUs. 1. Introduction The Human Interface Device (HID) class specification allows designers to create
AT89LP Flash Data Memory. Application Note. AT89LP Flash Data Memory API. 1. Introduction. 2. Theory of Operation. 2.1 Flash Memory Operation
AT89LP Flash Data Memory API 1. Introduction Many embedded systems rely on nonvolatile parameters that are preserved across reset or power-loss events. In some systems this static information is used to
APPLICATION NOTE. AT07175: SAM-BA Bootloader for SAM D21. Atmel SAM D21. Introduction. Features
APPLICATION NOTE AT07175: SAM-BA Bootloader for SAM D21 Atmel SAM D21 Introduction Atmel SAM Boot Assistant (Atmel SAM-BA ) allows In-System Programming (ISP) from USB or UART host without any external
AVR ONE!... Quick-start Guide. EVK1101 + Windows 32104B AVR ONE! 02/10
AVR ONE!... Quick-start Guide EVK1101 + Windows Table of Contents (Continued) Section 1 Introduction...1-1 1.1 General... 1-1 1.2 Requirements... 1-1 Section 2 Quick-start guide (short version)...2-1 2.1
Atmel AVR4027: Tips and Tricks to Optimize Your C Code for 8-bit AVR Microcontrollers. 8-bit Atmel Microcontrollers. Application Note.
Atmel AVR4027: Tips and Tricks to Optimize Your C Code for 8-bit AVR Microcontrollers Features Atmel AVR core and Atmel AVR GCC introduction Tips and tricks to reduce code size Tips and tricks to reduce
AVR125: ADC of tinyavr in Single Ended Mode. 8-bit Microcontrollers. Application Note. Features. 1 Introduction
AVR125: ADC of tinyavr in Single Ended Mode Features Up to 10bit resolution Up to 15kSPS Auto triggered and single conversion mode Optional left adjustment for ADC result readout Driver source code included
APPLICATION NOTE. Secure Personalization with Transport Key Authentication. ATSHA204A, ATECC108A, and ATECC508A. Introduction.
APPLICATION NOTE Secure Personalization with Transport Key Authentication ATSHA204A, ATECC108A, and ATECC508A Introduction The Atmel CryptoAuthentication ATSHA204A, ATECC108A, and ATECC508A devices (crypto
Application Note. USB Microcontrollers. USB PC Drivers Based on Generic HID Class. 1. Introduction
USB PC Drivers Based on Generic HID Class Supported by Windows 98 SE or later Full Duplex Communication Send Commands Through the EP 0 Dynamic Link Library Supported by any Compiler: VC++, JAVA, VB...
AN1164. USB CDC Class on an Embedded Device INTRODUCTION ASSUMPTIONS FEATURES LIMITATIONS
USB CDC Class on an Embedded Device AN1164 Author: Bud Caldwell Microchip Technology Inc. INTRODUCTION The Universal Serial Bus (USB) has made it very simple for end users to attach peripheral devices
Introducing a platform to facilitate reliable and highly productive embedded developments
Beyond the IDE Introducing a platform to facilitate reliable and highly productive embedded developments Author: Joerg Bertholdt, Director of Marketing, MCU Tools and Software, Atmel Corporation Beyond
Dell Statistica 13.0. Statistica Enterprise Installation Instructions
Dell Statistica 13.0 2015 Dell Inc. ALL RIGHTS RESERVED. This guide contains proprietary information protected by copyright. The software described in this guide is furnished under a software license or
TivaWare USB Library USER S GUIDE SW-TM4C-USBL-UG-2.1.1.71. Copyright 2008-2015 Texas Instruments Incorporated
TivaWare USB Library USER S GUIDE SW-TM4C-USBL-UG-2.1.1.71 Copyright 2008-2015 Texas Instruments Incorporated Copyright Copyright 2008-2015 Texas Instruments Incorporated. All rights reserved. Tiva and
AT88CK490 Evaluation Kit
AT88CK490 Evaluation Kit CryptoAuthentication USB Dongle HARDWARE USER GUIDE Atmel AT88CK490 CryptoAuthentication Evaluation Kit Introduction The Atmel AT88CK490 CryptoAuthentication Evaluation Kit is
AVR030: Getting Started with IAR Embedded Workbench for Atmel AVR. 8-bit Microcontrollers. Application Note. Features.
AVR030: Getting Started with IAR Embedded Workbench for Atmel AVR Features How to open a new workspace and project in IAR Embedded Workbench Description and option settings for compiling the c-code Setting
APPLICATION NOTE. Atmel AVR443: Sensor-based Control of Three Phase Brushless DC Motor. Atmel AVR 8-bit Microcontrollers. Features.
APPLICATION NOTE Features Atmel AVR443: Sensor-based Control of Three Phase Brushless DC Motor Less than 5µs response time on Hall sensor output change Theoretical maximum of 1600k RPM Over-current sensing
USB Driver. Installation Guide for H5 Devices
USB Driver Installation Guide for H5 Devices USB DRIVER INSTALLATION GUIDE USB Driver Installation Guide For the following devices: MTSMC-H5-U, MTD-H5, MTPCIE-H5, MT100UCC-H5, MTC-H5-B03, MTCBA-H5-U S000553,
Ways to Use USB in Embedded Systems
Ways to Use USB in Embedded Systems by Yingbo Hu, R&D Embedded Engineer and Ralph Moore, President of Micro Digital Universal Serial Bus (USB) is a connectivity specification that provides ease of use,
New Features and Enhancements
Dell Migration Manager for SharePoint 4.7 Build number: 4.7.20141207 December 9, 2014 These release notes provide information about the Dell Migration Manager for SharePoint release. New Features and Enhancements
Application Note. 1. Introduction. 2. Associated Documentation. 3. Gigabit Ethernet Implementation on SAMA5D3 Series. AT91SAM ARM-based Embedded MPU
Application Note AT91SAM ARM-based Embedded MPU Gigabit Ethernet Implementation on SAMA5D3 Series 1. Introduction The SAMA5D3 series is a member of the Atmel microprocessor family which is based on the
256K (32K x 8) Battery-Voltage Parallel EEPROMs AT28BV256
Features Single 2.7V - 3.6V Supply Fast Read Access Time 200 ns Automatic Page Write Operation Internal Address and Data Latches for 64 Bytes Internal Control Timer Fast Write Cycle Times Page Write Cycle
COM Port Stress Test
COM Port Stress Test COM Port Stress Test All rights reserved. No parts of this work may be reproduced in any form or by any means - graphic, electronic, or mechanical, including photocopying, recording,
Atmel AVR1017: XMEGA - USB Hardware Design Recommendations. 8-bit Atmel Microcontrollers. Application Note. Features.
Atmel AVR1017: XMEGA - USB Hardware Design Recommendations Features USB 2.0 compliance - Signal integrity - Power consumption - Back driver voltage - Inrush current EMC/EMI considerations Layout considerations
Designing Feature-Rich User Interfaces for Home and Industrial Controllers
Designing Feature-Rich User Interfaces for Home and Industrial Controllers Author: Frédéric Gaillard, Product Marketing Manager, Atmel We have all become familiar with intuitive user interfaces on our
USER GUIDE. ZigBit USB Stick User Guide. Introduction
USER GUIDE ZigBit USB Stick User Guide Introduction This user guide describes how to get started with the Atmel ZigBit USB sticks. The ZigBit USB sticks is targeted for evaluating the USB features of the
APPLICATION NOTE Atmel AT02509: In House Unit with Bluetooth Low Energy Module Hardware User Guide 8-bit Atmel Microcontroller Features Description
APPLICATION NOTE Atmel AT259: In House Unit with Bluetooth Low Energy Module Hardware User Guide Features 8-bit Atmel Microcontroller Low power consumption Interface with BLE with UART Bi-direction wake
Universal Serial Bus Communications Class Subclass Specification for Ethernet Emulation Model Devices. Revision 1.0
Universal Serial Bus Communications Class Subclass Specification for Ethernet Emulation Model Devices Revision 1.0 February 2, 2005 CDC Ethernet Emulation Model Revision 1.0 Revision History Rev Date Filename
AT91 ARM Thumb Microcontrollers. Application Note. GNU-Based Software Development on AT91SAM Microcontrollers. 1. Introduction. 2.
GNU-Based Software Development on AT91SAM Microcontrollers 1. Introduction Most development solutions used today in the ARM world are commercial packages, such as IAR EWARM or ARM RealView. Indeed, they
AN3354 Application note
Application note STM32F105/107 in-application programming using a USB host 1 Introduction An important requirement for most Flash-memory-based systems is the ability to update firmware installed in the
CryptoAuth Xplained Pro
CryptoAuth Xplained Pro CryptoAuthentication Xplained Pro Extension Board HARDWARE USER GUIDE Atmel CryptoAuth Xplained Pro Extension Board Introduction The Atmel CryptoAuth Xplained Pro (CAXPro) Evaluation
4.0. Offline Folder Wizard. User Guide
4.0 Offline Folder Wizard User Guide Copyright Quest Software, Inc. 2007. All rights reserved. This guide contains proprietary information, which is protected by copyright. The software described in this
AVR1321: Using the Atmel AVR XMEGA 32-bit Real Time Counter and Battery Backup System. 8-bit Microcontrollers. Application Note.
AVR1321: Using the Atmel AVR XMEGA 32-bit Real Time Counter and Battery Backup System Features 32-bit Real Time Counter (RTC) - 32-bit counter - Selectable clock source 1.024kHz 1Hz - Long overflow time
JTAGjet. series SIGNUM SYSTEMS CORPORATION. USB 2.0 Driver for JTAGjet and ADM51. Installation Instructions
JTAGjet series SIGNUM SYSTEMS CORPORATION USB 2.0 Driver for JTAGjet and ADM51 Installation Instructions COPYRIGHT NOTICE Copyright (c) 2011 by Signum Systems Corporation. All rights are reserved worldwide.
APPLICATION NOTE. Atmel AVR911: AVR Open Source Programmer. 8-bit Atmel Microcontrollers. Features. Introduction
APPLICATION NOTE Atmel AVR911: AVR Open Source Programmer 8-bit Atmel Microcontrollers Features Open source C++ code Modular design Reads device information from the Atmel AVR Studio XML files Supports
How To Design An Ism Band Antenna For 915Mhz/2.4Ghz Ism Bands On A Pbbb (Bcm) Board
APPLICATION NOTE Features AT09567: ISM Band PCB Antenna Reference Design Atmel Wireless Compact PCB antennas for 915MHz and 2.4GHz ISM bands Easy to integrate Altium design files and gerber files Return
AVR2004: LC-Balun for AT86RF230. Application Note. Features. 1 Introduction
AVR2004: LC-Balun for AT86RF230 Features Balun for AT86RF230 with lumped elements Simulation results S-Parameter file 1 Introduction In some cases the used balun on the ATAVR RZ502 Radio Boards must be
AN220 USB DRIVER CUSTOMIZATION
USB DRIVER CUSTOMIZATION Relevant Devices This application note applies to the following devices: CP2101/2/3/4/5/8, C8051F320/1/6/7, C8051F340/1/2/3/4/5/6/7/8/9/A/B/C/D, C8051F380/1/2/3/4/5/6/7, C8051T320/1/2/3/6/7,
USB-to-Serial RS-232 Hub USB-to-Serial RS-422/485 Hub USER MANUAL UC2322 / UC2324 / UC4852 / UC4854
USB-to-Serial RS-232 Hub USB-to-Serial RS-422/485 Hub USER MANUAL UC2322 / UC2324 / UC4852 / UC4854 FCC Information This equipment has been tested and found to comply with the limits for a Class B digital
December 2002, ver. 1.0 Application Note 285. This document describes the Excalibur web server demonstration design and includes the following topics:
Excalibur Web Server Demonstration December 2002, ver. 1.0 Application Note 285 Introduction This document describes the Excalibur web server demonstration design and includes the following topics: Design
Keep it Simple Timing
Keep it Simple Timing Support... 1 Introduction... 2 Turn On and Go... 3 Start Clock for Orienteering... 3 Pre Start Clock for Orienteering... 3 Real Time / Finish Clock... 3 Timer Clock... 4 Configuring
AVR1003: Using the XMEGA Clock System. 8-bit Microcontrollers. Application Note. Features. 1 Introduction
AVR1003: Using the XMEGA Clock System Features Internal 32 khz, 2 MHz, and 32 MHz oscillators External crystal oscillator or clock input Internal PLL with multiplication factor 1x to 31x Safe clock source
Universal Serial Bus Communications Class Subclass Specification for PSTN Devices. Revision 1.2
Universal Serial Bus Communications Class Subclass Specification for PSTN Devices Revision 1.2 February 9, 2007 CDC PSTN Subclass Revision 1.2 Revision History Rev Date Filename Comments 1.2 2/9/07 Final
8-bit RISC Microcontroller. Application Note. AVR155: Accessing an I 2 C LCD Display using the AVR 2-wire Serial Interface
AVR155: Accessing an I 2 C LCD Display using the AVR 2-wire Serial Interface Features Compatible with Philips' I 2 C protocol 2-wire Serial Interface Master Driver for Easy Transmit and Receive Function
Windows Embedded OS USB Driver Installation
Windows Embedded OS USB Driver Installation For LISA-U / SARA-U / TOBY-L2 series Application Note Abstract This document explains how to install the USB driver in a Windows Embedded OS. www.u-blox.com
AVR32807: Getting Started with the AVR UC3 Software Framework USB Classes. 32-bit Microcontrollers. Application Note. Features.
AVR32807: Getting Started with the AVR UC3 Software Framework USB Classes Features Full Speed (12Mbit/s) and High Speed (480Mbit/s) data rates Control, Bulk, Isochronuous and Interrupt transfer types Device
AVR134: Real Time Clock (RTC) using the Asynchronous Timer. 8-bit Microcontrollers. Application Note. Features. 1 Introduction
AVR134: Real Time Clock (RTC) using the Asynchronous Timer Features Real Time Clock with Very Low Power Consumption (4 μa @ 3.3V) Very Low Cost Solution Adjustable Prescaler to Adjust Precision Counts
Dell Spotlight on Active Directory 6.8.3. Server Health Wizard Configuration Guide
Dell Spotlight on Active Directory 6.8.3 Server Health Wizard Configuration Guide 2013 Dell Software Inc. ALL RIGHTS RESERVED. This guide contains proprietary information protected by copyright. The software
Introduction to Version Control in
Introduction to Version Control in In you can use Version Control to work with different versions of database objects and to keep the database updated. You can review, manage, compare, and revert to any
AT91 ARM Thumb Microcontrollers. Application Note. Interfacing a PC Card to an AT91RM9200-DK. Introduction. Hardware Interface
Interfacing a PC Card to an AT91RM9200-DK Introduction This Application Note describes the implementation of a PCMCIA interface on an AT91RM9200 Development Kit (DK) using the External Bus Interface (EBI).
AN295 USB AUDIO CLASS TUTORIAL. 1. Introduction. 2. USB, Isochronous Transfers, and the Audio Class. 1.1. Overview. 2.1. USB Operational Overview
USB AUDIO CLASS TUTORIAL 1. Introduction Isochronous data transfers can be used by universal serial bus (USB) devices designed to transfer data to or from a host at a constant rate. Systems streaming audio
