Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
F
fwatch
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
8
Issues
8
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
fwatch
Commits
d8722d71
Commit
d8722d71
authored
Aug 13, 2014
by
Theodor-Adrian Stana
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Back to working with LEUART to USB bridge (still not working)
parent
63ddf6ed
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
143 additions
and
76 deletions
+143
-76
descriptors.h
sw/usbdcdc/src/descriptors.h
+98
-27
main.c
sw/usbdcdc/src/main.c
+42
-47
usbconfig.h
sw/usbdcdc/src/usbconfig.h
+3
-2
No files found.
sw/usbdcdc/src/descriptors.h
View file @
d8722d71
/***************************************************************************//**
* @file descriptors.h
* @brief USB descriptors for
Vendor Unique Device
example project.
* @brief USB descriptors for
CDC Serial Port adapter
example project.
* @version 3.20.5
*******************************************************************************
* @section License
...
...
@@ -23,51 +23,125 @@ static const USB_DeviceDescriptor_TypeDef deviceDesc __attribute__ ((aligned(4))
.
bLength
=
USB_DEVICE_DESCSIZE
,
.
bDescriptorType
=
USB_DEVICE_DESCRIPTOR
,
.
bcdUSB
=
0x0200
,
.
bDeviceClass
=
0xFF
,
.
bDeviceClass
=
USB_CLASS_CDC
,
.
bDeviceSubClass
=
0
,
.
bDeviceProtocol
=
0
,
.
bMaxPacketSize0
=
USB_EP0_SIZE
,
.
idVendor
=
0x10
C
4
,
.
idVendor
=
0x10
c
4
,
.
idProduct
=
0x00ff
,
.
bcdDevice
=
0x0000
,
.
iManufacturer
=
1
,
.
iProduct
=
2
,
.
iSerialNumber
=
3
,
.
iSerialNumber
=
0
,
.
bNumConfigurations
=
1
};
#define CONFIG_DESCSIZE ( USB_CONFIG_DESCSIZE + \
(
USB_INTERFACE_DESCSIZE
*
2
)
+
\
(
USB_ENDPOINT_DESCSIZE
*
NUM_EP_USED
)
+
\
USB_CDC_HEADER_FND_DESCSIZE
+
\
USB_CDC_CALLMNG_FND_DESCSIZE
+
\
USB_CDC_ACM_FND_DESCSIZE
+
\
5
)
EFM32_ALIGN
(
4
)
static
const
uint8_t
configDesc
[]
__attribute__
((
aligned
(
4
)))
=
{
/*** Configuration descriptor ***/
USB_CONFIG_DESCSIZE
,
/* bLength */
USB_CONFIG_DESCRIPTOR
,
/* bDescriptorType */
USB_CONFIG_DESCSIZE
+
/* wTotalLength (LSB) */
USB_INTERFACE_DESCSIZE
+
(
USB_ENDPOINT_DESCSIZE
*
NUM_EP_USED
),
(
USB_CONFIG_DESCSIZE
+
/* wTotalLength (MSB) */
USB_INTERFACE_DESCSIZE
+
(
USB_ENDPOINT_DESCSIZE
*
NUM_EP_USED
))
>>
8
,
1
,
/* bNumInterfaces */
CONFIG_DESCSIZE
,
/* wTotalLength (LSB) */
USB_CONFIG_DESCSIZE
>>
8
,
/* wTotalLength (MSB) */
2
,
/* bNumInterfaces */
1
,
/* bConfigurationValue */
0
,
/* iConfiguration */
CONFIG_DESC_BM_RESERVED_D7
|
/* bmAttrib: Self powered */
CONFIG_DESC_BM_SELFPOWERED
,
CONFIG_DESC_MAXPOWER_mA
(
100
),
/* bMaxPower: 100 mA */
/***
Interface descriptor
***/
/***
Communication Class Interface descriptor (interface no. 0)
***/
USB_INTERFACE_DESCSIZE
,
/* bLength */
USB_INTERFACE_DESCRIPTOR
,
/* bDescriptorType */
0
,
/* bInterfaceNumber */
0
,
/* bAlternateSetting */
NUM_EP_USED
,
/* bNumEndpoints */
0xFF
,
/* bInterfaceClass */
1
,
/* bNumEndpoints */
USB_CLASS_CDC
,
/* bInterfaceClass */
USB_CLASS_CDC_ACM
,
/* bInterfaceSubClass */
0
,
/* bInterfaceProtocol */
0
,
/* iInterface */
/*** CDC Header Functional descriptor ***/
USB_CDC_HEADER_FND_DESCSIZE
,
/* bFunctionLength */
USB_CS_INTERFACE_DESCRIPTOR
,
/* bDescriptorType */
USB_CLASS_CDC_HFN
,
/* bDescriptorSubtype */
0x20
,
/* bcdCDC spec.no LSB */
0x01
,
/* bcdCDC spec.no MSB */
/*** CDC Call Management Functional descriptor ***/
USB_CDC_CALLMNG_FND_DESCSIZE
,
/* bFunctionLength */
USB_CS_INTERFACE_DESCRIPTOR
,
/* bDescriptorType */
USB_CLASS_CDC_CMNGFN
,
/* bDescriptorSubtype */
0
,
/* bmCapabilities */
1
,
/* bDataInterface */
/*** CDC Abstract Control Management Functional descriptor ***/
USB_CDC_ACM_FND_DESCSIZE
,
/* bFunctionLength */
USB_CS_INTERFACE_DESCRIPTOR
,
/* bDescriptorType */
USB_CLASS_CDC_ACMFN
,
/* bDescriptorSubtype */
0x02
,
/* bmCapabilities */
/* The capabilities that this configuration supports: */
/* D7..D4: RESERVED (Reset to zero) */
/* D3: 1 - Device supports the notification Network_Connection. */
/* D2: 1 - Device supports the request Send_Break */
/* D1: 1 - Device supports the request combination of Set_Line_Coding, */
/* Set_Control_Line_State, Get_Line_Coding, and the */
/* notification Serial_State. */
/* D0: 1 - Device supports the request combination of Set_Comm_Feature, */
/* Clear_Comm_Feature, and Get_Comm_Feature. */
/*** CDC Union Functional descriptor ***/
5
,
/* bFunctionLength */
USB_CS_INTERFACE_DESCRIPTOR
,
/* bDescriptorType */
USB_CLASS_CDC_UNIONFN
,
/* bDescriptorSubtype */
0
,
/* bControlInterface, itf. no. 0 */
1
,
/* bSubordinateInterface0, itf. no. 1 */
/*** CDC Notification endpoint descriptor ***/
USB_ENDPOINT_DESCSIZE
,
/* bLength */
USB_ENDPOINT_DESCRIPTOR
,
/* bDescriptorType */
EP_NOTIFY
,
/* bEndpointAddress (IN) */
USB_EPTYPE_INTR
,
/* bmAttributes */
BULK_EP_SIZE
,
/* wMaxPacketSize (LSB) */
0
,
/* wMaxPacketSize (MSB) */
0xFF
,
/* bInterval */
/*** Data Class Interface descriptor (interface no. 1) ***/
USB_INTERFACE_DESCSIZE
,
/* bLength */
USB_INTERFACE_DESCRIPTOR
,
/* bDescriptorType */
1
,
/* bInterfaceNumber */
0
,
/* bAlternateSetting */
2
,
/* bNumEndpoints */
USB_CLASS_CDC_DATA
,
/* bInterfaceClass */
0
,
/* bInterfaceSubClass */
0
,
/* bInterfaceProtocol */
0
,
/* iInterface */
/*** CDC Data interface endpoint descriptors ***/
USB_ENDPOINT_DESCSIZE
,
/* bLength */
USB_ENDPOINT_DESCRIPTOR
,
/* bDescriptorType */
EP_DATA_IN
,
/* bEndpointAddress (IN) */
USB_EPTYPE_BULK
,
/* bmAttributes */
BULK_EP_SIZE
,
/* wMaxPacketSize (LSB) */
0
,
/* wMaxPacketSize (MSB) */
0
,
/* bInterval */
USB_ENDPOINT_DESCSIZE
,
/* bLength */
USB_ENDPOINT_DESCRIPTOR
,
/* bDescriptorType */
EP_DATA_OUT
,
/* bEndpointAddress (OUT)*/
USB_EPTYPE_BULK
,
/* bmAttributes */
BULK_EP_SIZE
,
/* wMaxPacketSize (LSB) */
0
,
/* wMaxPacketSize (MSB) */
0
/* bInterval */
};
STATIC_CONST_STRING_DESC_LANGID
(
langID
,
0x04
,
0x09
);
...
...
@@ -75,29 +149,26 @@ STATIC_CONST_STRING_DESC( iManufacturer, 'S','i','l','i','c','o','n',' ','L', \
'a'
,
'b'
,
'o'
,
'r'
,
'a'
,
't'
,
'o'
,
'r'
,
'i'
,
\
'e'
,
's'
,
' '
,
'I'
,
'n'
,
'c'
,
'.'
);
STATIC_CONST_STRING_DESC
(
iProduct
,
'E'
,
'F'
,
'M'
,
'3'
,
'2'
,
' '
,
'U'
,
'S'
,
'B'
,
\
' '
,
'V'
,
'e'
,
'n'
,
'd'
,
'o'
,
'r'
,
' '
,
\
'U'
,
'n'
,
'i'
,
'q'
,
'u'
,
'e'
,
' '
,
\
'L'
,
'E'
,
'D'
,
' '
,
\
'D'
,
'e'
,
'v'
,
'i'
,
'c'
,
'e'
);
STATIC_CONST_STRING_DESC
(
iSerialNumber
,
'0'
,
'0'
,
'0'
,
'0'
,
'0'
,
'0'
,
\
'0'
,
'0'
,
'1'
,
'2'
,
'3'
,
'4'
);
' '
,
'C'
,
'D'
,
'C'
,
' '
,
's'
,
'e'
,
'r'
,
'i'
,
\
'a'
,
'l'
,
' '
,
'p'
,
'o'
,
'r'
,
't'
,
' '
,
'd'
,
\
'e'
,
'v'
,
'i'
,
'c'
,
'e'
);
static
const
void
*
const
strings
[]
=
{
&
langID
,
&
iManufacturer
,
&
iProduct
,
&
iSerialNumber
};
/* Endpoint buffer sizes */
/* 1 = single buffer, 2 = double buffering, 3 = tripple buffering ... */
static
const
uint8_t
bufferingMultiplier
[
NUM_EP_USED
+
1
]
=
{
1
};
/* 1 = single buffer, 2 = double buffering, 3 = triple buffering ... */
/* Use double buffering on the BULK endpoints. */
static
const
uint8_t
bufferingMultiplier
[
NUM_EP_USED
+
1
]
=
{
1
,
1
,
2
,
2
};
static
const
USBD_Callbacks_TypeDef
callbacks
=
{
.
usbReset
=
NULL
,
.
usbStateChange
=
NULL
,
.
usbStateChange
=
StateChange
,
.
setupCmd
=
SetupCmd
,
.
isSelfPowered
=
NULL
,
.
sofInt
=
NULL
...
...
sw/usbdcdc/src/main.c
View file @
d8722d71
...
...
@@ -159,8 +159,8 @@ int main(void)
GPIO_PinModeSet
(
gpioPortE
,
11
,
gpioModePushPull
,
0
);;
GPIO_PinModeSet
(
gpioPortE
,
12
,
gpioModePushPull
,
1
);;
//
SerialPortInit();
//
DmaSetup();
//
SerialPortInit();
//
DmaSetup();
USBD_Init
(
&
initstruct
);
/*
...
...
@@ -173,9 +173,9 @@ int main(void)
for
(;;)
{
//
GPIO_PinOutToggle(gpioPortE, 11);
//
GPIO_PinOutToggle(gpioPortE, 12);
//
delay(1000);
GPIO_PinOutToggle
(
gpioPortE
,
11
);
GPIO_PinOutToggle
(
gpioPortE
,
12
);
delay
(
1000
);
}
}
...
...
@@ -490,51 +490,46 @@ static int SetupCmd(const USB_Setup_TypeDef *setup)
{
int
r
=
USB_STATUS_REQ_UNHANDLED
;
if
(
setup
->
Type
==
USB_SETUP_TYPE_VENDOR
)
//
&&
//(setup->Recipient == USB_SETUP_RECIPIENT_DEVI
CE))
if
(
(
setup
->
Type
==
USB_SETUP_TYPE_CLASS
)
&&
(
setup
->
Recipient
==
USB_SETUP_RECIPIENT_INTERFA
CE
))
{
switch
(
setup
->
bRequest
)
{
case
LED_SET
:
setup
->
wValue
?
GPIO_PinOutSet
(
gpioPortE
,
setup
->
wIndex
)
:
GPIO_PinOutClear
(
gpioPortE
,
setup
->
wIndex
);
r
=
USB_STATUS_OK
;
break
;
// case USB_CDC_GETLINECODING:
// /********************/
// if ((setup->wValue == 0) &&
// (setup->wIndex == 0) && /* Interface no. */
// (setup->wLength == 7) && /* Length of cdcLineCoding */
// (setup->Direction == USB_SETUP_DIR_IN))
// {
// /* Send current settings to USB host. */
// USBD_Write(0, (void*) &cdcLineCoding, 7, NULL);
// r = USB_STATUS_OK;
// }
// break;
//
// case USB_CDC_SETLINECODING:
// /********************/
// if ((setup->wValue == 0) &&
// (setup->wIndex == 0) && /* Interface no. */
// (setup->wLength == 7) && /* Length of cdcLineCoding */
// (setup->Direction != USB_SETUP_DIR_IN))
// {
// /* Get new settings from USB host. */
// USBD_Read(0, (void*) &cdcLineCoding, 7, LineCodingReceived);
// r = USB_STATUS_OK;
// }
// break;
//
// case USB_CDC_SETCTRLLINESTATE:
// /********************/
// if ((setup->wIndex == 0) && /* Interface no. */
// (setup->wLength == 0)) /* No data */
// {
// /* Do nothing ( Non compliant behaviour !! ) */
// r = USB_STATUS_OK;
// }
// break;
case
USB_CDC_GETLINECODING
:
/********************/
if
((
setup
->
wValue
==
0
)
&&
(
setup
->
wIndex
==
0
)
&&
/* Interface no. */
(
setup
->
wLength
==
7
)
&&
/* Length of cdcLineCoding */
(
setup
->
Direction
==
USB_SETUP_DIR_IN
))
{
/* Send current settings to USB host. */
USBD_Write
(
0
,
(
void
*
)
&
cdcLineCoding
,
7
,
NULL
);
r
=
USB_STATUS_OK
;
}
break
;
case
USB_CDC_SETLINECODING
:
/********************/
if
((
setup
->
wValue
==
0
)
&&
(
setup
->
wIndex
==
0
)
&&
/* Interface no. */
(
setup
->
wLength
==
7
)
&&
/* Length of cdcLineCoding */
(
setup
->
Direction
!=
USB_SETUP_DIR_IN
))
{
/* Get new settings from USB host. */
USBD_Read
(
0
,
(
void
*
)
&
cdcLineCoding
,
7
,
LineCodingReceived
);
r
=
USB_STATUS_OK
;
}
break
;
case
USB_CDC_SETCTRLLINESTATE
:
/********************/
if
((
setup
->
wIndex
==
0
)
&&
/* Interface no. */
(
setup
->
wLength
==
0
))
/* No data */
{
/* Do nothing ( Non compliant behaviour !! ) */
r
=
USB_STATUS_OK
;
}
break
;
}
}
...
...
sw/usbdcdc/src/usbconfig.h
View file @
d8722d71
...
...
@@ -27,13 +27,14 @@ extern "C" {
** Specify number of endpoints used (in addition to EP0). **
** **
*****************************************************************************/
#define NUM_EP_USED
0
#define NUM_EP_USED
3
/****************************************************************************
** **
**
Configure serial port debug output.
**
**
Specify number of application timers you need.
**
** **
*****************************************************************************/
#define NUM_APP_TIMERS 1
#ifdef __cplusplus
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment