RT-AICHIP-sample
usbTransmission.c
[詳解]
1 /* ------------------------------------------------------------ *
2 File usbTransmission.c
3 
4 USBでの通信用関数群
5 * ------------------------------------------------------------ */
6 #include "type.h"
7 #include "LPC13xx.h"
8 #include "usbTransmission.h"
9 
10 //USB,CDC関連
11 #include "usb.h"
12 #include "usbcfg.h"
13 #include "usbhw.h"
14 #include "usbcore.h"
15 #include "cdc.h"
16 #include "cdcuser.h"
17 
18 //時間待ちタイマー
19 #include "SystemTickTimer.h"
20 #include "debug.h"
21 volatile static uint8_t flag_usb_config = 0; //USBの接続確認用フラグ 1:USB接続は確立済み 0:USB接続は未確立
22 
23 
24 /*----------------------------------------------------------------------------
25  Input void
26  Output void
27 
28  USBからデータを送る
29  *---------------------------------------------------------------------------*/
31 {
32  if (dat.num!=0 && CDC_DepInEmpty)
33  { // 1 is empty so if empty
34  CDC_DepInEmpty = 0;
35  USB_WriteEP (CDC_DEP_IN, (unsigned char* )(&dat.d[0]), dat.num);
36  }
37 }
38 /*----------------------------------------------------------------------------
39  Input void
40  Output void
41 
42  VCOM_SendData()を呼んだ直後に呼ぶこと
43  *---------------------------------------------------------------------------*/
44 void VCOM_CheckState (void)
45 {
46  unsigned short temp;
47  volatile static unsigned short serialState;
48 
49  temp = CDC_GetSerialState();
50  if (serialState != temp)
51  {
52  serialState = temp;
53  CDC_NotificationIn(); // send SERIAL_STATE notification
54  }
55 }
56 /*----------------------------------------------------------------------------
57  Input void
58  Output 0:USBの接続を試みたがタイムアウト 1:USBの接続が確立
59 
60  USBのコンフィギュレーションが完了したら1を返す
61  usbTransmisson.h内のUSB_TIMEOUTでタイムアウト時間を設定
62  USBのコンフィギュレーションがUSB_TIMEOUTmsec以内終わらなければ
63  0を返す.
64  *---------------------------------------------------------------------------*/
66 {
67  //PIO0_3ピンの状態 H:USBコネクタが接続されている L:USBコネクタが未接続
68  //USBコネクタが繋がれている場合のみUSB接続を試みる
69  if( ((LPC_GPIO0->DATA & 0x8)>>3))
70  {
71  USB_Connect(1);
72  while (!USB_Configuration);
73  flag_usb_config = 1;
74  return 1;
75  }
76  else
77  {
78  //USBコネクタが繋がっていないのでPIO0_6ピンをHIGHにする
79  LPC_GPIO0->DATA |= 0x0040;
80  flag_usb_config = 0;
81  return 0;
82  }
83 }
84 
85 /*----------------------------------------------------------------------------
86  Input void
87  Output 0:USBの接続が未確立 1:USBの接続が確立
88 
89   USBの接続が確立しているかを返す
90  *---------------------------------------------------------------------------*/
92 {
93  return flag_usb_config;
94 }
95 
96 
97 /******************************************************************************
98 ** End Of File
99 ******************************************************************************/
unsigned short CDC_DepInEmpty
Definition: cdcuser.c:36
uint8_t isUSBConfig(void)
void CDC_NotificationIn(void)
Definition: cdcuser.c:346
unsigned char uint8_t
Definition: type.h:27
void VCOM_SendData(GETDAT_T dat)
unsigned short CDC_GetSerialState(void)
Definition: cdcuser.c:325
void USB_Connect(uint32_t con)
Definition: usbhw.c:187
void VCOM_CheckState(void)
uint8_t d[100]
uint8_t tryUSBConnect(void)
uint32_t USB_WriteEP(uint32_t EPNum, uint8_t *pData, uint32_t cnt)
Definition: usbhw.c:428
#define CDC_DEP_IN
Definition: cdcuser.h:29
uint8_t USB_Configuration
Definition: usbcore.c:64