USB-CDC test

This commit is contained in:
NIIBE Yutaka
2010-08-10 15:35:34 +09:00
parent 8985ad0530
commit 383424e1c3
5 changed files with 45 additions and 23 deletions

View File

@@ -114,11 +114,11 @@
* Everything input with pull-up except: * Everything input with pull-up except:
* PC6 - Normal input because there is an external resistor. * PC6 - Normal input because there is an external resistor.
* PC7 - Normal input because there is an external resistor. * PC7 - Normal input because there is an external resistor.
* PC11 - Push Pull output (CAN CNTRL). * PC11 - Open Drain output (USB disconnect).
* PC12 - Push Pull output (LED). * PC12 - Push Pull output (LED).
*/ */
#define VAL_GPIOCCRL 0x44888888 /* PC7...PC0 */ #define VAL_GPIOCCRL 0x44888888 /* PC7...PC0 */
#define VAL_GPIOCCRH 0x88833888 /* PC15...PC8 */ #define VAL_GPIOCCRH 0x88837888 /* PC15...PC8 */
#define VAL_GPIOCODR 0xFFFFFFFF #define VAL_GPIOCODR 0xFFFFFFFF
/* /*

View File

@@ -1,5 +1,5 @@
# List of all the board related files. # List of all the board related files.
BOARDSRC = ${CHIBIOS}/boards/OLIMEX_STM32_P103/board.c BOARDSRC = ../boards/OLIMEX_STM32_H103/board.c
# Required include directories # Required include directories
BOARDINC = ${CHIBIOS}/boards/OLIMEX_STM32_P103 BOARDINC = ../boards/OLIMEX_STM32_H103

View File

@@ -57,7 +57,6 @@ LDSCRIPT= gpgtoken.ld
# Imported source files # Imported source files
CHIBIOS = ../ChibiOS_2.0.2 CHIBIOS = ../ChibiOS_2.0.2
include $(CHIBIOS)/boards/OLIMEX_STM32_P103/board.mk
include $(CHIBIOS)/os/hal/platforms/STM32/platform.mk include $(CHIBIOS)/os/hal/platforms/STM32/platform.mk
include $(CHIBIOS)/os/hal/hal.mk include $(CHIBIOS)/os/hal/hal.mk
include $(CHIBIOS)/os/ports/GCC/ARMCMx/STM32F10x/port.mk include $(CHIBIOS)/os/ports/GCC/ARMCMx/STM32F10x/port.mk
@@ -65,6 +64,7 @@ include $(CHIBIOS)/os/kernel/kernel.mk
include $(CHIBIOS)/test/test.mk include $(CHIBIOS)/test/test.mk
include stmusb.mk include stmusb.mk
include usbcdc.mk include usbcdc.mk
include ../boards/OLIMEX_STM32_H103/board.mk
# C sources that can be compiled in ARM or THUMB mode depending on the global # C sources that can be compiled in ARM or THUMB mode depending on the global
# setting. # setting.
@@ -78,7 +78,7 @@ CSRC = $(PORTSRC) \
$(CHIBIOS)/os/various/syscalls.c \ $(CHIBIOS)/os/various/syscalls.c \
$(STMUSBSRC) \ $(STMUSBSRC) \
$(USBCDCSRC) \ $(USBCDCSRC) \
main.c main.c hw_config.c usb_lld.c
# List ASM source files here # List ASM source files here
ASMSRC = $(PORTASM) \ ASMSRC = $(PORTASM) \

View File

@@ -27,6 +27,13 @@
#include "ch.h" #include "ch.h"
#include "hal.h" #include "hal.h"
#include "test.h" #include "test.h"
#include "usb_lld.h"
#include "usb_lib.h"
#include "usb_istr.h"
#include "usb_desc.h"
#include "hw_config.h"
#include "usb_pwr.h"
/* /*
* Red LEDs blinker thread, times are in milliseconds. * Red LEDs blinker thread, times are in milliseconds.
@@ -36,14 +43,20 @@ static msg_t Thread1(void *arg) {
(void)arg; (void)arg;
while (TRUE) { while (TRUE) {
palClearPad(IOPORT3, GPIOC_LED); palClearPad (IOPORT3, GPIOC_LED);
chThdSleepMilliseconds(500); chThdSleepMilliseconds (500);
palSetPad(IOPORT3, GPIOC_LED); palSetPad (IOPORT3, GPIOC_LED);
chThdSleepMilliseconds(500); chThdSleepMilliseconds (500);
} }
return 0; return 0;
} }
extern uint32_t count_in;
extern __IO uint32_t count_out;
extern uint8_t buffer_in[VIRTUAL_COM_PORT_DATA_SIZE];
extern uint8_t buffer_out[VIRTUAL_COM_PORT_DATA_SIZE];
extern void USB_Init (void);
/* /*
* Entry point, note, the main() function is already a thread in the system * Entry point, note, the main() function is already a thread in the system
* on entry. * on entry.
@@ -53,24 +66,34 @@ int main(int argc, char **argv) {
(void)argc; (void)argc;
(void)argv; (void)argv;
/* usb_lld_init ();
* Activates the serial driver 2 using the driver default configuration. USB_Init();
*/
sdStart(&SD2, NULL);
/* /*
* Creates the blinker thread. * Creates the blinker thread.
*/ */
chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL); chThdCreateStatic (waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
/*
* Normal main() thread activity, in this demo it does nothing except
* sleeping in a loop and check the button state.
*/
while (TRUE) { while (TRUE) {
if (palReadPad(IOPORT1, GPIOA_BUTTON)) if (palReadPad(IOPORT1, GPIOA_BUTTON))
TestThread(&SD2); palSetPad (IOPORT3, GPIOC_LED);
chThdSleepMilliseconds(500);
if ((count_out != 0) && (bDeviceState == CONFIGURED)) {
uint8_t i;
for (i = 0; i<count_out; i++) {
buffer_in[(count_in+i)%64] = buffer_out[i];
}
count_in += count_out;
count_out = 0;
}
if (count_in > 0) {
USB_SIL_Write (EP1_IN, buffer_in, count_in);
SetEPTxValid (ENDP1);
}
chThdSleepMilliseconds (50);
} }
return 0; return 0;
} }

View File

@@ -1,5 +1,4 @@
USBCDCDIR = ../USBCDC USBCDCDIR = ../USBCDC
USBCDCSRC= $(USBCDCDIR)/usb_desc.c \ USBCDCSRC= $(USBCDCDIR)/usb_desc.c \
$(USBCDCDIR)/usb_endp.c $(USBCDCDIR)/usb_istr.c \ $(USBCDCDIR)/usb_endp.c $(USBCDCDIR)/usb_istr.c \
$(USBCDCDIR)/usb_prop.c $(USBCDCDIR)/usb_pwr.c \ $(USBCDCDIR)/usb_prop.c $(USBCDCDIR)/usb_pwr.c
$(USBCDCDIR)/hw_config.c